{
    "contractName": "Quasar",
    "abi": [
      {
        "constant": true,
        "inputs": [],
        "name": "unclaimedBonds",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
      },
      {
        "constant": false,
        "inputs": [
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "amount",
            "type": "uint256"
          }
        ],
        "name": "repayOwedToken",
        "outputs": [],
        "payable": true,
        "stateMutability": "payable",
        "type": "function"
      },
      {
        "constant": true,
        "inputs": [],
        "name": "quasarOwner",
        "outputs": [
          {
            "internalType": "address",
            "name": "",
            "type": "address"
          }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
      },
      {
        "constant": true,
        "inputs": [],
        "name": "TICKET_VALIDITY_PERIOD",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
      },
      {
        "constant": true,
        "inputs": [],
        "name": "plasmaFramework",
        "outputs": [
          {
            "internalType": "contract PlasmaFramework",
            "name": "",
            "type": "address"
          }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
      },
      {
        "constant": true,
        "inputs": [
          {
            "internalType": "address",
            "name": "",
            "type": "address"
          }
        ],
        "name": "tokenData",
        "outputs": [
          {
            "internalType": "address",
            "name": "qTokenAddress",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "exchangeRate",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "owedAmount",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "poolSupply",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "quasarFee",
            "type": "uint256"
          }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
      },
      {
        "constant": true,
        "inputs": [],
        "name": "IFE_CLAIM_MARGIN",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
      },
      {
        "constant": true,
        "inputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "name": "ticketData",
        "outputs": [
          {
            "internalType": "address payable",
            "name": "outputOwner",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "validityTimestamp",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "outputValue",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "reservedAmount",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "bondValue",
            "type": "uint256"
          },
          {
            "internalType": "bytes",
            "name": "rlpOutputCreationTx",
            "type": "bytes"
          },
          {
            "internalType": "bool",
            "name": "isClaimed",
            "type": "bool"
          }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
      },
      {
        "constant": true,
        "inputs": [],
        "name": "waitingPeriod",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
      },
      {
        "constant": false,
        "inputs": [
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "amount",
            "type": "uint256"
          }
        ],
        "name": "addTokenCapacity",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "constant": true,
        "inputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "name": "ifeClaimData",
        "outputs": [
          {
            "internalType": "bytes",
            "name": "rlpClaimTx",
            "type": "bytes"
          },
          {
            "internalType": "uint256",
            "name": "finalizationTimestamp",
            "type": "uint256"
          },
          {
            "internalType": "bool",
            "name": "isValid",
            "type": "bool"
          }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
      },
      {
        "constant": true,
        "inputs": [],
        "name": "quasarMaintainer",
        "outputs": [
          {
            "internalType": "address",
            "name": "",
            "type": "address"
          }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
      },
      {
        "constant": true,
        "inputs": [],
        "name": "spendingConditionRegistry",
        "outputs": [
          {
            "internalType": "contract SpendingConditionRegistry",
            "name": "",
            "type": "address"
          }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
      },
      {
        "constant": false,
        "inputs": [],
        "name": "addEthCapacity",
        "outputs": [],
        "payable": true,
        "stateMutability": "payable",
        "type": "function"
      },
      {
        "constant": false,
        "inputs": [
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "qTokenContract",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "quasarFee",
            "type": "uint256"
          }
        ],
        "name": "registerQToken",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "constant": true,
        "inputs": [
          {
            "internalType": "address",
            "name": "",
            "type": "address"
          }
        ],
        "name": "tokenUsableCapacity",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
      },
      {
        "constant": true,
        "inputs": [],
        "name": "safeBlockMargin",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
      },
      {
        "constant": true,
        "inputs": [],
        "name": "isPaused",
        "outputs": [
          {
            "internalType": "bool",
            "name": "",
            "type": "bool"
          }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
      },
      {
        "constant": false,
        "inputs": [
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "amount",
            "type": "uint256"
          }
        ],
        "name": "withdrawFunds",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "constant": true,
        "inputs": [],
        "name": "bondValue",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
      },
      {
        "constant": true,
        "inputs": [],
        "name": "paymentExitGame",
        "outputs": [
          {
            "internalType": "contract PaymentExitGame",
            "name": "",
            "type": "address"
          }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
      },
      {
        "constant": true,
        "inputs": [],
        "name": "IFE_CLAIM_WAITING_PERIOD",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "plasmaFrameworkContract",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "spendingConditionRegistryContract",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "_quasarOwner",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "_safeBlockMargin",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "_waitingPeriod",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "_bondValue",
            "type": "uint256"
          }
        ],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "constructor"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": false,
            "internalType": "uint256",
            "name": "utxoPos",
            "type": "uint256"
          }
        ],
        "name": "NewTicketObtained",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": false,
            "internalType": "uint256",
            "name": "utxoPos",
            "type": "uint256"
          },
          {
            "indexed": false,
            "internalType": "uint160",
            "name": "exitId",
            "type": "uint160"
          }
        ],
        "name": "IFEClaimSubmitted",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": false,
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "indexed": false,
            "internalType": "uint256",
            "name": "balance",
            "type": "uint256"
          }
        ],
        "name": "QuasarTotalCapacityUpdated",
        "type": "event"
      },
      {
        "constant": true,
        "inputs": [],
        "name": "getLatestSafeBlock",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
      },
      {
        "constant": false,
        "inputs": [
          {
            "internalType": "uint256",
            "name": "margin",
            "type": "uint256"
          }
        ],
        "name": "setSafeBlockMargin",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "constant": false,
        "inputs": [
          {
            "internalType": "uint256",
            "name": "utxoPos",
            "type": "uint256"
          }
        ],
        "name": "flushExpiredTicket",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "constant": false,
        "inputs": [],
        "name": "pauseQuasar",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "constant": false,
        "inputs": [],
        "name": "resumeQuasar",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "constant": false,
        "inputs": [],
        "name": "withdrawUnclaimedBonds",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "constant": false,
        "inputs": [
          {
            "internalType": "uint256",
            "name": "utxoPos",
            "type": "uint256"
          },
          {
            "internalType": "bytes",
            "name": "rlpOutputCreationTx",
            "type": "bytes"
          },
          {
            "internalType": "bytes",
            "name": "outputCreationTxInclusionProof",
            "type": "bytes"
          }
        ],
        "name": "obtainTicket",
        "outputs": [],
        "payable": true,
        "stateMutability": "payable",
        "type": "function"
      },
      {
        "constant": false,
        "inputs": [
          {
            "internalType": "uint256",
            "name": "utxoPos",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "utxoPosQuasarOwner",
            "type": "uint256"
          },
          {
            "internalType": "bytes",
            "name": "rlpTxToQuasarOwner",
            "type": "bytes"
          },
          {
            "internalType": "bytes",
            "name": "txToQuasarOwnerInclusionProof",
            "type": "bytes"
          }
        ],
        "name": "claim",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "constant": false,
        "inputs": [
          {
            "internalType": "uint256",
            "name": "utxoPos",
            "type": "uint256"
          },
          {
            "internalType": "bytes",
            "name": "inFlightClaimTx",
            "type": "bytes"
          }
        ],
        "name": "ifeClaim",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "constant": false,
        "inputs": [
          {
            "internalType": "uint256",
            "name": "utxoPos",
            "type": "uint256"
          },
          {
            "internalType": "bytes",
            "name": "rlpChallengeTx",
            "type": "bytes"
          },
          {
            "internalType": "uint16",
            "name": "challengeTxInputIndex",
            "type": "uint16"
          },
          {
            "internalType": "bytes",
            "name": "challengeTxWitness",
            "type": "bytes"
          },
          {
            "internalType": "uint16",
            "name": "otherInputIndex",
            "type": "uint16"
          },
          {
            "internalType": "bytes",
            "name": "otherInputCreationTx",
            "type": "bytes"
          },
          {
            "internalType": "bytes32",
            "name": "senderData",
            "type": "bytes32"
          }
        ],
        "name": "challengeIfeClaim",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "constant": false,
        "inputs": [
          {
            "internalType": "uint256",
            "name": "utxoPos",
            "type": "uint256"
          }
        ],
        "name": "processIfeClaim",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
      }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.5.11+commit.c082d0b4\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"unclaimedBonds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLatestSafeBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayOwedToken\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"quasarOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"TICKET_VALIDITY_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"plasmaFramework\",\"outputs\":[{\"internalType\":\"contract PlasmaFramework\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"utxoPos\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"inFlightClaimTx\",\"type\":\"bytes\"}],\"name\":\"ifeClaim\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenData\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"qTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"poolSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quasarFee\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"utxoPos\",\"type\":\"uint256\"}],\"name\":\"flushExpiredTicket\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"IFE_CLAIM_MARGIN\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ticketData\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"outputOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"validityTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reservedAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bondValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"rlpOutputCreationTx\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isClaimed\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"waitingPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"utxoPos\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"rlpChallengeTx\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"challengeTxInputIndex\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"challengeTxWitness\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"otherInputIndex\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"otherInputCreationTx\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"senderData\",\"type\":\"bytes32\"}],\"name\":\"challengeIfeClaim\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"addTokenCapacity\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ifeClaimData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"rlpClaimTx\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"finalizationTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isValid\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"utxoPos\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"rlpOutputCreationTx\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"outputCreationTxInclusionProof\",\"type\":\"bytes\"}],\"name\":\"obtainTicket\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"quasarMaintainer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"utxoPos\",\"type\":\"uint256\"}],\"name\":\"processIfeClaim\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"utxoPos\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"utxoPosQuasarOwner\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"rlpTxToQuasarOwner\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"txToQuasarOwnerInclusionProof\",\"type\":\"bytes\"}],\"name\":\"claim\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"spendingConditionRegistry\",\"outputs\":[{\"internalType\":\"contract SpendingConditionRegistry\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"addEthCapacity\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"margin\",\"type\":\"uint256\"}],\"name\":\"setSafeBlockMargin\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"qTokenContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"quasarFee\",\"type\":\"uint256\"}],\"name\":\"registerQToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenUsableCapacity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pauseQuasar\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"safeBlockMargin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"bondValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"paymentExitGame\",\"outputs\":[{\"internalType\":\"contract PaymentExitGame\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"resumeQuasar\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"withdrawUnclaimedBonds\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"IFE_CLAIM_WAITING_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"plasmaFrameworkContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spendingConditionRegistryContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_quasarOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_safeBlockMargin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_waitingPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bondValue\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"utxoPos\",\"type\":\"uint256\"}],\"name\":\"NewTicketObtained\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"utxoPos\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"exitId\",\"type\":\"uint160\"}],\"name\":\"IFEClaimSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"name\":\"QuasarTotalCapacityUpdated\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"addEthCapacity()\":{\"details\":\"Add Eth Liquid funds to the quasar\"},\"addTokenCapacity(address,uint256)\":{\"details\":\"Add ERC20 Liquid funds to the quasar\",\"params\":{\"amount\":\"value to supply\",\"token\":\"the token\"}},\"challengeIfeClaim(uint256,bytes,uint16,bytes,uint16,bytes,bytes32)\":{\"details\":\"Challenge an IFE claim\",\"params\":{\"challengeTxInputIndex\":\"index pos of the same utxo in the challenge transaction\",\"challengeTxWitness\":\"Witness for challenging transaction\",\"otherInputCreationTx\":\"(optional) Transaction that created this shared input\",\"otherInputIndex\":\"(optional) index pos of another input from the claimTx that is spent\",\"rlpChallengeTx\":\"RLP-encoded challenge transaction\",\"senderData\":\"A keccak256 hash of the sender's address\",\"utxoPos\":\"pos of the output, which is the ticket identifier\"}},\"claim(uint256,uint256,bytes,bytes)\":{\"details\":\"Submit claim after spending the output to the quasar owner\",\"params\":{\"rlpTxToQuasarOwner\":\"RLP-encoded transaction that spends the output to quasar owner\",\"txToQuasarOwnerInclusionProof\":\"Transaction Inclusion proof\",\"utxoPos\":\"pos of the output, which is the ticket identifier\",\"utxoPosQuasarOwner\":\"pos of the quasar owner's output\"}},\"constructor\":{\"details\":\"Constructor, takes params to set up quasar contract\",\"params\":{\"_bondValue\":\"bond to obtain tickets\",\"_quasarOwner\":\"Receiver address on Plasma\",\"_safeBlockMargin\":\"The Quasar will not accept exits for outputs younger than the current plasma block minus the safe block margin \",\"_waitingPeriod\":\"Waiting period from submission to processing claim\",\"plasmaFrameworkContract\":\"Plasma Framework contract address\"}},\"flushExpiredTicket(uint256)\":{\"details\":\"Flush an expired ticket to free up reserved funds\",\"params\":{\"utxoPos\":\"pos of the output, which is the ticket identifier\"}},\"getLatestSafeBlock()\":{\"return\":\"The latest safe block number\"},\"ifeClaim(uint256,bytes)\":{\"details\":\"Submit an IFE claim for claims without inclusion proof\",\"params\":{\"inFlightClaimTx\":\"in-flight tx that spends the output to quasar owner\",\"utxoPos\":\"pos of the output, which is the ticket identifier\"}},\"obtainTicket(uint256,bytes,bytes)\":{\"details\":\"Obtain a ticket from the Quasar\",\"params\":{\"outputCreationTxInclusionProof\":\"Transaction inclusion proof\",\"rlpOutputCreationTx\":\"RLP-encoded transaction that created the output\",\"utxoPos\":\"Output that will be spent to the quasar later, is the ticket identifier\"}},\"pauseQuasar()\":{\"details\":\"Pause contract in a byzantine state\"},\"processIfeClaim(uint256)\":{\"details\":\"Process the IFE claim to get liquid funds\",\"params\":{\"utxoPos\":\"pos of the output, which is the ticket identifier\"}},\"registerQToken(address,address,uint256)\":{\"details\":\"Register a token to be allowed, deploy qToken first\",\"params\":{\"qTokenContract\":\"the address of the qToken contract\",\"quasarFee\":\"amount (in token's denomination) to be used as a fee\",\"token\":\"the token\"}},\"repayOwedToken(address,uint256)\":{\"details\":\"Repay owed funds to the pool\",\"params\":{\"amount\":\"amount to repay\",\"token\":\"the token\"}},\"resumeQuasar()\":{\"details\":\"Unpause contract and allow tickets\"},\"setSafeBlockMargin(uint256)\":{\"details\":\"Set the safe block margin.\",\"params\":{\"margin\":\"the new safe block margin\"}},\"withdrawFunds(address,uint256)\":{\"details\":\"Withdraw funds from the contract\",\"params\":{\"amount\":\"amount (in number of qTokens) to withdraw\",\"token\":\"the token\"}},\"withdrawUnclaimedBonds()\":{\"details\":\"Withdraw Unclaimed bonds from the contract\"}},\"title\":\"Quasar Contract Implementation Doc - https://github.com/omgnetwork/research-workshop/blob/master/Incognito_fast_withdrawals.md\"},\"userdoc\":{\"methods\":{\"addEthCapacity()\":{\"notice\":\"Verify QToken contract before supplying\"},\"addTokenCapacity(address,uint256)\":{\"notice\":\"Verify QToken contract before supplying\"},\"challengeIfeClaim(uint256,bytes,uint16,bytes,uint16,bytes,bytes32)\":{\"notice\":\"A challenge is required if any of the claimTx's inputs are double spent\"},\"flushExpiredTicket(uint256)\":{\"notice\":\"Only an unclaimed ticket can be flushed, bond amount is added to unclaimedBonds\"},\"obtainTicket(uint256,bytes,bytes)\":{\"notice\":\"Ticket is valid for four hours, pay bond here for obtaining ticket\"},\"registerQToken(address,address,uint256)\":{\"notice\":\"Higher decimal for erc20 preffered\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/poc/fast_exits/Quasar.sol\":\"Quasar\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/poc/fast_exits/Quasar.sol\":{\"keccak256\":\"0x77a693714386b9c3ef08ca401903bb5128e0d962ef8da26591b0740fd9f14f72\",\"urls\":[\"bzz-raw://e08d16f35dd074f4d24f8ec099c6c313ad16b7831441d2f0cd230a0668607ff4\",\"dweb:/ipfs/QmdhuJLizPvKGT4GoRTMdqP8wrg5dV8Cf3ExR4wdBbZbAb\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/poc/fast_exits/QuasarPool.sol\":{\"keccak256\":\"0x39b3a1a26cf7402d37d1297a188b6d2d6cb554058ddd1f74a6389e6caf59f7a0\",\"urls\":[\"bzz-raw://2d6fcf8cbcfd80d51b10dff2184707dd3a50c7cf8fbac2fe5f09dfa18a6f24ab\",\"dweb:/ipfs/QmYNNkRDD8WtvRKimBbQM99fjtaGwDeigasjy6cm54zogk\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/poc/fast_exits/interfaces/IQToken.sol\":{\"keccak256\":\"0x7b795043756f7d20b360eda5b6e076f5779ad14eea629608389726e870b29d24\",\"urls\":[\"bzz-raw://f43b19468588173d746130ead9d343007eda6a94600da00c9f06c6bde8c21ee5\",\"dweb:/ipfs/QmTwz3uWUmVLqNpPHBmkJZKZ3VU7nJ4k1vqfm5t9Nqi1a9\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/poc/fast_exits/utils/Exponential.sol\":{\"keccak256\":\"0x6b3c13c557c8ee2c9b8b60689a008dc82fd1764ace0677a43c7abc38e010d793\",\"urls\":[\"bzz-raw://7a37d55025f8bc4a0343e3a98bfa3d9acf4fa1dad8a61d02717e65f6c433e262\",\"dweb:/ipfs/QmX9Zwjxv6GTuVSrNJfSDZVRPea2MSv8UGxyoNiSnFKEFT\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/interfaces/ISpendingCondition.sol\":{\"keccak256\":\"0xb8b546d44dc9fd210e4f3b2d5adbad81a2c0f1d39ac6646ecb1d90a3f8204473\",\"urls\":[\"bzz-raw://a6f5211cd589f7d9d70ad0f6e2ccd62bf2dcfe6883b91318b2169be107047ae1\",\"dweb:/ipfs/QmdGFznAejCmEdELxR3Rb66vLuzo7NjZs7jcwFfu2CKu2V\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/interfaces/IStateTransitionVerifier.sol\":{\"keccak256\":\"0xf38736d4921d3b8a29c5e95438ba4b70125ef61733820af30d2c27c5198bdbb4\",\"urls\":[\"bzz-raw://4d55cff362b0df5bd11685359061b3a28b915d3f0e0e36eb20d7a32adb8afe67\",\"dweb:/ipfs/QmP4Y51MzAeZT3dymbKrqZDJisdEaCK75ghLxS9MfVbJX8\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/payment/PaymentExitDataModel.sol\":{\"keccak256\":\"0xd4269d4c4a2cee7e70affd8aac5d413ef7e3171baad504c9f9554c5f87b9ce3b\",\"urls\":[\"bzz-raw://c4ef525a4c6be0eb34c86ba87aff011461cf5552d981a93207122850532641fb\",\"dweb:/ipfs/QmYcxEMctRHeu1e94m6yF1RFbm3faTjFWKtJgb1xpeVh3V\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/payment/PaymentExitGame.sol\":{\"keccak256\":\"0x92f659baff06f53e06a2018611f3389eff52f90f82069129e67a078bd537284e\",\"urls\":[\"bzz-raw://7f71ef17e07b4ca28c8b144aa990072346989dd4f0cc4c85ff44fa11ae9ae925\",\"dweb:/ipfs/QmagsE49jnfUhcjZV7qVkSXkDumn5cgv8rpGaz5vevEigj\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/payment/PaymentExitGameArgs.sol\":{\"keccak256\":\"0x41ba4f61cb6f94f17b4dc23141e84509b77828321fb649155b4a6d59086b6cfc\",\"urls\":[\"bzz-raw://31ac6461e133455974644253db2da44079f925186f6279e179334fb74f0898e7\",\"dweb:/ipfs/QmaUamkHyFG34MEqiDBZWrgVQkW2c1T6DCSerWWDJ76c8q\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/payment/PaymentInFlightExitModelUtils.sol\":{\"keccak256\":\"0x125db4317e14f203a9519d76c7190c773df8d87c305fba75cb7ce7b168a453f2\",\"urls\":[\"bzz-raw://32c6f2bf83ff3355a4b3cd34f8339abcc1f6b8a4f8ecc565c8eed3e87e2603ce\",\"dweb:/ipfs/QmS8LN4kfiepg1UgoxuTgiuvgMky6Rp1MBESFdKNbq18cD\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/payment/controllers/PaymentChallengeIFEInputSpent.sol\":{\"keccak256\":\"0xc99c1f3f7070663f4efa9864ec159dac2746b381b602ec9eac797c1c73f479ea\",\"urls\":[\"bzz-raw://446802313d12776ecc376bd9c698077475f7b0a04e2f3780f3aeed11e6480ef4\",\"dweb:/ipfs/QmQuPrh4dvtQGdQgecV7mzYqvJu3xZAJFuSPqgKW7zMTTQ\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/payment/controllers/PaymentChallengeIFENotCanonical.sol\":{\"keccak256\":\"0x96bab5dccc7d880e492b90cd85e96439db8241110e857144ee9c303e37abb2e6\",\"urls\":[\"bzz-raw://a6a2128d1d2de9bb6fd9a66118f2dccb366deec98200de044a71e2467f668102\",\"dweb:/ipfs/QmcbReoozyNLHYSJweRXiYdVcpDaTwa37fjqbSKRWwgtur\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/payment/controllers/PaymentChallengeIFEOutputSpent.sol\":{\"keccak256\":\"0x28aed52bfc7e6569d67fed854b5e38a6834595dc2b299278dafa130d2cf68848\",\"urls\":[\"bzz-raw://1adcbf48b9878b9bb1002b4977fa473cde7a9b04b61ba033bfded5df762fc49b\",\"dweb:/ipfs/QmRpi49hZbc5LiVnxbJ5aqSPwhjHxyf2ocbzFSsc3gadmX\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/payment/controllers/PaymentChallengeStandardExit.sol\":{\"keccak256\":\"0x8053b8b6bab07c7a8277103d884e0572edf46fd8c6e6943f432c8faf969a64ca\",\"urls\":[\"bzz-raw://0e34785611549bb3529b20ea690d89d606b04a4b2f3f763be3fda30e21172adf\",\"dweb:/ipfs/QmNfcGNk33fNfchyFqUrrGxzwg1KKMj8XdLYnvmAPNbfBu\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/payment/controllers/PaymentDeleteInFlightExit.sol\":{\"keccak256\":\"0xf81268bc7d11715baf0ea94d9bb4d18f1228d142fa717079e75f343b36344d90\",\"urls\":[\"bzz-raw://916abd6edc260f70db4374e60e4ef37d5bf7cb5ce5837a843d64f9a795df39ea\",\"dweb:/ipfs/QmR8zE5bVTUMD1EUWRuL8ctk87Ya2uZdf6cki7stbqBvRc\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/payment/controllers/PaymentPiggybackInFlightExit.sol\":{\"keccak256\":\"0xa7e4d94574e718448e1d0332029578920086642d8db52703e96d51b5d6c7eff3\",\"urls\":[\"bzz-raw://f9a90f6d3ac91a28667cbddaf707d8e6572da5a1378fb57c770e9c1795c77d78\",\"dweb:/ipfs/QmSANmSQHGRdekHQU3f1jEesAEoqB5JgQvyQW9roQDthrM\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/payment/controllers/PaymentProcessInFlightExit.sol\":{\"keccak256\":\"0x3c56d8d242f4ac538a4e17ad8f3958c5b9cea75f495630ea26bdf4ab4027edcc\",\"urls\":[\"bzz-raw://0b35478cbb1afa174bc77664c9d8caf1034c60e50045d4c364479ed931d524a9\",\"dweb:/ipfs/QmeZ7D2UuKgd2CtDFvFCQ5iQC5dA1PTWmFmjT53NuZoxJh\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/payment/controllers/PaymentProcessStandardExit.sol\":{\"keccak256\":\"0x6385cce286b122e74aa127d117e5033a5fea082594f9187ad8f168c1c9f612c4\",\"urls\":[\"bzz-raw://457f8f29e52bc4c55ecbdd3afdaa7ccf4cf100183a75b738dd0ea94f6034e621\",\"dweb:/ipfs/QmZcdANzFzXGv5rnjjYXrSWHynLcBEw5ejKxNdGNyLCHyT\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/payment/controllers/PaymentStartInFlightExit.sol\":{\"keccak256\":\"0xeb1766ce3cf39061b9740f0bf8ef7d57495daee0c48954091f2b74dccde52db7\",\"urls\":[\"bzz-raw://aa70b67c68a156b6008ae817ee83d71ae92238374967f34c333bfdf52b07fac3\",\"dweb:/ipfs/QmP6mNjs5QLMqMztpeQeD9p5Bm1XkBZwFjQckRs5EoHQVc\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/payment/controllers/PaymentStartStandardExit.sol\":{\"keccak256\":\"0xa1c1eeeb05de009768e7021b39f2569ad856da72bfe9ab31a7de0c39d0585a27\",\"urls\":[\"bzz-raw://866589211d908b4424de6325d72d1167ad80d1914ae690d0a8b5f2be3485f8bd\",\"dweb:/ipfs/QmSMfcoiCJtDtbzgFkzgEwqnR2xSWEctgQC9Er32SbE3gN\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/payment/routers/PaymentInFlightExitRouter.sol\":{\"keccak256\":\"0x14d62e96c035925da504e8aa682a37da8959036535b9dbf6ba99ac8ba0bf165a\",\"urls\":[\"bzz-raw://b1e5ce01a234452be671c37b26e7e5e88bce824a00e79aca68674901dfb21fe7\",\"dweb:/ipfs/QmeoYJqKpktRyhHKEd1HsSfALM7qoms9g6mvUUFhheWHcz\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/payment/routers/PaymentInFlightExitRouterArgs.sol\":{\"keccak256\":\"0x02f6d1cb1b9ddb30014d03e3a5fa08843583043e40d58a95e566429d93c420eb\",\"urls\":[\"bzz-raw://3a442e9100076555d32b333fec5ec6953a235bb8c5b5a2b1397adda9b50aa829\",\"dweb:/ipfs/QmZRTgLiw9rzg2ZCBAW7jW8dNnQS94jWyoDhQaQHKAfWte\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/payment/routers/PaymentStandardExitRouter.sol\":{\"keccak256\":\"0x9c0f7caa802074f553d1a229c021dfdfd6903a65c8e358ecdbbabcedf9940bc2\",\"urls\":[\"bzz-raw://ac7521e969912fd317b1d4473fe0ea892ac86598a4e5042f385c142bc5b8d7f0\",\"dweb:/ipfs/QmdjRhvAQTEpD45TLCbvtRxhcMSVY43QpNojjeGiHAGbVn\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/payment/routers/PaymentStandardExitRouterArgs.sol\":{\"keccak256\":\"0xda44c711f16d2fb01fe8a0bd577b29e83860a81e92ab70d1fcea3708ee155c5c\",\"urls\":[\"bzz-raw://88e9e90a66830596d5dd24d1c0675fe272c1f5d0b0e4e6454f506410e28327d5\",\"dweb:/ipfs/QmaL7acWdk9zfSPdKWvVR1n4U1vBBkN6sBUCMSL3wU9s83\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/registries/SpendingConditionRegistry.sol\":{\"keccak256\":\"0x402d0e1850ccc0f8ef1d9645057346900a7e196e2546f5e6ba063a2afd324783\",\"urls\":[\"bzz-raw://32bfdfb3d47431c7c6d5b1726aa3c19adb3d668d28befcff8595768da387a739\",\"dweb:/ipfs/QmSaK99mby3HvMjcHWxtFcVUVU3RV6zGWLq5q4LwQwjvF1\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/utils/BondSize.sol\":{\"keccak256\":\"0x01a6c7f4282878431d36015eb45bb297e22272097209adbdb0ca093aa4db165d\",\"urls\":[\"bzz-raw://de55716cbd9621997d4b1a4f617fb3eb9886bea77c584d797c40f8aafa49f2e1\",\"dweb:/ipfs/QmYd8daNQ1S36dUucrbjum1V6ASiJb1fRPVKt6GWxNPe7m\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/utils/ExitId.sol\":{\"keccak256\":\"0xcb1b4231fbc55c94e18440d82ce80b9a81b119433f994cee746514a5b32baf62\",\"urls\":[\"bzz-raw://e98a2fb11df53d87125908875e5fbdc7414b79d964163a0e74a5a5726828ed5c\",\"dweb:/ipfs/QmUqdgcUdm79h7zzsWQsPBP3NMRUeSXRa8qeuiopDtBWRS\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/utils/ExitableTimestamp.sol\":{\"keccak256\":\"0xa260a221f3cbfc8c38ffec23a873b9f8e95fbb64fefc976f0d0b3ea2a3c04053\",\"urls\":[\"bzz-raw://9941590544c8d8f5008d202ad6feecca0ba684e7b029d48a1a8feb59fd10fd82\",\"dweb:/ipfs/QmVnR9YfhhGb5aJt9M6AmVP75RrTirDLQxxQftQoCdzgvJ\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/utils/MoreVpFinalization.sol\":{\"keccak256\":\"0xf1975686c18d21ea0401daad5ac9e983f1bb683228df150250ddbb5b89086565\",\"urls\":[\"bzz-raw://531490ead9bdd8403e93c9e1d903b712e9b2b4015e71367e3cdb54c8d7bd6849\",\"dweb:/ipfs/QmZtTffxLdWMqeLmvyPrF3DLXfn3cX9qkC4hUAdKze9D6b\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/utils/OutputId.sol\":{\"keccak256\":\"0xbf5d4a0068f90a05d4add0ba884ea6b44df879e4cde4622be973f1f4e8e0ad74\",\"urls\":[\"bzz-raw://5cc04ede415a3830f89c5398ed8a5206fb22776499bafb0c11be5988177557e9\",\"dweb:/ipfs/QmaUdRb3jRPmzpWj5hTu72nNYkjukE7ppgzj4wx9K92fQ2\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/framework/BlockController.sol\":{\"keccak256\":\"0xac302eceee96e5a83b7fdfb43d23389f516ff4b7322e5e094d7ad0b3be177c0b\",\"urls\":[\"bzz-raw://cf36aec949574838af497c6448000226d20aea4d0a787c746dd10775166df8a3\",\"dweb:/ipfs/QmQvD1DZfeidC1xiC3fnzTbCcgTTG9MuN6NNwKn965bVvC\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/framework/ExitGameController.sol\":{\"keccak256\":\"0x4afed31e54ae47674ccf2ca4c9a6fe57e3e3f6519bf3b3fc997eed708405c4a0\",\"urls\":[\"bzz-raw://dc82f473933be3817ba0bc07da0dc9fb488dc1f34195d132e6ba274d190bdcee\",\"dweb:/ipfs/QmdADCXHRKRjWqLMcRmtSpyzz9bti9cod7Poa8M7TW6QKJ\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/framework/PlasmaFramework.sol\":{\"keccak256\":\"0x4b017fa7cae50fcf79803255fe0ffe8183e8f3934d9ac46a48235986f4714179\",\"urls\":[\"bzz-raw://30974a631b8c13aedea212390fcc1cf75472dc3f49a9c52eb33fc07c04b545e1\",\"dweb:/ipfs/QmT15Bw5NtE7b1RvVcmRXcGkEAL9BpbbgKwMtJBphXTbLd\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/framework/Protocol.sol\":{\"keccak256\":\"0x81e37c136c340d917e370c58894761aee710bbef727414685490e405bc0f18e8\",\"urls\":[\"bzz-raw://7a54192b587531dd1adc33202479142afdf116385bab22daa153b8d4439d7333\",\"dweb:/ipfs/QmT37F3SCsWLf93okFrx1LUUr6c2zXCj28u2sjXXFBef2X\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/framework/interfaces/IExitProcessor.sol\":{\"keccak256\":\"0x93c31f7c8ff69c80bd30f9296a7b2059affedadefc0c2cfb5c992eb1f1885fa2\",\"urls\":[\"bzz-raw://d56cb65fd67b07cec3bb17f48c064df4ea892780bf21d87d717e6581feb92ffd\",\"dweb:/ipfs/QmZZGPdSSN81c2P1CBnrCQD9mRWntPUPUjm4vCgWsBqS14\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/framework/models/BlockModel.sol\":{\"keccak256\":\"0x7d26be621a43e2b8855f6c71f91c886d3b48ed809f421a1eee9c165c803d0cf7\",\"urls\":[\"bzz-raw://850b2acb61d96e9eb09d8bf24617ecf47aa948d6754b2d09d0e0d2b949193a2d\",\"dweb:/ipfs/QmW8yoi4jZxHAJf4bNjtt3nGckaWUEX92ZbgrKpoRHJGRM\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/framework/registries/ExitGameRegistry.sol\":{\"keccak256\":\"0x4695a609c60b6be59bbc49ed6d3b14725bcc2efcecd083f8cabbcd3ddb399e68\",\"urls\":[\"bzz-raw://d31ca9188c426bbb2e8cf0fca61a9d451497408ddb4708cfc78d543b75fcb274\",\"dweb:/ipfs/QmawYeD9CCd5chGoB62zVKpk5Q9zJxhUUGJu7hUaCF5JXM\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/framework/registries/VaultRegistry.sol\":{\"keccak256\":\"0x7786b4b8b043026655fa872f11ec747ef600100cc73da38369e1e2fd5047c95a\",\"urls\":[\"bzz-raw://b957490e53281e516290455b78722627f5536e0bd6b9bc17777f3f7a93ed9b14\",\"dweb:/ipfs/QmbUEwWfkTCSPPNEjAJUEXwgCCY9cBPgAKJagRbYQ3PSLE\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/framework/utils/ExitPriority.sol\":{\"keccak256\":\"0x18a6c6b1f8c072e693d855bc8991ea4c51951f9058fd116253a1b8ccb6fc1647\",\"urls\":[\"bzz-raw://a22420b5f647d6108be8a3de23b5dd561f65b12dd804ead7edf5384407a506f3\",\"dweb:/ipfs/QmTd986YDqtwQ1eXqUP4esUBKxGthieXJWkQTsMJzewXgA\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/framework/utils/PriorityQueue.sol\":{\"keccak256\":\"0xf46de2038d5fbc06f1aba7f36e7e02ead27485044ccf25afc2b9ad84ea705991\",\"urls\":[\"bzz-raw://a23fd7ad08f351743c7599fa546a0b54586e7e319c00c3e9d41c3aa10546ec5d\",\"dweb:/ipfs/QmWH32SoQmhyy7CE8u8g412e1AosogVE3eEBjrAh9MABvb\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/framework/utils/Quarantine.sol\":{\"keccak256\":\"0x1b685ea3de626e3d8961d0e384a67c3e87752874784cc2e59777857d130f2390\",\"urls\":[\"bzz-raw://28c30354aa580476f230c4d8e151d34337b923caabc6bccfe560d75ef37d446e\",\"dweb:/ipfs/Qmf9nCYFBhHDyMgHmxX5pSkqLpqb2W3XffPopdkJTHmnAA\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/transactions/FungibleTokenOutputModel.sol\":{\"keccak256\":\"0xc3ba28ef422e5e69bf45fd19696f15154bc425a8ce203381634e53c7225cfb7a\",\"urls\":[\"bzz-raw://a8abad3a40e7324cac88861fa42eded4a4eb8ba63cebb78e2c515fb1fe522156\",\"dweb:/ipfs/QmeNackaS2epdnrZ9Y3KJgZFUT6QWd4fi7kDcmaEhQKmrd\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/transactions/GenericTransaction.sol\":{\"keccak256\":\"0xde90e8614329838d210c19607920c7332be57982790763884a7ff62511771871\",\"urls\":[\"bzz-raw://85887bc1789f94197c0476e9b3580aab2330f6988623883eaa857e1f5b82f0e5\",\"dweb:/ipfs/QmcNTkDNpibtRGmxWCpNj6n3HLpsAgmiKKQvDZSNJGT4Bg\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/transactions/PaymentTransactionModel.sol\":{\"keccak256\":\"0x24d5374cc8d463974a2dbebaa348f8f762c870e1bf9159920f78dbd3f9c5ab2c\",\"urls\":[\"bzz-raw://8d75bd75739f4df38e95bcc80a87a5f92dc3e66bcd31edbd1683fd528df67d03\",\"dweb:/ipfs/QmYFoc5hmFwPnU9Kdu4ZdEo9Qcvu565o1UoCMcbnbuHcJy\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/utils/Bits.sol\":{\"keccak256\":\"0x8634dbdd911b93b96ffc247db5063fade8f74f519130021b7e71e505135148d8\",\"urls\":[\"bzz-raw://f0dd95b5277522e5604bbf24a6a6955f2e628ca41e137cb8a8a08e6c7312deb8\",\"dweb:/ipfs/QmfW1kxWqjvz57RNGcv9NsY33aWxyVPKQtd3cV4FbiW3sS\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/utils/FailFastReentrancyGuard.sol\":{\"keccak256\":\"0xcbd6934ca4d8f5af83795e6475568d7cd12e822e4ae2c5724da352e245531de9\",\"urls\":[\"bzz-raw://0db25d5aa03db681f2f18ef9be8f858c451684ac0866ebe618ff4700aed54135\",\"dweb:/ipfs/QmXCgKMGq8qxVCUDAiVQeEXvM7AYbwYie8ce1kYCWpbVZg\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/utils/Merkle.sol\":{\"keccak256\":\"0xc9c85f7e0009969fc557bf1a91448451477f69883c7d597da44e5bb0b2ac9242\",\"urls\":[\"bzz-raw://a8362bcf5933531e5d67086413702449fcb986a54b628863af7096c0ee944d92\",\"dweb:/ipfs/QmdMtjvhgP9wUydTo23SqeqxPrbQ3EBtFv61tCifAHtqKJ\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/utils/OnlyFromAddress.sol\":{\"keccak256\":\"0x54d4cb74bf5c448bb383ff4ffce898473739a5ba015e439dae1c092c70df943f\",\"urls\":[\"bzz-raw://5c9efbe363534d6746573b9b0dda687d257272c3ce0123b6a45bc7eef55a40b4\",\"dweb:/ipfs/QmZPLF1bKdU6DAZZcxWfMudUwzeubLxsSk14x8hvUMj15X\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/utils/OnlyWithValue.sol\":{\"keccak256\":\"0x8861c80b27979fd6a3a6fe3d08b8706fd3c556d1c88376a7018b3fb3dea88478\",\"urls\":[\"bzz-raw://d12b78f0ff6494bf93f6e1700ed7f5b1b27a1c963c49b9fed5efab7f6c2224a7\",\"dweb:/ipfs/QmfBNE8v1FpqhQqtWtg8zLP5pbrk1f8TizE3EgEyhbgpot\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/utils/PosLib.sol\":{\"keccak256\":\"0xd47b38ef93cf913b6b7a3bf608dec2c084108d090cc02b222da3d8eb39819d5f\",\"urls\":[\"bzz-raw://c42d551c21adfa400d08108673b29e4bd1eec70aaa469287571071df3f8f0bc1\",\"dweb:/ipfs/Qmepq632azqUDHt5ypVwmkTfeQG8uP1HYw8x1H3Hdg9K6R\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/utils/RLPReader.sol\":{\"keccak256\":\"0x83a578c149e11e4c03d222bc2ae7226f8b448c308b6bf8167b6c53719b68f722\",\"urls\":[\"bzz-raw://792d3afbbc68be381e4981d2f62a5720033967544b5cb750052dc62d273f3587\",\"dweb:/ipfs/QmUemf7AhGu3SWu86NQ6YW2HcNAzQSoT5BpwGqqasFyzH5\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/utils/SafeEthTransfer.sol\":{\"keccak256\":\"0xe707370228eea8c9c613472dd4d44df94ba631892bc74077cf5af24097944aad\",\"urls\":[\"bzz-raw://803b2c876f40f8d8dbcbca8b6cde233d73a98c4d2384c90e259da1c169225de9\",\"dweb:/ipfs/QmZkb1kHBmFb4jGgZepfAJsiZM6beQJiS9x319QZxExiB4\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/vaults/Erc20Vault.sol\":{\"keccak256\":\"0x99455fccb574d1f38b9e60f67c34de83d25b8d424f4fea57230a31d2ccbe7b27\",\"urls\":[\"bzz-raw://c8675482faefd4d812c62bbefbafe7d0ead7283235d10be290141e018d4b9024\",\"dweb:/ipfs/QmaNCn1ViB8FV4sCfVgVoLnhqj9GvLUWMQMdFTPc8mZWab\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/vaults/EthVault.sol\":{\"keccak256\":\"0x97b047f61e71f24f0febf094358731d4a61e27219c43162776fff4c37d28948f\",\"urls\":[\"bzz-raw://4d8139071bb54c50fea28af039741b9621d7f92ffb689c74ecb105a315555f7e\",\"dweb:/ipfs/QmaHVjgpcqThQ4MtdnEKQ7HECJrRBRaLd24Exa3oKZj8T5\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/vaults/Vault.sol\":{\"keccak256\":\"0x2db04ba824e64bb121c7a3733654774198011c3b5a264a068c24146dc359444f\",\"urls\":[\"bzz-raw://c047c9e255606d272deccb90edf90ad3eb1bc65780726a91b16792e8e469f577\",\"dweb:/ipfs/QmP6rJfCpRdgbEDaYMr7wgHxM8PyBSk5KAdtVTbkSRXYyF\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/vaults/verifiers/IErc20DepositVerifier.sol\":{\"keccak256\":\"0xb9fdb4eb58e0fdb99331aa279586d9832c235bd4d814eecf522e80df0878e1fa\",\"urls\":[\"bzz-raw://579e40e92506f413c80b229af603a38073bd38ae85cfe0634046b4579b8a43f8\",\"dweb:/ipfs/QmZBnfJT52kV3QzdCoWf3ykbeCnb9E6syVuW1DvnwRjqXC\"]},\"/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/vaults/verifiers/IEthDepositVerifier.sol\":{\"keccak256\":\"0x32e47ecde587dae08d902c081bf9e871137aa5ef049354220cd0360d5deb8e47\",\"urls\":[\"bzz-raw://dfcc1f319dc9131d6a07ae9c867225c66be262e871939d82ab66fd630dd4395f\",\"dweb:/ipfs/Qmef9deSffr7LGBhqqjKSNfqEPNj267WrY2ysXWq9YgZUy\"]},\"openzeppelin-solidity/contracts/math/Math.sol\":{\"keccak256\":\"0x4b5aa451e4e8801478708f94b118a7821c0500d676255eaf89fc78c14856ce4e\",\"urls\":[\"bzz-raw://bed15b3f35ed05505efc8fb5cb01d06c52230fbcaadf4ed24a85b1ac2f15f33c\",\"dweb:/ipfs/QmS6tW81u8E4tvzVfVuqEuMCkdwAozQ6pKJPRBR4JEVmQp\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690\",\"urls\":[\"bzz-raw://d62d769b2219d5de39013093412623e624fa887f871826ea3bae6052ee893610\",\"dweb:/ipfs/QmV3yVktya1s617QmuzQR2CfuJgUi3dR2xEZY9ecmqZ2G1\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0xf79fb10e8235770eb4aea7249034076a3cc9f9119ad944fc48705bae9c9d20dc\",\"urls\":[\"bzz-raw://cd3429aa9a4878dcf6c73faa32c3722f4013d4be012ece543b246faa6b50f55c\",\"dweb:/ipfs/QmS55hgTvNEAKinus19m65CB4wcymN8EiUPFpRx5tYJ1i2\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x90e8c2521653bbb1768b05889c5760031e688d9cd361f167489b89215e201b95\",\"urls\":[\"bzz-raw://d0abb99bb8bfc2bc0a89902b8ed1dc0442ad08cc78cee64c291b3df6a27bcccc\",\"dweb:/ipfs/QmP5NaEwZthQeM2ESz4WTT3osrP7jhbvu7ocbttBi2JAw6\"]},\"openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0xf6f89424e17870561dc23c5933c55c5726b66a68d51ad2a2c00c569a5f02f507\",\"urls\":[\"bzz-raw://005657a7ffbf6d12726ac0167b55be965dc473d43f061b605f883a54cc00ab4f\",\"dweb:/ipfs/QmaBzyvDQyNnn6DXQYewEtN9Go85orikSnW9PwNWqUGPEX\"]},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"keccak256\":\"0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1\",\"urls\":[\"bzz-raw://75ae8d04454d1511a2ed986cc8585736f05c5c25280683b3d24712a9f414a4bf\",\"dweb:/ipfs/Qmb3kNCoBUZdah1AgBBD4zMk898j5Qw8ahT1w5cCMYp5Y3\"]}},\"version\":1}",
    "bytecode": "0x60806040523480156200001157600080fd5b506040516200625738038062006257833981016040819052620000349162000195565b600380546001600160a01b0319166001600160a01b0388811691909117918290556040517faf07976400000000000000000000000000000000000000000000000000000000815291169063af0797649062000095906001906004016200023a565b60206040518083038186803b158015620000ae57600080fd5b505afa158015620000c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620000e991908101906200016c565b600480546001600160a01b039283166001600160a01b03199182161790915560058054978316978216979097179096556006805495909116948616949094179093556000805490941633178455600791909155600855600955600a555062000291565b805162000159816200026c565b92915050565b8051620001598162000286565b6000602082840312156200017f57600080fd5b60006200018d84846200014c565b949350505050565b60008060008060008060c08789031215620001af57600080fd5b6000620001bd89896200014c565b9650506020620001d089828a016200014c565b9550506040620001e389828a016200014c565b9450506060620001f689828a016200015f565b93505060806200020989828a016200015f565b92505060a06200021c89828a016200015f565b9150509295509295509295565b62000234816200025f565b82525050565b6020810162000159828462000229565b60006001600160a01b03821662000159565b90565b600062000159826200025c565b62000277816200024a565b81146200028357600080fd5b50565b62000277816200025c565b615fb680620002a16000396000f3fe6080604052600436106101ee5760003560e01c8063417a97261161010d5780639829625c116100a0578063d2d5862c1161006f578063d2d5862c14610530578063d82a94ae14610545578063e8469a811461055a578063e87e91891461056f578063e9f05da314610584576101ee565b80639829625c146104c4578063a9776b37146104d9578063b187bd26146104ee578063c107532914610510576101ee565b80637cc8448e116100dc5780637cc8448e1461045c57806380ec46df146104645780639069f192146104845780639132ccb2146104a4576101ee565b8063417a9726146103f25780635a6d086f146104075780635f4a12d31461042757806371ff579414610447576101ee565b80632c303564116101855780633be457bf116101545780633be457bf146103705780633c2568a9146103905780633d960403146103b05780633f136c8f146103df576101ee565b80632c303564146102f257806335098e8f14610312578063394803fd146103275780633a2ef9df1461035b576101ee565b80631bdaccd8116101c15780631bdaccd81461026a57806320cc593f1461027f57806321cc9343146102a157806327e45c2c146102c1576101ee565b8063067a83eb146101f3578063084d0f801461021e5780630d4bf070146102335780631047b1e314610248575b600080fd5b3480156101ff57600080fd5b50610208610599565b6040516102159190615d7f565b60405180910390f35b34801561022a57600080fd5b5061020861059f565b610246610241366004613c51565b6106f1565b005b34801561025457600080fd5b5061025d6107a5565b6040516102159190615690565b34801561027657600080fd5b506102086107b4565b34801561028b57600080fd5b506102946107ba565b6040516102159190615871565b3480156102ad57600080fd5b506102466102bc366004613d67565b6107c9565b3480156102cd57600080fd5b506102e16102dc366004613be6565b610a23565b60405161021595949392919061577b565b3480156102fe57600080fd5b5061024661030d366004613d2b565b610a5d565b34801561031e57600080fd5b50610208610b5c565b34801561033357600080fd5b50610347610342366004613d2b565b610b62565b6040516102159897969594939291906156c7565b34801561036757600080fd5b50610208610c43565b34801561037c57600080fd5b5061024661038b366004613e1f565b610c49565b34801561039c57600080fd5b506102466103ab366004613c51565b6110ae565b3480156103bc57600080fd5b506103d06103cb366004613d2b565b6110d7565b60405161021593929190615844565b6102466103ed366004613dae565b611188565b3480156103fe57600080fd5b5061025d61154e565b34801561041357600080fd5b50610246610422366004613d2b565b61155d565b34801561043357600080fd5b50610246610442366004613f00565b611630565b34801561045357600080fd5b50610294611703565b610246611712565b34801561047057600080fd5b5061024661047f366004613d2b565b61171f565b34801561049057600080fd5b5061024661049f366004613c04565b61174e565b3480156104b057600080fd5b506102086104bf366004613be6565b611830565b3480156104d057600080fd5b50610246611842565b3480156104e557600080fd5b5061020861187b565b3480156104fa57600080fd5b50610503611881565b60405161021591906157d8565b34801561051c57600080fd5b5061024661052b366004613c51565b61188a565b34801561053c57600080fd5b50610208611b08565b34801561055157600080fd5b50610294611b0e565b34801561056657600080fd5b50610246611b1d565b34801561057b57600080fd5b50610246611b53565b34801561059057600080fd5b50610208611b93565b600a5481565b600080600360009054906101000a90046001600160a01b03166001600160a01b03166338a9e0bc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105f057600080fd5b505afa158015610604573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106289190810190613d49565b905060006106c282600360009054906101000a90046001600160a01b03166001600160a01b0316634ca8714f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561067e57600080fd5b505afa158015610692573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106b69190810190613d49565b9063ffffffff611b9a16565b90506106e96106dc83600754611bc790919063ffffffff16565b829063ffffffff611b9a16565b925050505b90565b6001600160a01b038216610706575034610721565b6107216001600160a01b03831633308463ffffffff611c0816565b6001600160a01b03821660009081526002602052604090205461074a908263ffffffff611c6916565b6001600160a01b038316600090815260026020818152604080842094909455600190529190200154610782908263ffffffff611b9a16565b6001600160a01b0390921660009081526001602052604090206002019190915550565b6006546001600160a01b031681565b61384081565b6003546001600160a01b031681565b6107d282611c8e565b6107dc8282611d33565b60006107e782611e3f565b6040805160018082528183019092529192506060919060208083019080388339019050509050818160008151811061081b57fe5b6001600160a01b0392831660209182029290920101526004805460405163cec9e1a760e01b8152606093919091169163cec9e1a79161085c918691016157c7565b60006040518083038186803b15801561087457600080fd5b505afa158015610888573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108b09190810190613c8b565b9050806000815181106108bf57fe5b6020026020010151602001516001600160401b0316600014156108fd5760405162461bcd60e51b81526004016108f490615baf565b60405180910390fd5b6109336170808260008151811061091057fe5b6020026020010151602001516001600160401b0316611c6990919063ffffffff16565b4211156109525760405162461bcd60e51b81526004016108f490615b0f565b6000858152600c6020908152604091829020600701805460ff19166001179055815160608101909252858252810161099342620a8c0063ffffffff611c6916565b815260016020918201526000878152600d8252604090208251805191926109bf92849290910190613706565b50602082015160018201556040918201516002909101805460ff1916911515919091179055517fb29649e775970df3b15b55fdec6ed94f70d03683cd54b8fb201b46a1765c3a2490610a149087908690615d8d565b60405180910390a15050505050565b6001602081905260009182526040909120805491810154600282015460038301546004909301546001600160a01b03909416939192909185565b6000818152600c60205260409020600181015460079091015460ff1615610a965760405162461bcd60e51b81526004016108f4906159cf565b8042118015610aa457508015155b610ac05760405162461bcd60e51b81526004016108f490615c6f565b6000828152600c6020908152604080832060038101805490859055600182018590556004909101546001600160a01b03168452600290925290912054610b0c908263ffffffff611c6916565b6000848152600c6020818152604080842060048101546001600160a01b03168552600283529084209490945591869052905260050154600a54610b549163ffffffff611c6916565b600a55505050565b61708081565b600c6020908152600091825260409182902080546001808301546002808501546003860154600487015460058801546006890180548c51601f6000199a831615610100029a909a01909116969096049788018b90048b0286018b01909b528685526001600160a01b039788169a95999398929791909116959094919392830182828015610c305780601f10610c0557610100808354040283529160200191610c30565b820191906000526020600020905b815481529060010190602001808311610c1357829003601f168201915b5050506007909301549192505060ff1688565b60085481565b33604051602001610c5a9190615605565b604051602081830303815290604052805190602001208114610c8e5760405162461bcd60e51b81526004016108f490615d5f565b6000878152600c602052604090206007015460ff168015610cc057506000878152600d602052604090206002015460ff165b610cdc5760405162461bcd60e51b81526004016108f490615b2f565b6000878152600d6020526040902060010154421115610d0d5760405162461bcd60e51b81526004016108f4906159df565b8580519060200120600d6000898152602001908152602001600020600001604051610d389190615679565b60405180910390201415610d5e5760405162461bcd60e51b81526004016108f49061590f565b600354610d74906001600160a01b031687611e65565b610d905760405162461bcd60e51b81526004016108f490615c5f565b8151610e44576000878152600c60209081526040918290206006018054835160026001831615610100026000190190921691909104601f8101849004840282018401909452838152610e3f938b93919291830182828015610e325780601f10610e0757610100808354040283529160200191610e32565b820191906000526020600020905b815481529060010190602001808311610e1557829003601f168201915b5050505050888888611f46565b610f1b565b610e4c613784565b6000888152600d602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452610eec9392830182828015610ee25780601f10610eb757610100808354040283529160200191610ee2565b820191906000526020600020905b815481529060010190602001808311610ec557829003601f168201915b50505050506120fa565b9050610f1981602001518561ffff1681518110610f0557fe5b602002602001015160001c84898989611f46565b505b6000878152600d60205260409020600201805460ff19169055610f3c6137b6565b6000888152600c60209081526040918290208251610100808201855282546001600160a01b03908116835260018085015484870152600280860154858901526003860154606086015260048601549092166080850152600585015460a08501526006850180548851928116159094026000190190931691909104601f81018690048602820186019096528581529194929360c0860193908301828280156110245780601f10610ff957610100808354040283529160200191611024565b820191906000526020600020905b81548152906001019060200180831161100757829003601f168201915b50505091835250506007919091015460ff161515602091820152606082015160808301516001600160a01b031660009081526002909252604090912054919250611074919063ffffffff611c6916565b60808201516001600160a01b031660009081526002602052604090205560a08101516110a49033906108fc612113565b5050505050505050565b6110c96001600160a01b03831633308463ffffffff611c0816565b6110d3828261213f565b5050565b600d6020908152600091825260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290929183919083018282801561116e5780601f106111435761010080835404028352916020019161116e565b820191906000526020600020905b81548152906001019060200180831161115157829003601f168201915b50505050600183015460029093015491929160ff16905083565b600b5460ff16156111ab5760405162461bcd60e51b81526004016108f490615c4f565b60095434146111cc5760405162461bcd60e51b81526004016108f49061596f565b6000838152600c602052604090206007015460ff16156111fe5760405162461bcd60e51b81526004016108f4906159cf565b6000838152600c60205260409020600101541561122d5760405162461bcd60e51b81526004016108f490615c9f565b61123561380f565b61123e846122de565b905061124861059f565b81516001600160401b031611156112715760405162461bcd60e51b81526004016108f490615d1f565b611279613784565b611282846120fa565b905061128c61382f565b61129a828460400151612371565b90506112a681336123c5565b6112c25760405162461bcd60e51b81526004016108f490615a7f565b6003546112e2906001600160a01b0316866112dc866123e9565b87612423565b6112fe5760405162461bcd60e51b81526004016108f490615b1f565b6040808201516001600160a01b03166000908152600160205220600401546060820151811061133f5760405162461bcd60e51b81526004016108f490615a0f565b6060820151600090611357908363ffffffff611b9a16565b6040808501516001600160a01b03166000908152600260205220549091508111156113945760405162461bcd60e51b81526004016108f49061593f565b6040808401516001600160a01b03166000908152600260205220546113bf908263ffffffff611b9a16565b6040808501516001600160a01b03166000908152600260209081529082902092909255805161010081019091523381529081016114044261384063ffffffff611c6916565b81526020018460600151815260200182815260200184604001516001600160a01b0316815260200134815260200188815260200160001515815250600c60008a815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a0820151816005015560c08201518160060190805190602001906114f0929190613706565b5060e091909101516007909101805460ff19169115159190911790556040517f46650edf382c45ad9fa9d4b1a0bc52c4ec0b137c7532841fc574716b1eaf4fa39061153c908a90615d7f565b60405180910390a15050505050505050565b6000546001600160a01b031681565b6000818152600d6020526040902060010154421161158d5760405162461bcd60e51b81526004016108f49061597f565b6000818152600d602052604090206002015460ff166115be5760405162461bcd60e51b81526004016108f490615bdf565b6000818152600d602090815260408083206002908101805460ff19169055600c90925290912060048101549101546115ff916001600160a01b0316906125cf565b6000818152600c60205260409020805460049091015461162d9183916001600160a01b039182169116612755565b50565b61163984611c8e565b6116438483611d33565b61164b61380f565b611654846122de565b600354909150611677906001600160a01b031684611671846123e9565b85612423565b6116935760405162461bcd60e51b81526004016108f490615b1f565b6000858152600c6020526040902060078101805460ff1916600117905560048101546002909101546116ce916001600160a01b0316906125cf565b6000858152600c6020526040902080546004909101546116fc9187916001600160a01b039182169116612755565b5050505050565b6005546001600160a01b031681565b61171d60003461213f565b565b6000546001600160a01b031633146117495760405162461bcd60e51b81526004016108f490615a5f565b600755565b6000546001600160a01b031633146117785760405162461bcd60e51b81526004016108f490615a5f565b6001600160a01b0383811660009081526001602052604090205416156117b05760405162461bcd60e51b81526004016108f490615c7f565b6040805160a0810182526001600160a01b03938416815266071afd498d00006020808301918252600083850181815260608501828152608086019788529888168252600192839052949020925183546001600160a01b03191696169590951782555193810193909355516002830155915160038201559051600490910155565b60026020526000908152604090205481565b6000546001600160a01b0316331461186c5760405162461bcd60e51b81526004016108f490615a5f565b600b805460ff19166001179055565b60075481565b600b5460ff1681565b6001600160a01b038083166000908152600160205260408082205490516370a0823160e01b815292169182906370a08231906118ca90339060040161569e565b60206040518083038186803b1580156118e257600080fd5b505afa1580156118f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061191a9190810190613d49565b90508083111561193c5760405162461bcd60e51b81526004016108f490615cbf565b60408051602080820183526001600160a01b03871660009081526001918290529283200154815261196d90856127f3565b6001600160a01b0386166000908152600260205260409020549091508111156119a85760405162461bcd60e51b81526004016108f490615a6f565b6001600160a01b0385166000908152600260205260409020546119d1908263ffffffff611b9a16565b6001600160a01b038616600090815260026020908152604080832093909355600190522060030154611a09908263ffffffff611b9a16565b6001600160a01b0380871660009081526001602052604090819020600301929092559051632770a7eb60e21b815290841690639dc29fac90611a5190339088906004016156ac565b600060405180830381600087803b158015611a6b57600080fd5b505af1158015611a7f573d6000803e3d6000fd5b505050506001600160a01b038516611aa357611a9e33826108fc612113565b611abd565b611abd6001600160a01b038616338363ffffffff61281216565b6001600160a01b038516600090815260026020526040908190205490517f295117b46583975aa628030f075db55be810827e0213ee4e1f8d02c1c7f16efd91610a149188919061576d565b60095481565b6004546001600160a01b031681565b6000546001600160a01b03163314611b475760405162461bcd60e51b81526004016108f490615a5f565b600b805460ff19169055565b6000546001600160a01b03163314611b7d5760405162461bcd60e51b81526004016108f490615a5f565b600a8054600090915561162d33826108fc612113565b620a8c0081565b600082821115611bbc5760405162461bcd60e51b81526004016108f490615a3f565b508082035b92915050565b600082611bd657506000611bc1565b82820282848281611be357fe5b0414611c015760405162461bcd60e51b81526004016108f490615b4f565b9392505050565b604051611c639085906323b872dd60e01b90611c2c90879087908790602401615745565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612834565b50505050565b600082820183811015611c015760405162461bcd60e51b81526004016108f49061599f565b6000818152600c602052604090206007015460ff1615611cc05760405162461bcd60e51b81526004016108f490615b3f565b6000818152600c60205260409020546001600160a01b03163314611cf65760405162461bcd60e51b81526004016108f4906158bf565b6000818152600c60205260409020600101548015801590611d175750804211155b6110d35760405162461bcd60e51b81526004016108f490615c1f565b611d3b613784565b611d44826120fa565b90508260001b8160200151600081518110611d5b57fe5b602002602001015114611d805760405162461bcd60e51b81526004016108f490615bbf565b611d8861382f565b611d93826000612371565b600654909150611dad9082906001600160a01b03166123c5565b611dc95760405162461bcd60e51b81526004016108f4906159bf565b60608101516000858152600c602052604090206002015414611dfd5760405162461bcd60e51b81526004016108f49061588f565b6040808201516000868152600c60205291909120600401546001600160a01b03908116911614611c635760405162461bcd60e51b81526004016108f490615c3f565b80516020820120600090611e5d9060691c609763ffffffff61291916565b90505b919050565b6000815160001415611e7957506000611bc1565b611e81613856565b611e8a83612926565b8051604051630461cb1160e51b81529192506000916001600160a01b03871691638c39622091611ebd9190600401615d7f565b60206040518083038186803b158015611ed557600080fd5b505afa158015611ee9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f0d9190810190613f8f565b9050611f17612ac6565b60ff168160ff1614611f3b5760405162461bcd60e51b81526004016108f490615d3f565b506001949350505050565b611f4e613856565b611f5784612926565b9050611f61613856565b611f6a86612926565b9050611f7461380f565b611f7d886122de565b9050611f8761388b565b611f95838360400151612acb565b600554815186516040516364f40d6f60e01b81529394506000936001600160a01b03909316926364f40d6f92611fcf929091600401615da8565b60206040518083038186803b158015611fe757600080fd5b505afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061201f9190810190613d0d565b90506001600160a01b0381166120475760405162461bcd60e51b81526004016108f490615bff565b60405163e618a6f560e01b81526000906001600160a01b0383169063e618a6f59061207e908d908f908e908e908e906004016157e6565b60206040518083038186803b15801561209657600080fd5b505afa1580156120aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120ce9190810190613cbf565b9050806120ed5760405162461bcd60e51b81526004016108f490615a4f565b5050505050505050505050565b612102613784565b611e5d61210e83612926565b612ad3565b6000612120848484612cd2565b905080611c635760405162461bcd60e51b81526004016108f490615acf565b6001600160a01b03828116600090815260016020526040902054166121765760405162461bcd60e51b81526004016108f490615aff565b6001600160a01b03821660009081526002602052604090205461219f908263ffffffff611c6916565b6001600160a01b0383166000908152600260209081526040808320939093556001905220600301546121d7908263ffffffff611c6916565b6001600160a01b0383166000908152600160208181526040808420600381019590955580519182019052920154825290612212908390612d3c565b6001600160a01b03808516600090815260016020526040908190205490516340c10f1960e01b815292935016906340c10f199061225590339085906004016156ac565b600060405180830381600087803b15801561226f57600080fd5b505af1158015612283573d6000803e3d6000fd5b5050506001600160a01b038416600090815260026020526040908190205490517f295117b46583975aa628030f075db55be810827e0213ee4e1f8d02c1c7f16efd92506122d191869161576d565b60405180910390a1505050565b6122e661380f565b633b9aca00808304906127109084068190049084066429f16b11c68311156123205760405162461bcd60e51b81526004016108f4906158af565b61ffff8211156123425760405162461bcd60e51b81526004016108f4906158ef565b604080516060810182526001600160401b03909416845261ffff92831660208501529116908201529050919050565b61237961382f565b8260400151518261ffff16106123a15760405162461bcd60e51b81526004016108f4906158ff565b82604001518261ffff16815181106123b557fe5b6020026020010151905092915050565b6000806123d184612d50565b6001600160a01b039081169084161491505092915050565b6123f161380f565b506040805160608101825282516001600160401b0316815260209283015161ffff169281019290925260009082015290565b6000826040015161ffff1660001461244d5760405162461bcd60e51b81526004016108f490615a9f565b612455613856565b61245e85612926565b8051604051630461cb1160e51b81529192506000916001600160a01b03891691638c396220916124919190600401615d7f565b60206040518083038186803b1580156124a957600080fd5b505afa1580156124bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124e19190810190613f8f565b90506124eb612ac6565b60ff168160ff161461250f5760405162461bcd60e51b81526004016108f490615d3f565b845160405163f25b3f9960e01b81526000916001600160a01b038a169163f25b3f999161253e91600401615db6565b604080518083038186803b15801561255557600080fd5b505afa158015612569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061258d9190810190613cdd565b509050806125ad5760405162461bcd60e51b81526004016108f490615abf565b6125c187876020015161ffff168388612d5a565b93505050505b949350505050565b6001600160a01b0380831660009081526001602090815260408083205481516318160ddd60e01b8152915194169384926318160ddd9260048082019391829003018186803b15801561262057600080fd5b505afa158015612634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126589190810190613d49565b6001600160a01b038516600090815260016020526040812060048101546003909101549293509161269090839063ffffffff611c6916565b9050806126af5760405162461bcd60e51b81526004016108f490615c8f565b6126b76138aa565b6126c18285612ea5565b6001600160a01b0388166000908152600160205260409020600201549091506126f0908763ffffffff611c6916565b6001600160a01b038816600090815260016020819052604090912060028101929092558251908201556003015461272d908463ffffffff611c6916565b6001600160a01b03909716600090815260016020526040902060030196909655505050505050565b6001600160a01b0381166127a0576000838152600c60205260408120600581015460039091015461278b9163ffffffff611c6916565b905061279a83826108fc612113565b506127ee565b6000838152600c60205260409020600301546127ce906001600160a01b03831690849063ffffffff61281216565b6000838152600c60205260409020600501546127ee9083906108fc612113565b505050565b60006127fd6138aa565b6128078484612ef2565b90506125c781612f25565b6040516127ee90849063a9059cbb60e01b90611c2c908690869060240161576d565b612846826001600160a01b0316612f34565b6128625760405162461bcd60e51b81526004016108f490615d4f565b60006060836001600160a01b03168360405161287e919061566d565b6000604051808303816000865af19150503d80600081146128bb576040519150601f19603f3d011682016040523d82523d6000602084013e6128c0565b606091505b5091509150816128e25760405162461bcd60e51b81526004016108f4906159ff565b805115611c6357808060200190516128fd9190810190613cbf565b611c635760405162461bcd60e51b81526004016108f490615cdf565b600160ff919091161b1790565b61292e613856565b606061294161293c84612f3a565b612f5f565b80519091506005146129655760405162461bcd60e51b81526004016108f490615a1f565b60006129848260008151811061297757fe5b602002602001015161306e565b9050600081116129a65760405162461bcd60e51b81526004016108f49061587f565b60606129c5836002815181106129b857fe5b6020026020010151612f5f565b905060608151604051908082528060200260200182016040528015612a0457816020015b6129f161388b565b8152602001906001900390816129e95790505b50905060005b8251811015612a4e57612a2f838281518110612a2257fe5b6020026020010151613178565b828281518110612a3b57fe5b6020908102919091010152600101612a0a565b506000612a6e85600481518110612a6157fe5b6020026020010151613215565b90506040518060a00160405280858152602001612a91876001815181106129b857fe5b815260200183815260200186600381518110612aa957fe5b602002602001015181526020018281525095505050505050919050565b600290565b61237961388b565b612adb613784565b60208201515160041015612b015760405162461bcd60e51b81526004016108f49061595f565b604082015151612b235760405162461bcd60e51b81526004016108f4906158cf565b60408201515160041015612b495760405162461bcd60e51b81526004016108f49061594f565b6060826020015151604051908082528060200260200182016040528015612b7a578160200160208202803883390190505b50905060005b836020015151811015612be2576000612ba285602001518381518110612a6157fe5b905080612bc15760405162461bcd60e51b81526004016108f490615bef565b80838381518110612bce57fe5b602090810291909101015250600101612b80565b506060836040015151604051908082528060200260200182016040528015612c2457816020015b612c1161382f565b815260200190600190039081612c095790505b50905060005b846040015151811015612c7657612c5785604001518281518110612c4a57fe5b60200260200101516132a2565b828281518110612c6357fe5b6020908102919091010152600101612c2a565b50612c84846060015161306e565b15612ca15760405162461bcd60e51b81526004016108f49061598f565b6040805160a08101825285518152602081019390935282015260006060820152608080840151908201529050919050565b600080846001600160a01b03168385604051612ced90615685565b600060405180830381858888f193505050503d8060008114612d2b576040519150601f19603f3d011682016040523d82523d6000602084013e612d30565b606091505b50909695505050505050565b6000612d466138aa565b61280784846133b1565b6020015160601c90565b6000815160001415612d7e5760405162461bcd60e51b81526004016108f490615aaf565b6020825181612d8957fe5b0615612da75760405162461bcd60e51b81526004016108f490615cef565b6020825181612db257fe5b0460020a8410612dd45760405162461bcd60e51b81526004016108f490615d6f565b600080600060f81b87604051602001612dee929190615651565b60408051601f198184030181529190528051602091820120915086905b85518111612e975785810151935060028206612e5757604051612e3a90600160f81b908590879060200161561a565b604051602081830303815290604052805190602001209250612e89565b604051612e7090600160f81b908690869060200161561a565b6040516020818303038152906040528051906020012092505b600282049150602001612e0b565b505090931495945050505050565b612ead6138aa565b6000612ec784670de0b6b3a764000063ffffffff611bc716565b90506000612edb828563ffffffff6133e316565b604080516020810190915290815295945050505050565b612efa6138aa565b8251600090612f0f908463ffffffff611bc716565b6040805160208101909152908152949350505050565b51670de0b6b3a7640000900490565b3b151590565b612f426138bd565b506040805180820190915281518152602082810190820152919050565b6060612f6a82613418565b612f865760405162461bcd60e51b81526004016108f490615b9f565b600080612f968460200151613452565b855191935091508214612fbb5760405162461bcd60e51b81526004016108f49061592f565b6000612fc6856135fb565b905060608160405190808252806020026020018201604052801561300457816020015b612ff16138bd565b815260200190600190039081612fe95790505b50602087015190915083016000805b848110156130615761302483613452565b508092505060405180604001604052808381526020018481525084828151811061304a57fe5b602090810291909101015291810191600101613013565b5091979650505050505050565b80516000901580159061308357508151602110155b61309f5760405162461bcd60e51b81526004016108f490615d2f565b6130a882613418565b156130c55760405162461bcd60e51b81526004016108f490615bcf565b6000806130d58460200151613452565b8551919350915082146130fa5760405162461bcd60e51b81526004016108f4906158df565b60208085015182018051838503929091600083901a9184101561312457836020036101000a830492505b81158015613130575084155b1561314d5760405162461bcd60e51b81526004016108f490615adf565b8115801561315b5750600184115b15612d305760405162461bcd60e51b81526004016108f49061589f565b61318061388b565b606061318b83612f5f565b905080516002146131ae5760405162461bcd60e51b81526004016108f490615b7f565b6131b661388b565b60405180604001604052806131d18460008151811061297757fe5b8152602001836001815181106131e357fe5b60200260200101518152509050806000015160001415611c015760405162461bcd60e51b81526004016108f490615c0f565b80516000906021146132395760405162461bcd60e51b81526004016108f490615d0f565b61324282613418565b1561325f5760405162461bcd60e51b81526004016108f490615bcf565b60008061326f8460200151613452565b91509150816021146132935760405162461bcd60e51b81526004016108f490615caf565b60208401510151915050919050565b6132aa61382f565b60606132b98360200151612f5f565b905080516003146132dc5760405162461bcd60e51b81526004016108f4906159af565b6132e461382f565b6040518060800160405280856000015181526020016133168460008151811061330957fe5b6020026020010151613672565b60601b6bffffffffffffffffffffffff1916815260200161333d8460018151811061330957fe5b6001600160a01b0316815260200161335b8460028151811061297757fe5b905260608101519091506133815760405162461bcd60e51b81526004016108f490615a2f565b60208101516bffffffffffffffffffffffff1916611c015760405162461bcd60e51b81526004016108f490615b5f565b6133b96138aa565b60006133d3670de0b6b3a76400008563ffffffff611bc716565b90506125c7818460000151612ea5565b60008082116134045760405162461bcd60e51b81526004016108f490615a8f565b600082848161340f57fe5b04949350505050565b805160009061342957506000611e60565b6020820151805160001a9060c082101561344857600092505050611e60565b5060019392505050565b8051600090819081908190811a60808110156134755760019250600091506135f0565b60808110801590613486575060b881105b156134cf57607e198101925060028314156134c657600186015160001a60808110156134c45760405162461bcd60e51b81526004016108f490615ccf565b505b600191506135f0565b60b881108015906134e0575060c081105b1561355a5760019590950180519095602081900360b7016101000a820480820160b519019450909160001a60b61983018161352d5760405162461bcd60e51b81526004016108f4906159ef565b6037831161354d5760405162461bcd60e51b81526004016108f49061591f565b60010193506135f0915050565b60c0811080159061356b575060f881105b156135805760be1981019250600191506135f0565b60019590950180519095602081900360f7016101000a820480820160f519019450909160001a60f6198301816135c85760405162461bcd60e51b81526004016108f490615b8f565b603783116135e85760405162461bcd60e51b81526004016108f490615b6f565b600101935050505b509092509050915091565b6000806000905060006136118460200151613452565b602086015186519193508084019250015b8082101561366857600061363583613452565b509283019290508183111561365c5760405162461bcd60e51b81526004016108f490615aef565b50600190930192613622565b5091949350505050565b80516000906015146136965760405162461bcd60e51b81526004016108f490615c2f565b61369f82613418565b156136bc5760405162461bcd60e51b81526004016108f490615bcf565b6000806136cc8460200151613452565b91509150816015146136f05760405162461bcd60e51b81526004016108f490615cff565b60208401510151600160601b9004915050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061374757805160ff1916838001178555613774565b82800160010185558215613774579182015b82811115613774578251825591602001919060010190613759565b506137809291506138d7565b5090565b6040518060a0016040528060008152602001606081526020016060815260200160008152602001600080191681525090565b60405180610100016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001606081526020016000151581525090565b604080516060810182526000808252602082018190529181019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6040518060a0016040528060008152602001606081526020016060815260200161387e6138bd565b8152600060209091015290565b6040518060400160405280600081526020016138a56138bd565b905290565b6040518060200160405280600081525090565b604051806040016040528060008152602001600081525090565b6106ee91905b8082111561378057600081556001016138dd565b8035611bc181615f29565b8051611bc181615f29565b600082601f83011261391857600080fd5b815161392b61392682615dea565b615dc4565b91508181835260208401935060208101905083856105e084028201111561395157600080fd5b60005b8381101561398057816139678882613a68565b8452506020909201916105e09190910190600101613954565b5050505092915050565b600082601f83011261399b57600080fd5b60046139a961392682615e0a565b915081838560a08402820111156139bf57600080fd5b60005b8381101561398057816139d58882613b42565b84525060209092019160a091909101906001016139c2565b8051611bc181615f3d565b8035611bc181615f46565b8051611bc181615f46565b600082601f830112613a1f57600080fd5b8135613a2d61392682615e27565b91508082526020830160208301858383011115613a4957600080fd5b613a54838284615ed0565b50505092915050565b8051611bc181615f4f565b60006105e08284031215613a7b57600080fd5b613a86610120615dc4565b90506000613a9484846139ed565b8252506020613aa584848301613bd0565b6020830152506040613ab984828501613a03565b6040830152506060613acd84828501613a03565b6060830152506080613ae18482850161398a565b608083015250610300613af68482850161398a565b60a083015250610580613b0b848285016138fc565b60c0830152506105a0613b2084828501613a03565b60e0830152506105c0613b3584828501613a03565b6101008301525092915050565b600060a08284031215613b5457600080fd5b613b5e60a0615dc4565b90506000613b6c8484613a03565b8252506020613b7d848483016138fc565b6020830152506040613b91848285016138fc565b6040830152506060613ba584828501613a03565b6060830152506080613bb984828501613a03565b60808301525092915050565b8035611bc181615f58565b8051611bc181615f61565b8051611bc181615f6a565b600060208284031215613bf857600080fd5b60006125c784846138f1565b600080600060608486031215613c1957600080fd5b6000613c2586866138f1565b9350506020613c36868287016138f1565b9250506040613c47868287016139f8565b9150509250925092565b60008060408385031215613c6457600080fd5b6000613c7085856138f1565b9250506020613c81858286016139f8565b9150509250929050565b600060208284031215613c9d57600080fd5b81516001600160401b03811115613cb357600080fd5b6125c784828501613907565b600060208284031215613cd157600080fd5b60006125c784846139ed565b60008060408385031215613cf057600080fd5b6000613cfc8585613a03565b9250506020613c8185828601613a03565b600060208284031215613d1f57600080fd5b60006125c78484613a5d565b600060208284031215613d3d57600080fd5b60006125c784846139f8565b600060208284031215613d5b57600080fd5b60006125c78484613a03565b60008060408385031215613d7a57600080fd5b6000613d8685856139f8565b92505060208301356001600160401b03811115613da257600080fd5b613c8185828601613a0e565b600080600060608486031215613dc357600080fd5b6000613dcf86866139f8565b93505060208401356001600160401b03811115613deb57600080fd5b613df786828701613a0e565b92505060408401356001600160401b03811115613e1357600080fd5b613c4786828701613a0e565b600080600080600080600060e0888a031215613e3a57600080fd5b6000613e468a8a6139f8565b97505060208801356001600160401b03811115613e6257600080fd5b613e6e8a828b01613a0e565b9650506040613e7f8a828b01613bc5565b95505060608801356001600160401b03811115613e9b57600080fd5b613ea78a828b01613a0e565b9450506080613eb88a828b01613bc5565b93505060a08801356001600160401b03811115613ed457600080fd5b613ee08a828b01613a0e565b92505060c0613ef18a828b016139f8565b91505092959891949750929550565b60008060008060808587031215613f1657600080fd5b6000613f2287876139f8565b9450506020613f33878288016139f8565b93505060408501356001600160401b03811115613f4f57600080fd5b613f5b87828801613a0e565b92505060608501356001600160401b03811115613f7757600080fd5b613f8387828801613a0e565b91505092959194509250565b600060208284031215613fa157600080fd5b60006125c78484613bdb565b6000613fb983836155e1565b505060200190565b613fca81615eba565b82525050565b613fca81615e6d565b613fca613fe582615e6d565b615f08565b6000613ff582615e60565b613fff8185615e64565b935061400a83615e4e565b8060005b838110156140385781516140228882613fad565b975061402d83615e4e565b92505060010161400e565b509495945050505050565b613fca81615e78565b613fca61405882615e7d565b6106ee565b613fca614058826106ee565b600061407482615e60565b61407e8185615e64565b935061408e818560208601615edc565b61409781615f19565b9093019392505050565b60006140ac82615e60565b6140b68185611e60565b93506140c6818560208601615edc565b9290920192915050565b6000815460018116600081146140ed57600181146141105761414f565b607f60028304166140fe8187611e60565b60ff198416815295508501925061414f565b6002820461411e8187611e60565b955061412985615e54565b60005b828110156141485781548882015260019091019060200161412c565b5050850192505b505092915050565b613fca81615e8a565b600061416d601e83615e64565b7f5472616e73616374696f6e2074797065206d757374206e6f7420626520300000815260200192915050565b60006141a6602183615e64565b7f57726f6e6720616d6f756e742073656e7420746f20717561736172206f776e658152603960f91b602082015260400192915050565b60006141e9601983615e64565b7f4c656164696e67207a65726f732061726520696e76616c696400000000000000815260200192915050565b6000614222603483615e64565b7f626c6f636b4e756d2065786365656473206d61782073697a6520616c6c6f77658152736420696e20506c61736d614672616d65776f726b60601b602082015260400192915050565b6000614278601e83615e64565b7f4e6f742063616c6c656420627920746865207469636b6574206f776e65720000815260200192915050565b60006142b1602183615e64565b7f5472616e73616374696f6e2063616e6e6f7420686176652030206f75747075748152607360f81b602082015260400192915050565b60006142f4603a83615e64565b7f4465636f646564206974656d206c656e677468206d757374206265206571756181527f6c20746f2074686520696e7075742064617461206c656e677468000000000000602082015260400192915050565b6000614353602283615e64565b7f7478496e6465782065786365656473207468652073697a65206f662075696e74815261189b60f11b602082015260400192915050565b6000614397601a83615e64565b7f4f757470757420696e646578206f7574206f6620626f756e6473000000000000815260200192915050565b60006143d0604083615e64565b7f546865206368616c6c656e67696e67207472616e73616374696f6e206973207481527f68652073616d652061732074686520636c61696d207472616e73616374696f6e602082015260400192915050565b600061442f602083615e64565b7f496e76616c6964206c656e67746820666f722061206c6f6e6720737472696e67815260200192915050565b6000614468602683615e64565b7f4465636f64656420524c50206c656e67746820666f72206c69737420697320698152651b9d985b1a5960d21b602082015260400192915050565b60006144b0602c83615e64565b7f52657175657374656420616d6f756e742065786365656473207468652055736181526b626c65204c6971756469747960a01b602082015260400192915050565b60006144fe602583615e64565b7f5472616e73616374696f6e206f757470757473206e756d2065786365656473208152641b1a5b5a5d60da1b602082015260400192915050565b6000614545602483615e64565b7f5472616e73616374696f6e20696e70757473206e756d2065786365656473206c8152631a5b5a5d60e21b602082015260400192915050565b600061458b601483615e64565b73109bdb990815985b1d59481a5b98dbdc9c9958dd60621b815260200192915050565b60006145bb601e83615e64565b7f54686520636c61696d206973206e6f742066696e616c697a6564207965740000815260200192915050565b60006145f4601083615e64565b6f0747844617461206d75737420626520360841b815260200192915050565b6000614620601b83615e64565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000614659601d83615e64565b7f4f75747075742064617461206d75737420686176652033206974656d73000000815260200192915050565b6000614692602b83615e64565b7f546865206f7574707574206973206e6f74206f776e656420627920746865207181526a3ab0b9b0b91037bbb732b960a91b602082015260400192915050565b60006146df602183615e64565b7f546865205554584f2068617320616c7265616479206265656e20636c61696d658152601960fa1b602082015260400192915050565b6000614722601c83615e64565b7f546865206368616c6c656e676520706572696f64206973206f76657200000000815260200192915050565b600061475b603f83615e64565b7f496e76616c6964206c656164696e67207a65726f7320696e206c656e6774682081527f6f6620746865206c656e67746820666f722061206c6f6e6720737472696e6700602082015260400192915050565b60006147ba602083615e64565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b60006147f3602683615e64565b7f546865205554584f2069736e277420656e6f75676820746f20636f766572207481526568652066656560d01b602082015260400192915050565b600061483b601f83615e64565b7f496e76616c696420656e636f64696e67206f66207472616e73616374696f6e00815260200192915050565b6000614874601b83615e64565b7f4f757470757420616d6f756e74206d757374206e6f7420626520300000000000815260200192915050565b60006148ad601e83615e64565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815260200192915050565b60006148e6601983615e64565b7f5370656e64696e6720636f6e646974696f6e206661696c656400000000000000815260200192915050565b600061491f603183615e64565b7f4f6e6c792074686520517561736172204d61696e7461696e65722063616e20698152701b9d9bdad9481d1a1a5cc81b595d1a1bd9607a1b602082015260400192915050565b6000614972602b83615e64565b7f416d6f756e742073686f756c64206265206c6f776572207468616e20636c616981526a6d61626c652066756e647360a81b602082015260400192915050565b60006149bf602283615e64565b7f576173206e6f742063616c6c656420627920746865204f7574707574206f776e81526132b960f11b602082015260400192915050565b6000614a03601a83615e64565b7f536166654d6174683a206469766973696f6e206279207a65726f000000000000815260200192915050565b6000614a3c601c83615e64565b7f496e76616c6964207472616e73616374696f6e20706f736974696f6e00000000815260200192915050565b6000614a75601e83615e64565b7f4d65726b6c652070726f6f66206d757374206e6f7420626520656d7074790000815260200192915050565b6000614aae602c83615e64565b7f4661696c656420746f206765742074686520726f6f742068617368206f66207481526b686520626c6f636b206e756d60a01b602082015260400192915050565b6000614afc602783615e64565b7f536166654574685472616e736665723a206661696c656420746f207472616e738152660cccae4408aa8960cb1b602082015260400192915050565b6000614b45602283615e64565b7f5363616c617220302073686f756c6420626520656e636f646564206173203078815261038360f41b602082015260400192915050565b6000614b89604883615e64565b7f496e76616c6964206465636f646564206c656e677468206f6620524c5020697481527f656d20666f756e6420647572696e6720636f756e74696e67206974656d7320696020820152671b8818481b1a5cdd60c21b604082015260600192915050565b6000614bf9602683615e64565b7f51546f6b656e206973206e6f74207265676973746572656420666f7220746865815265103a37b5b2b760d11b602082015260400192915050565b6000614c41601b83615e64565b7f49464520436c61696d20706572696f6420686173207061737365640000000000815260200192915050565b6000614c7a601983615e64565b7f50726f766964656420547820646f65736e277420657869737400000000000000815260200192915050565b6000614cb3601e83615e64565b7f54686520636c61696d206973206e6f74206368616c6c656e676561626c650000815260200192915050565b6000614cec600f83615e64565b6e105b1c9958591e4818db185a5b5959608a1b815260200192915050565b6000614d17602183615e64565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b6000614d5a602083615e64565b7f4f7574707574206f75747075744775617264206d757374206e6f742062652030815260200192915050565b6000614d93601e83615e64565b7f496e76616c6964206c656e67746820666f722061206c6f6e67206c6973740000815260200192915050565b6000614dcc601883615e64565b7f4f7574707574206d75737420686176652032206974656d730000000000000000815260200192915050565b6000614e05603d83615e64565b7f496e76616c6964206c656164696e67207a65726f7320696e206c656e6774682081527f6f6620746865206c656e67746820666f722061206c6f6e67206c697374000000602082015260400192915050565b6000614e64601283615e64565b71125d195b481a5cc81b9bdd0818481b1a5cdd60721b815260200192915050565b6000614e92601883615e64565b7f49464520686173206e6f74206265656e20737461727465640000000000000000815260200192915050565b6000614ecb603783615e64565b7f54686520636c61696d207472616e73616374696f6e20646f6573206e6f74207381527f70656e642074686520636f7272656374206f7574707574000000000000000000602082015260400192915050565b6000614f2a601783615e64565b7f4974656d206d757374206e6f742062652061206c697374000000000000000000815260200192915050565b6000614f63603083615e64565b7f54686520636c61696d2068617320616c7265616479206265656e20636c61696d81526f1959081bdc8818da185b1b195b99d95960821b602082015260400192915050565b6000614fb5601683615e64565b75139d5b1b081a5b9c1d5d081b9bdd08185b1b1bddd95960521b815260200192915050565b6000614fe7602583615e64565b7f5370656e64696e6720636f6e646974696f6e20636f6e7472616374206e6f7420815264199bdd5b9960da1b602082015260400192915050565b600061502e601983615e64565b7f4f75747075742074797065206d757374206e6f74206265203000000000000000815260200192915050565b6000615067601383615e64565b72151a58dad95d081a5cc81b9bdd081d985b1a59606a1b815260200192915050565b6000615096601683615e64565b754974656d206c656e677468206d75737420626520323160501b815260200192915050565b60006150c8602083615e64565b7f57726f6e6720746f6b656e2073656e7420746f20717561736172206f776e6572815260200192915050565b6000615101601d83615e64565b7f5468652051756173617220636f6e747261637420697320706175736564000000815260200192915050565b600061513a602683615e64565b7f546865206368616c6c656e67696e67207472616e73616374696f6e20697320698152651b9d985b1a5960d21b602082015260400192915050565b6000611bc1600083611e60565b600061518f602383615e64565b7f5469636b6574207374696c6c2076616c6964206f7220646f65736e27742065788152621a5cdd60ea1b602082015260400192915050565b60006151d4602383615e64565b7f51546f6b656e20666f722074686520746f6b656e20616c72656164792065786981526273747360e81b602082015260400192915050565b6000615219602283615e64565b7f49737375652077697468207570646174696e672045786368616e676520526174815261032960f51b602082015260400192915050565b600061525d601e83615e64565b7f54686973205554584f20616c7265616479206861732061207469636b65740000815260200192915050565b6000615296601e83615e64565b7f4465636f646564206974656d206c656e677468206d7573742062652033330000815260200192915050565b60006152cf601983615e64565b7f4e6f7420656e6f7567682071546f6b656e2042616c616e636500000000000000815260200192915050565b6000615308601d83615e64565b7f496e76616c69642073686f727420737472696e6720656e636f64696e67000000815260200192915050565b6000615341602a83615e64565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b600061538d602f83615e64565b7f4c656e677468206f66204d65726b6c652070726f6f66206d757374206265206181526e1036bab63a34b836329037b310199960891b602082015260400192915050565b60006153de601e83615e64565b7f4465636f646564206974656d206c656e677468206d7573742062652032310000815260200192915050565b6000615417601683615e64565b754974656d206c656e677468206d75737420626520333360501b815260200192915050565b6000615449603283615e64565b7f546865205554584f2069732066726f6d206120626c6f636b206c6174657220748152711a185b881d1a19481cd85999481b1a5b5a5d60721b602082015260400192915050565b600061549d602a83615e64565b7f4974656d206c656e677468206d757374206265206265747765656e203120616e8152696420333320627974657360b01b602082015260400192915050565b60006154e9602c83615e64565b7f4d6f7265567046696e616c697a6174696f6e3a206e6f742061204d6f7265565081526b040e0e4dee8dec6ded840e8f60a31b602082015260400192915050565b6000615537601f83615e64565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b6000615570601483615e64565b73496e636f72726563742053656e6465724461746160601b815260200192915050565b60006155a0602c83615e64565b7f496e64657820646f6573206e6f74206d6174636820746865206c656e6774682081526b37b3103a343290383937b7b360a11b602082015260400192915050565b613fca81615e9c565b613fca81615e95565b613fca816106ee565b613fca81615ec5565b60006156118284613fd9565b50601401919050565b6000615626828661404c565b600182019150615636828561405d565b602082019150615646828461405d565b506020019392505050565b600061565d828561404c565b6001820191506125c782846140a1565b6000611c0182846140a1565b6000611c0182846140d0565b6000611bc182615175565b60208101611bc18284613fd0565b60208101611bc18284613fc1565b604081016156ba8285613fc1565b611c0160208301846155f3565b61010081016156d6828b613fd0565b6156e3602083018a6155f3565b6156f060408301896155f3565b6156fd60608301886155f3565b61570a6080830187613fd0565b61571760a08301866155f3565b81810360c08301526157298185614069565b905061573860e0830184614043565b9998505050505050505050565b606081016157538286613fd0565b6157606020830185613fd0565b6125c760408301846155f3565b604081016156ba8285613fd0565b60a081016157898288613fd0565b61579660208301876155f3565b6157a360408301866155f3565b6157b060608301856155f3565b6157bd60808301846155f3565b9695505050505050565b60208082528101611c018184613fea565b60208101611bc18284614043565b60a080825281016157f78188614069565b905061580660208301876155f3565b81810360408301526158188186614069565b905061582760608301856155ea565b81810360808301526158398184614069565b979650505050505050565b606080825281016158558186614069565b905061586460208301856155f3565b6125c76040830184614043565b60208101611bc18284614157565b60208082528101611e5d81614160565b60208082528101611e5d81614199565b60208082528101611e5d816141dc565b60208082528101611e5d81614215565b60208082528101611e5d8161426b565b60208082528101611e5d816142a4565b60208082528101611e5d816142e7565b60208082528101611e5d81614346565b60208082528101611e5d8161438a565b60208082528101611e5d816143c3565b60208082528101611e5d81614422565b60208082528101611e5d8161445b565b60208082528101611e5d816144a3565b60208082528101611e5d816144f1565b60208082528101611e5d81614538565b60208082528101611e5d8161457e565b60208082528101611e5d816145ae565b60208082528101611e5d816145e7565b60208082528101611e5d81614613565b60208082528101611e5d8161464c565b60208082528101611e5d81614685565b60208082528101611e5d816146d2565b60208082528101611e5d81614715565b60208082528101611e5d8161474e565b60208082528101611e5d816147ad565b60208082528101611e5d816147e6565b60208082528101611e5d8161482e565b60208082528101611e5d81614867565b60208082528101611e5d816148a0565b60208082528101611e5d816148d9565b60208082528101611e5d81614912565b60208082528101611e5d81614965565b60208082528101611e5d816149b2565b60208082528101611e5d816149f6565b60208082528101611e5d81614a2f565b60208082528101611e5d81614a68565b60208082528101611e5d81614aa1565b60208082528101611e5d81614aef565b60208082528101611e5d81614b38565b60208082528101611e5d81614b7c565b60208082528101611e5d81614bec565b60208082528101611e5d81614c34565b60208082528101611e5d81614c6d565b60208082528101611e5d81614ca6565b60208082528101611e5d81614cdf565b60208082528101611e5d81614d0a565b60208082528101611e5d81614d4d565b60208082528101611e5d81614d86565b60208082528101611e5d81614dbf565b60208082528101611e5d81614df8565b60208082528101611e5d81614e57565b60208082528101611e5d81614e85565b60208082528101611e5d81614ebe565b60208082528101611e5d81614f1d565b60208082528101611e5d81614f56565b60208082528101611e5d81614fa8565b60208082528101611e5d81614fda565b60208082528101611e5d81615021565b60208082528101611e5d8161505a565b60208082528101611e5d81615089565b60208082528101611e5d816150bb565b60208082528101611e5d816150f4565b60208082528101611e5d8161512d565b60208082528101611e5d81615182565b60208082528101611e5d816151c7565b60208082528101611e5d8161520c565b60208082528101611e5d81615250565b60208082528101611e5d81615289565b60208082528101611e5d816152c2565b60208082528101611e5d816152fb565b60208082528101611e5d81615334565b60208082528101611e5d81615380565b60208082528101611e5d816153d1565b60208082528101611e5d8161540a565b60208082528101611e5d8161543c565b60208082528101611e5d81615490565b60208082528101611e5d816154dc565b60208082528101611e5d8161552a565b60208082528101611e5d81615563565b60208082528101611e5d81615593565b60208101611bc182846155f3565b60408101615d9b82856155f3565b611c0160208301846155e1565b604081016156ba82856155f3565b60208101611bc182846155fc565b6040518181016001600160401b0381118282101715615de257600080fd5b604052919050565b60006001600160401b03821115615e0057600080fd5b5060209081020190565b60006001600160401b03821115615e2057600080fd5b5060200290565b60006001600160401b03821115615e3d57600080fd5b506020601f91909101601f19160190565b60200190565b60009081526020902090565b5190565b90815260200190565b6000611e5d82615e9c565b151590565b6001600160f81b03191690565b6000611e5d82615e6d565b61ffff1690565b6001600160a01b031690565b6001600160401b031690565b60ff1690565b6000611e5d82615e8a565b6000611e5d82615ea8565b82818337506000910152565b60005b83811015615ef7578181015183820152602001615edf565b83811115611c635750506000910152565b6000611e5d826000611e5d82615f23565b601f01601f191690565b60601b90565b615f3281615e6d565b811461162d57600080fd5b615f3281615e78565b615f32816106ee565b615f3281615e8a565b615f3281615e95565b615f3281615ea8565b615f3281615eb456fea365627a7a72315820d2224369c0ed29600bf5e263f05e7cb4d25abd77b8ff32e6f40d637b99b941456c6578706572696d656e74616cf564736f6c634300050b0040",
    "deployedBytecode": "0x6080604052600436106101ee5760003560e01c8063417a97261161010d5780639829625c116100a0578063d2d5862c1161006f578063d2d5862c14610530578063d82a94ae14610545578063e8469a811461055a578063e87e91891461056f578063e9f05da314610584576101ee565b80639829625c146104c4578063a9776b37146104d9578063b187bd26146104ee578063c107532914610510576101ee565b80637cc8448e116100dc5780637cc8448e1461045c57806380ec46df146104645780639069f192146104845780639132ccb2146104a4576101ee565b8063417a9726146103f25780635a6d086f146104075780635f4a12d31461042757806371ff579414610447576101ee565b80632c303564116101855780633be457bf116101545780633be457bf146103705780633c2568a9146103905780633d960403146103b05780633f136c8f146103df576101ee565b80632c303564146102f257806335098e8f14610312578063394803fd146103275780633a2ef9df1461035b576101ee565b80631bdaccd8116101c15780631bdaccd81461026a57806320cc593f1461027f57806321cc9343146102a157806327e45c2c146102c1576101ee565b8063067a83eb146101f3578063084d0f801461021e5780630d4bf070146102335780631047b1e314610248575b600080fd5b3480156101ff57600080fd5b50610208610599565b6040516102159190615d7f565b60405180910390f35b34801561022a57600080fd5b5061020861059f565b610246610241366004613c51565b6106f1565b005b34801561025457600080fd5b5061025d6107a5565b6040516102159190615690565b34801561027657600080fd5b506102086107b4565b34801561028b57600080fd5b506102946107ba565b6040516102159190615871565b3480156102ad57600080fd5b506102466102bc366004613d67565b6107c9565b3480156102cd57600080fd5b506102e16102dc366004613be6565b610a23565b60405161021595949392919061577b565b3480156102fe57600080fd5b5061024661030d366004613d2b565b610a5d565b34801561031e57600080fd5b50610208610b5c565b34801561033357600080fd5b50610347610342366004613d2b565b610b62565b6040516102159897969594939291906156c7565b34801561036757600080fd5b50610208610c43565b34801561037c57600080fd5b5061024661038b366004613e1f565b610c49565b34801561039c57600080fd5b506102466103ab366004613c51565b6110ae565b3480156103bc57600080fd5b506103d06103cb366004613d2b565b6110d7565b60405161021593929190615844565b6102466103ed366004613dae565b611188565b3480156103fe57600080fd5b5061025d61154e565b34801561041357600080fd5b50610246610422366004613d2b565b61155d565b34801561043357600080fd5b50610246610442366004613f00565b611630565b34801561045357600080fd5b50610294611703565b610246611712565b34801561047057600080fd5b5061024661047f366004613d2b565b61171f565b34801561049057600080fd5b5061024661049f366004613c04565b61174e565b3480156104b057600080fd5b506102086104bf366004613be6565b611830565b3480156104d057600080fd5b50610246611842565b3480156104e557600080fd5b5061020861187b565b3480156104fa57600080fd5b50610503611881565b60405161021591906157d8565b34801561051c57600080fd5b5061024661052b366004613c51565b61188a565b34801561053c57600080fd5b50610208611b08565b34801561055157600080fd5b50610294611b0e565b34801561056657600080fd5b50610246611b1d565b34801561057b57600080fd5b50610246611b53565b34801561059057600080fd5b50610208611b93565b600a5481565b600080600360009054906101000a90046001600160a01b03166001600160a01b03166338a9e0bc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105f057600080fd5b505afa158015610604573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106289190810190613d49565b905060006106c282600360009054906101000a90046001600160a01b03166001600160a01b0316634ca8714f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561067e57600080fd5b505afa158015610692573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106b69190810190613d49565b9063ffffffff611b9a16565b90506106e96106dc83600754611bc790919063ffffffff16565b829063ffffffff611b9a16565b925050505b90565b6001600160a01b038216610706575034610721565b6107216001600160a01b03831633308463ffffffff611c0816565b6001600160a01b03821660009081526002602052604090205461074a908263ffffffff611c6916565b6001600160a01b038316600090815260026020818152604080842094909455600190529190200154610782908263ffffffff611b9a16565b6001600160a01b0390921660009081526001602052604090206002019190915550565b6006546001600160a01b031681565b61384081565b6003546001600160a01b031681565b6107d282611c8e565b6107dc8282611d33565b60006107e782611e3f565b6040805160018082528183019092529192506060919060208083019080388339019050509050818160008151811061081b57fe5b6001600160a01b0392831660209182029290920101526004805460405163cec9e1a760e01b8152606093919091169163cec9e1a79161085c918691016157c7565b60006040518083038186803b15801561087457600080fd5b505afa158015610888573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108b09190810190613c8b565b9050806000815181106108bf57fe5b6020026020010151602001516001600160401b0316600014156108fd5760405162461bcd60e51b81526004016108f490615baf565b60405180910390fd5b6109336170808260008151811061091057fe5b6020026020010151602001516001600160401b0316611c6990919063ffffffff16565b4211156109525760405162461bcd60e51b81526004016108f490615b0f565b6000858152600c6020908152604091829020600701805460ff19166001179055815160608101909252858252810161099342620a8c0063ffffffff611c6916565b815260016020918201526000878152600d8252604090208251805191926109bf92849290910190613706565b50602082015160018201556040918201516002909101805460ff1916911515919091179055517fb29649e775970df3b15b55fdec6ed94f70d03683cd54b8fb201b46a1765c3a2490610a149087908690615d8d565b60405180910390a15050505050565b6001602081905260009182526040909120805491810154600282015460038301546004909301546001600160a01b03909416939192909185565b6000818152600c60205260409020600181015460079091015460ff1615610a965760405162461bcd60e51b81526004016108f4906159cf565b8042118015610aa457508015155b610ac05760405162461bcd60e51b81526004016108f490615c6f565b6000828152600c6020908152604080832060038101805490859055600182018590556004909101546001600160a01b03168452600290925290912054610b0c908263ffffffff611c6916565b6000848152600c6020818152604080842060048101546001600160a01b03168552600283529084209490945591869052905260050154600a54610b549163ffffffff611c6916565b600a55505050565b61708081565b600c6020908152600091825260409182902080546001808301546002808501546003860154600487015460058801546006890180548c51601f6000199a831615610100029a909a01909116969096049788018b90048b0286018b01909b528685526001600160a01b039788169a95999398929791909116959094919392830182828015610c305780601f10610c0557610100808354040283529160200191610c30565b820191906000526020600020905b815481529060010190602001808311610c1357829003601f168201915b5050506007909301549192505060ff1688565b60085481565b33604051602001610c5a9190615605565b604051602081830303815290604052805190602001208114610c8e5760405162461bcd60e51b81526004016108f490615d5f565b6000878152600c602052604090206007015460ff168015610cc057506000878152600d602052604090206002015460ff165b610cdc5760405162461bcd60e51b81526004016108f490615b2f565b6000878152600d6020526040902060010154421115610d0d5760405162461bcd60e51b81526004016108f4906159df565b8580519060200120600d6000898152602001908152602001600020600001604051610d389190615679565b60405180910390201415610d5e5760405162461bcd60e51b81526004016108f49061590f565b600354610d74906001600160a01b031687611e65565b610d905760405162461bcd60e51b81526004016108f490615c5f565b8151610e44576000878152600c60209081526040918290206006018054835160026001831615610100026000190190921691909104601f8101849004840282018401909452838152610e3f938b93919291830182828015610e325780601f10610e0757610100808354040283529160200191610e32565b820191906000526020600020905b815481529060010190602001808311610e1557829003601f168201915b5050505050888888611f46565b610f1b565b610e4c613784565b6000888152600d602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452610eec9392830182828015610ee25780601f10610eb757610100808354040283529160200191610ee2565b820191906000526020600020905b815481529060010190602001808311610ec557829003601f168201915b50505050506120fa565b9050610f1981602001518561ffff1681518110610f0557fe5b602002602001015160001c84898989611f46565b505b6000878152600d60205260409020600201805460ff19169055610f3c6137b6565b6000888152600c60209081526040918290208251610100808201855282546001600160a01b03908116835260018085015484870152600280860154858901526003860154606086015260048601549092166080850152600585015460a08501526006850180548851928116159094026000190190931691909104601f81018690048602820186019096528581529194929360c0860193908301828280156110245780601f10610ff957610100808354040283529160200191611024565b820191906000526020600020905b81548152906001019060200180831161100757829003601f168201915b50505091835250506007919091015460ff161515602091820152606082015160808301516001600160a01b031660009081526002909252604090912054919250611074919063ffffffff611c6916565b60808201516001600160a01b031660009081526002602052604090205560a08101516110a49033906108fc612113565b5050505050505050565b6110c96001600160a01b03831633308463ffffffff611c0816565b6110d3828261213f565b5050565b600d6020908152600091825260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290929183919083018282801561116e5780601f106111435761010080835404028352916020019161116e565b820191906000526020600020905b81548152906001019060200180831161115157829003601f168201915b50505050600183015460029093015491929160ff16905083565b600b5460ff16156111ab5760405162461bcd60e51b81526004016108f490615c4f565b60095434146111cc5760405162461bcd60e51b81526004016108f49061596f565b6000838152600c602052604090206007015460ff16156111fe5760405162461bcd60e51b81526004016108f4906159cf565b6000838152600c60205260409020600101541561122d5760405162461bcd60e51b81526004016108f490615c9f565b61123561380f565b61123e846122de565b905061124861059f565b81516001600160401b031611156112715760405162461bcd60e51b81526004016108f490615d1f565b611279613784565b611282846120fa565b905061128c61382f565b61129a828460400151612371565b90506112a681336123c5565b6112c25760405162461bcd60e51b81526004016108f490615a7f565b6003546112e2906001600160a01b0316866112dc866123e9565b87612423565b6112fe5760405162461bcd60e51b81526004016108f490615b1f565b6040808201516001600160a01b03166000908152600160205220600401546060820151811061133f5760405162461bcd60e51b81526004016108f490615a0f565b6060820151600090611357908363ffffffff611b9a16565b6040808501516001600160a01b03166000908152600260205220549091508111156113945760405162461bcd60e51b81526004016108f49061593f565b6040808401516001600160a01b03166000908152600260205220546113bf908263ffffffff611b9a16565b6040808501516001600160a01b03166000908152600260209081529082902092909255805161010081019091523381529081016114044261384063ffffffff611c6916565b81526020018460600151815260200182815260200184604001516001600160a01b0316815260200134815260200188815260200160001515815250600c60008a815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a0820151816005015560c08201518160060190805190602001906114f0929190613706565b5060e091909101516007909101805460ff19169115159190911790556040517f46650edf382c45ad9fa9d4b1a0bc52c4ec0b137c7532841fc574716b1eaf4fa39061153c908a90615d7f565b60405180910390a15050505050505050565b6000546001600160a01b031681565b6000818152600d6020526040902060010154421161158d5760405162461bcd60e51b81526004016108f49061597f565b6000818152600d602052604090206002015460ff166115be5760405162461bcd60e51b81526004016108f490615bdf565b6000818152600d602090815260408083206002908101805460ff19169055600c90925290912060048101549101546115ff916001600160a01b0316906125cf565b6000818152600c60205260409020805460049091015461162d9183916001600160a01b039182169116612755565b50565b61163984611c8e565b6116438483611d33565b61164b61380f565b611654846122de565b600354909150611677906001600160a01b031684611671846123e9565b85612423565b6116935760405162461bcd60e51b81526004016108f490615b1f565b6000858152600c6020526040902060078101805460ff1916600117905560048101546002909101546116ce916001600160a01b0316906125cf565b6000858152600c6020526040902080546004909101546116fc9187916001600160a01b039182169116612755565b5050505050565b6005546001600160a01b031681565b61171d60003461213f565b565b6000546001600160a01b031633146117495760405162461bcd60e51b81526004016108f490615a5f565b600755565b6000546001600160a01b031633146117785760405162461bcd60e51b81526004016108f490615a5f565b6001600160a01b0383811660009081526001602052604090205416156117b05760405162461bcd60e51b81526004016108f490615c7f565b6040805160a0810182526001600160a01b03938416815266071afd498d00006020808301918252600083850181815260608501828152608086019788529888168252600192839052949020925183546001600160a01b03191696169590951782555193810193909355516002830155915160038201559051600490910155565b60026020526000908152604090205481565b6000546001600160a01b0316331461186c5760405162461bcd60e51b81526004016108f490615a5f565b600b805460ff19166001179055565b60075481565b600b5460ff1681565b6001600160a01b038083166000908152600160205260408082205490516370a0823160e01b815292169182906370a08231906118ca90339060040161569e565b60206040518083038186803b1580156118e257600080fd5b505afa1580156118f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061191a9190810190613d49565b90508083111561193c5760405162461bcd60e51b81526004016108f490615cbf565b60408051602080820183526001600160a01b03871660009081526001918290529283200154815261196d90856127f3565b6001600160a01b0386166000908152600260205260409020549091508111156119a85760405162461bcd60e51b81526004016108f490615a6f565b6001600160a01b0385166000908152600260205260409020546119d1908263ffffffff611b9a16565b6001600160a01b038616600090815260026020908152604080832093909355600190522060030154611a09908263ffffffff611b9a16565b6001600160a01b0380871660009081526001602052604090819020600301929092559051632770a7eb60e21b815290841690639dc29fac90611a5190339088906004016156ac565b600060405180830381600087803b158015611a6b57600080fd5b505af1158015611a7f573d6000803e3d6000fd5b505050506001600160a01b038516611aa357611a9e33826108fc612113565b611abd565b611abd6001600160a01b038616338363ffffffff61281216565b6001600160a01b038516600090815260026020526040908190205490517f295117b46583975aa628030f075db55be810827e0213ee4e1f8d02c1c7f16efd91610a149188919061576d565b60095481565b6004546001600160a01b031681565b6000546001600160a01b03163314611b475760405162461bcd60e51b81526004016108f490615a5f565b600b805460ff19169055565b6000546001600160a01b03163314611b7d5760405162461bcd60e51b81526004016108f490615a5f565b600a8054600090915561162d33826108fc612113565b620a8c0081565b600082821115611bbc5760405162461bcd60e51b81526004016108f490615a3f565b508082035b92915050565b600082611bd657506000611bc1565b82820282848281611be357fe5b0414611c015760405162461bcd60e51b81526004016108f490615b4f565b9392505050565b604051611c639085906323b872dd60e01b90611c2c90879087908790602401615745565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612834565b50505050565b600082820183811015611c015760405162461bcd60e51b81526004016108f49061599f565b6000818152600c602052604090206007015460ff1615611cc05760405162461bcd60e51b81526004016108f490615b3f565b6000818152600c60205260409020546001600160a01b03163314611cf65760405162461bcd60e51b81526004016108f4906158bf565b6000818152600c60205260409020600101548015801590611d175750804211155b6110d35760405162461bcd60e51b81526004016108f490615c1f565b611d3b613784565b611d44826120fa565b90508260001b8160200151600081518110611d5b57fe5b602002602001015114611d805760405162461bcd60e51b81526004016108f490615bbf565b611d8861382f565b611d93826000612371565b600654909150611dad9082906001600160a01b03166123c5565b611dc95760405162461bcd60e51b81526004016108f4906159bf565b60608101516000858152600c602052604090206002015414611dfd5760405162461bcd60e51b81526004016108f49061588f565b6040808201516000868152600c60205291909120600401546001600160a01b03908116911614611c635760405162461bcd60e51b81526004016108f490615c3f565b80516020820120600090611e5d9060691c609763ffffffff61291916565b90505b919050565b6000815160001415611e7957506000611bc1565b611e81613856565b611e8a83612926565b8051604051630461cb1160e51b81529192506000916001600160a01b03871691638c39622091611ebd9190600401615d7f565b60206040518083038186803b158015611ed557600080fd5b505afa158015611ee9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f0d9190810190613f8f565b9050611f17612ac6565b60ff168160ff1614611f3b5760405162461bcd60e51b81526004016108f490615d3f565b506001949350505050565b611f4e613856565b611f5784612926565b9050611f61613856565b611f6a86612926565b9050611f7461380f565b611f7d886122de565b9050611f8761388b565b611f95838360400151612acb565b600554815186516040516364f40d6f60e01b81529394506000936001600160a01b03909316926364f40d6f92611fcf929091600401615da8565b60206040518083038186803b158015611fe757600080fd5b505afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061201f9190810190613d0d565b90506001600160a01b0381166120475760405162461bcd60e51b81526004016108f490615bff565b60405163e618a6f560e01b81526000906001600160a01b0383169063e618a6f59061207e908d908f908e908e908e906004016157e6565b60206040518083038186803b15801561209657600080fd5b505afa1580156120aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120ce9190810190613cbf565b9050806120ed5760405162461bcd60e51b81526004016108f490615a4f565b5050505050505050505050565b612102613784565b611e5d61210e83612926565b612ad3565b6000612120848484612cd2565b905080611c635760405162461bcd60e51b81526004016108f490615acf565b6001600160a01b03828116600090815260016020526040902054166121765760405162461bcd60e51b81526004016108f490615aff565b6001600160a01b03821660009081526002602052604090205461219f908263ffffffff611c6916565b6001600160a01b0383166000908152600260209081526040808320939093556001905220600301546121d7908263ffffffff611c6916565b6001600160a01b0383166000908152600160208181526040808420600381019590955580519182019052920154825290612212908390612d3c565b6001600160a01b03808516600090815260016020526040908190205490516340c10f1960e01b815292935016906340c10f199061225590339085906004016156ac565b600060405180830381600087803b15801561226f57600080fd5b505af1158015612283573d6000803e3d6000fd5b5050506001600160a01b038416600090815260026020526040908190205490517f295117b46583975aa628030f075db55be810827e0213ee4e1f8d02c1c7f16efd92506122d191869161576d565b60405180910390a1505050565b6122e661380f565b633b9aca00808304906127109084068190049084066429f16b11c68311156123205760405162461bcd60e51b81526004016108f4906158af565b61ffff8211156123425760405162461bcd60e51b81526004016108f4906158ef565b604080516060810182526001600160401b03909416845261ffff92831660208501529116908201529050919050565b61237961382f565b8260400151518261ffff16106123a15760405162461bcd60e51b81526004016108f4906158ff565b82604001518261ffff16815181106123b557fe5b6020026020010151905092915050565b6000806123d184612d50565b6001600160a01b039081169084161491505092915050565b6123f161380f565b506040805160608101825282516001600160401b0316815260209283015161ffff169281019290925260009082015290565b6000826040015161ffff1660001461244d5760405162461bcd60e51b81526004016108f490615a9f565b612455613856565b61245e85612926565b8051604051630461cb1160e51b81529192506000916001600160a01b03891691638c396220916124919190600401615d7f565b60206040518083038186803b1580156124a957600080fd5b505afa1580156124bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124e19190810190613f8f565b90506124eb612ac6565b60ff168160ff161461250f5760405162461bcd60e51b81526004016108f490615d3f565b845160405163f25b3f9960e01b81526000916001600160a01b038a169163f25b3f999161253e91600401615db6565b604080518083038186803b15801561255557600080fd5b505afa158015612569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061258d9190810190613cdd565b509050806125ad5760405162461bcd60e51b81526004016108f490615abf565b6125c187876020015161ffff168388612d5a565b93505050505b949350505050565b6001600160a01b0380831660009081526001602090815260408083205481516318160ddd60e01b8152915194169384926318160ddd9260048082019391829003018186803b15801561262057600080fd5b505afa158015612634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126589190810190613d49565b6001600160a01b038516600090815260016020526040812060048101546003909101549293509161269090839063ffffffff611c6916565b9050806126af5760405162461bcd60e51b81526004016108f490615c8f565b6126b76138aa565b6126c18285612ea5565b6001600160a01b0388166000908152600160205260409020600201549091506126f0908763ffffffff611c6916565b6001600160a01b038816600090815260016020819052604090912060028101929092558251908201556003015461272d908463ffffffff611c6916565b6001600160a01b03909716600090815260016020526040902060030196909655505050505050565b6001600160a01b0381166127a0576000838152600c60205260408120600581015460039091015461278b9163ffffffff611c6916565b905061279a83826108fc612113565b506127ee565b6000838152600c60205260409020600301546127ce906001600160a01b03831690849063ffffffff61281216565b6000838152600c60205260409020600501546127ee9083906108fc612113565b505050565b60006127fd6138aa565b6128078484612ef2565b90506125c781612f25565b6040516127ee90849063a9059cbb60e01b90611c2c908690869060240161576d565b612846826001600160a01b0316612f34565b6128625760405162461bcd60e51b81526004016108f490615d4f565b60006060836001600160a01b03168360405161287e919061566d565b6000604051808303816000865af19150503d80600081146128bb576040519150601f19603f3d011682016040523d82523d6000602084013e6128c0565b606091505b5091509150816128e25760405162461bcd60e51b81526004016108f4906159ff565b805115611c6357808060200190516128fd9190810190613cbf565b611c635760405162461bcd60e51b81526004016108f490615cdf565b600160ff919091161b1790565b61292e613856565b606061294161293c84612f3a565b612f5f565b80519091506005146129655760405162461bcd60e51b81526004016108f490615a1f565b60006129848260008151811061297757fe5b602002602001015161306e565b9050600081116129a65760405162461bcd60e51b81526004016108f49061587f565b60606129c5836002815181106129b857fe5b6020026020010151612f5f565b905060608151604051908082528060200260200182016040528015612a0457816020015b6129f161388b565b8152602001906001900390816129e95790505b50905060005b8251811015612a4e57612a2f838281518110612a2257fe5b6020026020010151613178565b828281518110612a3b57fe5b6020908102919091010152600101612a0a565b506000612a6e85600481518110612a6157fe5b6020026020010151613215565b90506040518060a00160405280858152602001612a91876001815181106129b857fe5b815260200183815260200186600381518110612aa957fe5b602002602001015181526020018281525095505050505050919050565b600290565b61237961388b565b612adb613784565b60208201515160041015612b015760405162461bcd60e51b81526004016108f49061595f565b604082015151612b235760405162461bcd60e51b81526004016108f4906158cf565b60408201515160041015612b495760405162461bcd60e51b81526004016108f49061594f565b6060826020015151604051908082528060200260200182016040528015612b7a578160200160208202803883390190505b50905060005b836020015151811015612be2576000612ba285602001518381518110612a6157fe5b905080612bc15760405162461bcd60e51b81526004016108f490615bef565b80838381518110612bce57fe5b602090810291909101015250600101612b80565b506060836040015151604051908082528060200260200182016040528015612c2457816020015b612c1161382f565b815260200190600190039081612c095790505b50905060005b846040015151811015612c7657612c5785604001518281518110612c4a57fe5b60200260200101516132a2565b828281518110612c6357fe5b6020908102919091010152600101612c2a565b50612c84846060015161306e565b15612ca15760405162461bcd60e51b81526004016108f49061598f565b6040805160a08101825285518152602081019390935282015260006060820152608080840151908201529050919050565b600080846001600160a01b03168385604051612ced90615685565b600060405180830381858888f193505050503d8060008114612d2b576040519150601f19603f3d011682016040523d82523d6000602084013e612d30565b606091505b50909695505050505050565b6000612d466138aa565b61280784846133b1565b6020015160601c90565b6000815160001415612d7e5760405162461bcd60e51b81526004016108f490615aaf565b6020825181612d8957fe5b0615612da75760405162461bcd60e51b81526004016108f490615cef565b6020825181612db257fe5b0460020a8410612dd45760405162461bcd60e51b81526004016108f490615d6f565b600080600060f81b87604051602001612dee929190615651565b60408051601f198184030181529190528051602091820120915086905b85518111612e975785810151935060028206612e5757604051612e3a90600160f81b908590879060200161561a565b604051602081830303815290604052805190602001209250612e89565b604051612e7090600160f81b908690869060200161561a565b6040516020818303038152906040528051906020012092505b600282049150602001612e0b565b505090931495945050505050565b612ead6138aa565b6000612ec784670de0b6b3a764000063ffffffff611bc716565b90506000612edb828563ffffffff6133e316565b604080516020810190915290815295945050505050565b612efa6138aa565b8251600090612f0f908463ffffffff611bc716565b6040805160208101909152908152949350505050565b51670de0b6b3a7640000900490565b3b151590565b612f426138bd565b506040805180820190915281518152602082810190820152919050565b6060612f6a82613418565b612f865760405162461bcd60e51b81526004016108f490615b9f565b600080612f968460200151613452565b855191935091508214612fbb5760405162461bcd60e51b81526004016108f49061592f565b6000612fc6856135fb565b905060608160405190808252806020026020018201604052801561300457816020015b612ff16138bd565b815260200190600190039081612fe95790505b50602087015190915083016000805b848110156130615761302483613452565b508092505060405180604001604052808381526020018481525084828151811061304a57fe5b602090810291909101015291810191600101613013565b5091979650505050505050565b80516000901580159061308357508151602110155b61309f5760405162461bcd60e51b81526004016108f490615d2f565b6130a882613418565b156130c55760405162461bcd60e51b81526004016108f490615bcf565b6000806130d58460200151613452565b8551919350915082146130fa5760405162461bcd60e51b81526004016108f4906158df565b60208085015182018051838503929091600083901a9184101561312457836020036101000a830492505b81158015613130575084155b1561314d5760405162461bcd60e51b81526004016108f490615adf565b8115801561315b5750600184115b15612d305760405162461bcd60e51b81526004016108f49061589f565b61318061388b565b606061318b83612f5f565b905080516002146131ae5760405162461bcd60e51b81526004016108f490615b7f565b6131b661388b565b60405180604001604052806131d18460008151811061297757fe5b8152602001836001815181106131e357fe5b60200260200101518152509050806000015160001415611c015760405162461bcd60e51b81526004016108f490615c0f565b80516000906021146132395760405162461bcd60e51b81526004016108f490615d0f565b61324282613418565b1561325f5760405162461bcd60e51b81526004016108f490615bcf565b60008061326f8460200151613452565b91509150816021146132935760405162461bcd60e51b81526004016108f490615caf565b60208401510151915050919050565b6132aa61382f565b60606132b98360200151612f5f565b905080516003146132dc5760405162461bcd60e51b81526004016108f4906159af565b6132e461382f565b6040518060800160405280856000015181526020016133168460008151811061330957fe5b6020026020010151613672565b60601b6bffffffffffffffffffffffff1916815260200161333d8460018151811061330957fe5b6001600160a01b0316815260200161335b8460028151811061297757fe5b905260608101519091506133815760405162461bcd60e51b81526004016108f490615a2f565b60208101516bffffffffffffffffffffffff1916611c015760405162461bcd60e51b81526004016108f490615b5f565b6133b96138aa565b60006133d3670de0b6b3a76400008563ffffffff611bc716565b90506125c7818460000151612ea5565b60008082116134045760405162461bcd60e51b81526004016108f490615a8f565b600082848161340f57fe5b04949350505050565b805160009061342957506000611e60565b6020820151805160001a9060c082101561344857600092505050611e60565b5060019392505050565b8051600090819081908190811a60808110156134755760019250600091506135f0565b60808110801590613486575060b881105b156134cf57607e198101925060028314156134c657600186015160001a60808110156134c45760405162461bcd60e51b81526004016108f490615ccf565b505b600191506135f0565b60b881108015906134e0575060c081105b1561355a5760019590950180519095602081900360b7016101000a820480820160b519019450909160001a60b61983018161352d5760405162461bcd60e51b81526004016108f4906159ef565b6037831161354d5760405162461bcd60e51b81526004016108f49061591f565b60010193506135f0915050565b60c0811080159061356b575060f881105b156135805760be1981019250600191506135f0565b60019590950180519095602081900360f7016101000a820480820160f519019450909160001a60f6198301816135c85760405162461bcd60e51b81526004016108f490615b8f565b603783116135e85760405162461bcd60e51b81526004016108f490615b6f565b600101935050505b509092509050915091565b6000806000905060006136118460200151613452565b602086015186519193508084019250015b8082101561366857600061363583613452565b509283019290508183111561365c5760405162461bcd60e51b81526004016108f490615aef565b50600190930192613622565b5091949350505050565b80516000906015146136965760405162461bcd60e51b81526004016108f490615c2f565b61369f82613418565b156136bc5760405162461bcd60e51b81526004016108f490615bcf565b6000806136cc8460200151613452565b91509150816015146136f05760405162461bcd60e51b81526004016108f490615cff565b60208401510151600160601b9004915050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061374757805160ff1916838001178555613774565b82800160010185558215613774579182015b82811115613774578251825591602001919060010190613759565b506137809291506138d7565b5090565b6040518060a0016040528060008152602001606081526020016060815260200160008152602001600080191681525090565b60405180610100016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001606081526020016000151581525090565b604080516060810182526000808252602082018190529181019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6040518060a0016040528060008152602001606081526020016060815260200161387e6138bd565b8152600060209091015290565b6040518060400160405280600081526020016138a56138bd565b905290565b6040518060200160405280600081525090565b604051806040016040528060008152602001600081525090565b6106ee91905b8082111561378057600081556001016138dd565b8035611bc181615f29565b8051611bc181615f29565b600082601f83011261391857600080fd5b815161392b61392682615dea565b615dc4565b91508181835260208401935060208101905083856105e084028201111561395157600080fd5b60005b8381101561398057816139678882613a68565b8452506020909201916105e09190910190600101613954565b5050505092915050565b600082601f83011261399b57600080fd5b60046139a961392682615e0a565b915081838560a08402820111156139bf57600080fd5b60005b8381101561398057816139d58882613b42565b84525060209092019160a091909101906001016139c2565b8051611bc181615f3d565b8035611bc181615f46565b8051611bc181615f46565b600082601f830112613a1f57600080fd5b8135613a2d61392682615e27565b91508082526020830160208301858383011115613a4957600080fd5b613a54838284615ed0565b50505092915050565b8051611bc181615f4f565b60006105e08284031215613a7b57600080fd5b613a86610120615dc4565b90506000613a9484846139ed565b8252506020613aa584848301613bd0565b6020830152506040613ab984828501613a03565b6040830152506060613acd84828501613a03565b6060830152506080613ae18482850161398a565b608083015250610300613af68482850161398a565b60a083015250610580613b0b848285016138fc565b60c0830152506105a0613b2084828501613a03565b60e0830152506105c0613b3584828501613a03565b6101008301525092915050565b600060a08284031215613b5457600080fd5b613b5e60a0615dc4565b90506000613b6c8484613a03565b8252506020613b7d848483016138fc565b6020830152506040613b91848285016138fc565b6040830152506060613ba584828501613a03565b6060830152506080613bb984828501613a03565b60808301525092915050565b8035611bc181615f58565b8051611bc181615f61565b8051611bc181615f6a565b600060208284031215613bf857600080fd5b60006125c784846138f1565b600080600060608486031215613c1957600080fd5b6000613c2586866138f1565b9350506020613c36868287016138f1565b9250506040613c47868287016139f8565b9150509250925092565b60008060408385031215613c6457600080fd5b6000613c7085856138f1565b9250506020613c81858286016139f8565b9150509250929050565b600060208284031215613c9d57600080fd5b81516001600160401b03811115613cb357600080fd5b6125c784828501613907565b600060208284031215613cd157600080fd5b60006125c784846139ed565b60008060408385031215613cf057600080fd5b6000613cfc8585613a03565b9250506020613c8185828601613a03565b600060208284031215613d1f57600080fd5b60006125c78484613a5d565b600060208284031215613d3d57600080fd5b60006125c784846139f8565b600060208284031215613d5b57600080fd5b60006125c78484613a03565b60008060408385031215613d7a57600080fd5b6000613d8685856139f8565b92505060208301356001600160401b03811115613da257600080fd5b613c8185828601613a0e565b600080600060608486031215613dc357600080fd5b6000613dcf86866139f8565b93505060208401356001600160401b03811115613deb57600080fd5b613df786828701613a0e565b92505060408401356001600160401b03811115613e1357600080fd5b613c4786828701613a0e565b600080600080600080600060e0888a031215613e3a57600080fd5b6000613e468a8a6139f8565b97505060208801356001600160401b03811115613e6257600080fd5b613e6e8a828b01613a0e565b9650506040613e7f8a828b01613bc5565b95505060608801356001600160401b03811115613e9b57600080fd5b613ea78a828b01613a0e565b9450506080613eb88a828b01613bc5565b93505060a08801356001600160401b03811115613ed457600080fd5b613ee08a828b01613a0e565b92505060c0613ef18a828b016139f8565b91505092959891949750929550565b60008060008060808587031215613f1657600080fd5b6000613f2287876139f8565b9450506020613f33878288016139f8565b93505060408501356001600160401b03811115613f4f57600080fd5b613f5b87828801613a0e565b92505060608501356001600160401b03811115613f7757600080fd5b613f8387828801613a0e565b91505092959194509250565b600060208284031215613fa157600080fd5b60006125c78484613bdb565b6000613fb983836155e1565b505060200190565b613fca81615eba565b82525050565b613fca81615e6d565b613fca613fe582615e6d565b615f08565b6000613ff582615e60565b613fff8185615e64565b935061400a83615e4e565b8060005b838110156140385781516140228882613fad565b975061402d83615e4e565b92505060010161400e565b509495945050505050565b613fca81615e78565b613fca61405882615e7d565b6106ee565b613fca614058826106ee565b600061407482615e60565b61407e8185615e64565b935061408e818560208601615edc565b61409781615f19565b9093019392505050565b60006140ac82615e60565b6140b68185611e60565b93506140c6818560208601615edc565b9290920192915050565b6000815460018116600081146140ed57600181146141105761414f565b607f60028304166140fe8187611e60565b60ff198416815295508501925061414f565b6002820461411e8187611e60565b955061412985615e54565b60005b828110156141485781548882015260019091019060200161412c565b5050850192505b505092915050565b613fca81615e8a565b600061416d601e83615e64565b7f5472616e73616374696f6e2074797065206d757374206e6f7420626520300000815260200192915050565b60006141a6602183615e64565b7f57726f6e6720616d6f756e742073656e7420746f20717561736172206f776e658152603960f91b602082015260400192915050565b60006141e9601983615e64565b7f4c656164696e67207a65726f732061726520696e76616c696400000000000000815260200192915050565b6000614222603483615e64565b7f626c6f636b4e756d2065786365656473206d61782073697a6520616c6c6f77658152736420696e20506c61736d614672616d65776f726b60601b602082015260400192915050565b6000614278601e83615e64565b7f4e6f742063616c6c656420627920746865207469636b6574206f776e65720000815260200192915050565b60006142b1602183615e64565b7f5472616e73616374696f6e2063616e6e6f7420686176652030206f75747075748152607360f81b602082015260400192915050565b60006142f4603a83615e64565b7f4465636f646564206974656d206c656e677468206d757374206265206571756181527f6c20746f2074686520696e7075742064617461206c656e677468000000000000602082015260400192915050565b6000614353602283615e64565b7f7478496e6465782065786365656473207468652073697a65206f662075696e74815261189b60f11b602082015260400192915050565b6000614397601a83615e64565b7f4f757470757420696e646578206f7574206f6620626f756e6473000000000000815260200192915050565b60006143d0604083615e64565b7f546865206368616c6c656e67696e67207472616e73616374696f6e206973207481527f68652073616d652061732074686520636c61696d207472616e73616374696f6e602082015260400192915050565b600061442f602083615e64565b7f496e76616c6964206c656e67746820666f722061206c6f6e6720737472696e67815260200192915050565b6000614468602683615e64565b7f4465636f64656420524c50206c656e67746820666f72206c69737420697320698152651b9d985b1a5960d21b602082015260400192915050565b60006144b0602c83615e64565b7f52657175657374656420616d6f756e742065786365656473207468652055736181526b626c65204c6971756469747960a01b602082015260400192915050565b60006144fe602583615e64565b7f5472616e73616374696f6e206f757470757473206e756d2065786365656473208152641b1a5b5a5d60da1b602082015260400192915050565b6000614545602483615e64565b7f5472616e73616374696f6e20696e70757473206e756d2065786365656473206c8152631a5b5a5d60e21b602082015260400192915050565b600061458b601483615e64565b73109bdb990815985b1d59481a5b98dbdc9c9958dd60621b815260200192915050565b60006145bb601e83615e64565b7f54686520636c61696d206973206e6f742066696e616c697a6564207965740000815260200192915050565b60006145f4601083615e64565b6f0747844617461206d75737420626520360841b815260200192915050565b6000614620601b83615e64565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000614659601d83615e64565b7f4f75747075742064617461206d75737420686176652033206974656d73000000815260200192915050565b6000614692602b83615e64565b7f546865206f7574707574206973206e6f74206f776e656420627920746865207181526a3ab0b9b0b91037bbb732b960a91b602082015260400192915050565b60006146df602183615e64565b7f546865205554584f2068617320616c7265616479206265656e20636c61696d658152601960fa1b602082015260400192915050565b6000614722601c83615e64565b7f546865206368616c6c656e676520706572696f64206973206f76657200000000815260200192915050565b600061475b603f83615e64565b7f496e76616c6964206c656164696e67207a65726f7320696e206c656e6774682081527f6f6620746865206c656e67746820666f722061206c6f6e6720737472696e6700602082015260400192915050565b60006147ba602083615e64565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b60006147f3602683615e64565b7f546865205554584f2069736e277420656e6f75676820746f20636f766572207481526568652066656560d01b602082015260400192915050565b600061483b601f83615e64565b7f496e76616c696420656e636f64696e67206f66207472616e73616374696f6e00815260200192915050565b6000614874601b83615e64565b7f4f757470757420616d6f756e74206d757374206e6f7420626520300000000000815260200192915050565b60006148ad601e83615e64565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815260200192915050565b60006148e6601983615e64565b7f5370656e64696e6720636f6e646974696f6e206661696c656400000000000000815260200192915050565b600061491f603183615e64565b7f4f6e6c792074686520517561736172204d61696e7461696e65722063616e20698152701b9d9bdad9481d1a1a5cc81b595d1a1bd9607a1b602082015260400192915050565b6000614972602b83615e64565b7f416d6f756e742073686f756c64206265206c6f776572207468616e20636c616981526a6d61626c652066756e647360a81b602082015260400192915050565b60006149bf602283615e64565b7f576173206e6f742063616c6c656420627920746865204f7574707574206f776e81526132b960f11b602082015260400192915050565b6000614a03601a83615e64565b7f536166654d6174683a206469766973696f6e206279207a65726f000000000000815260200192915050565b6000614a3c601c83615e64565b7f496e76616c6964207472616e73616374696f6e20706f736974696f6e00000000815260200192915050565b6000614a75601e83615e64565b7f4d65726b6c652070726f6f66206d757374206e6f7420626520656d7074790000815260200192915050565b6000614aae602c83615e64565b7f4661696c656420746f206765742074686520726f6f742068617368206f66207481526b686520626c6f636b206e756d60a01b602082015260400192915050565b6000614afc602783615e64565b7f536166654574685472616e736665723a206661696c656420746f207472616e738152660cccae4408aa8960cb1b602082015260400192915050565b6000614b45602283615e64565b7f5363616c617220302073686f756c6420626520656e636f646564206173203078815261038360f41b602082015260400192915050565b6000614b89604883615e64565b7f496e76616c6964206465636f646564206c656e677468206f6620524c5020697481527f656d20666f756e6420647572696e6720636f756e74696e67206974656d7320696020820152671b8818481b1a5cdd60c21b604082015260600192915050565b6000614bf9602683615e64565b7f51546f6b656e206973206e6f74207265676973746572656420666f7220746865815265103a37b5b2b760d11b602082015260400192915050565b6000614c41601b83615e64565b7f49464520436c61696d20706572696f6420686173207061737365640000000000815260200192915050565b6000614c7a601983615e64565b7f50726f766964656420547820646f65736e277420657869737400000000000000815260200192915050565b6000614cb3601e83615e64565b7f54686520636c61696d206973206e6f74206368616c6c656e676561626c650000815260200192915050565b6000614cec600f83615e64565b6e105b1c9958591e4818db185a5b5959608a1b815260200192915050565b6000614d17602183615e64565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b6000614d5a602083615e64565b7f4f7574707574206f75747075744775617264206d757374206e6f742062652030815260200192915050565b6000614d93601e83615e64565b7f496e76616c6964206c656e67746820666f722061206c6f6e67206c6973740000815260200192915050565b6000614dcc601883615e64565b7f4f7574707574206d75737420686176652032206974656d730000000000000000815260200192915050565b6000614e05603d83615e64565b7f496e76616c6964206c656164696e67207a65726f7320696e206c656e6774682081527f6f6620746865206c656e67746820666f722061206c6f6e67206c697374000000602082015260400192915050565b6000614e64601283615e64565b71125d195b481a5cc81b9bdd0818481b1a5cdd60721b815260200192915050565b6000614e92601883615e64565b7f49464520686173206e6f74206265656e20737461727465640000000000000000815260200192915050565b6000614ecb603783615e64565b7f54686520636c61696d207472616e73616374696f6e20646f6573206e6f74207381527f70656e642074686520636f7272656374206f7574707574000000000000000000602082015260400192915050565b6000614f2a601783615e64565b7f4974656d206d757374206e6f742062652061206c697374000000000000000000815260200192915050565b6000614f63603083615e64565b7f54686520636c61696d2068617320616c7265616479206265656e20636c61696d81526f1959081bdc8818da185b1b195b99d95960821b602082015260400192915050565b6000614fb5601683615e64565b75139d5b1b081a5b9c1d5d081b9bdd08185b1b1bddd95960521b815260200192915050565b6000614fe7602583615e64565b7f5370656e64696e6720636f6e646974696f6e20636f6e7472616374206e6f7420815264199bdd5b9960da1b602082015260400192915050565b600061502e601983615e64565b7f4f75747075742074797065206d757374206e6f74206265203000000000000000815260200192915050565b6000615067601383615e64565b72151a58dad95d081a5cc81b9bdd081d985b1a59606a1b815260200192915050565b6000615096601683615e64565b754974656d206c656e677468206d75737420626520323160501b815260200192915050565b60006150c8602083615e64565b7f57726f6e6720746f6b656e2073656e7420746f20717561736172206f776e6572815260200192915050565b6000615101601d83615e64565b7f5468652051756173617220636f6e747261637420697320706175736564000000815260200192915050565b600061513a602683615e64565b7f546865206368616c6c656e67696e67207472616e73616374696f6e20697320698152651b9d985b1a5960d21b602082015260400192915050565b6000611bc1600083611e60565b600061518f602383615e64565b7f5469636b6574207374696c6c2076616c6964206f7220646f65736e27742065788152621a5cdd60ea1b602082015260400192915050565b60006151d4602383615e64565b7f51546f6b656e20666f722074686520746f6b656e20616c72656164792065786981526273747360e81b602082015260400192915050565b6000615219602283615e64565b7f49737375652077697468207570646174696e672045786368616e676520526174815261032960f51b602082015260400192915050565b600061525d601e83615e64565b7f54686973205554584f20616c7265616479206861732061207469636b65740000815260200192915050565b6000615296601e83615e64565b7f4465636f646564206974656d206c656e677468206d7573742062652033330000815260200192915050565b60006152cf601983615e64565b7f4e6f7420656e6f7567682071546f6b656e2042616c616e636500000000000000815260200192915050565b6000615308601d83615e64565b7f496e76616c69642073686f727420737472696e6720656e636f64696e67000000815260200192915050565b6000615341602a83615e64565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b600061538d602f83615e64565b7f4c656e677468206f66204d65726b6c652070726f6f66206d757374206265206181526e1036bab63a34b836329037b310199960891b602082015260400192915050565b60006153de601e83615e64565b7f4465636f646564206974656d206c656e677468206d7573742062652032310000815260200192915050565b6000615417601683615e64565b754974656d206c656e677468206d75737420626520333360501b815260200192915050565b6000615449603283615e64565b7f546865205554584f2069732066726f6d206120626c6f636b206c6174657220748152711a185b881d1a19481cd85999481b1a5b5a5d60721b602082015260400192915050565b600061549d602a83615e64565b7f4974656d206c656e677468206d757374206265206265747765656e203120616e8152696420333320627974657360b01b602082015260400192915050565b60006154e9602c83615e64565b7f4d6f7265567046696e616c697a6174696f6e3a206e6f742061204d6f7265565081526b040e0e4dee8dec6ded840e8f60a31b602082015260400192915050565b6000615537601f83615e64565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b6000615570601483615e64565b73496e636f72726563742053656e6465724461746160601b815260200192915050565b60006155a0602c83615e64565b7f496e64657820646f6573206e6f74206d6174636820746865206c656e6774682081526b37b3103a343290383937b7b360a11b602082015260400192915050565b613fca81615e9c565b613fca81615e95565b613fca816106ee565b613fca81615ec5565b60006156118284613fd9565b50601401919050565b6000615626828661404c565b600182019150615636828561405d565b602082019150615646828461405d565b506020019392505050565b600061565d828561404c565b6001820191506125c782846140a1565b6000611c0182846140a1565b6000611c0182846140d0565b6000611bc182615175565b60208101611bc18284613fd0565b60208101611bc18284613fc1565b604081016156ba8285613fc1565b611c0160208301846155f3565b61010081016156d6828b613fd0565b6156e3602083018a6155f3565b6156f060408301896155f3565b6156fd60608301886155f3565b61570a6080830187613fd0565b61571760a08301866155f3565b81810360c08301526157298185614069565b905061573860e0830184614043565b9998505050505050505050565b606081016157538286613fd0565b6157606020830185613fd0565b6125c760408301846155f3565b604081016156ba8285613fd0565b60a081016157898288613fd0565b61579660208301876155f3565b6157a360408301866155f3565b6157b060608301856155f3565b6157bd60808301846155f3565b9695505050505050565b60208082528101611c018184613fea565b60208101611bc18284614043565b60a080825281016157f78188614069565b905061580660208301876155f3565b81810360408301526158188186614069565b905061582760608301856155ea565b81810360808301526158398184614069565b979650505050505050565b606080825281016158558186614069565b905061586460208301856155f3565b6125c76040830184614043565b60208101611bc18284614157565b60208082528101611e5d81614160565b60208082528101611e5d81614199565b60208082528101611e5d816141dc565b60208082528101611e5d81614215565b60208082528101611e5d8161426b565b60208082528101611e5d816142a4565b60208082528101611e5d816142e7565b60208082528101611e5d81614346565b60208082528101611e5d8161438a565b60208082528101611e5d816143c3565b60208082528101611e5d81614422565b60208082528101611e5d8161445b565b60208082528101611e5d816144a3565b60208082528101611e5d816144f1565b60208082528101611e5d81614538565b60208082528101611e5d8161457e565b60208082528101611e5d816145ae565b60208082528101611e5d816145e7565b60208082528101611e5d81614613565b60208082528101611e5d8161464c565b60208082528101611e5d81614685565b60208082528101611e5d816146d2565b60208082528101611e5d81614715565b60208082528101611e5d8161474e565b60208082528101611e5d816147ad565b60208082528101611e5d816147e6565b60208082528101611e5d8161482e565b60208082528101611e5d81614867565b60208082528101611e5d816148a0565b60208082528101611e5d816148d9565b60208082528101611e5d81614912565b60208082528101611e5d81614965565b60208082528101611e5d816149b2565b60208082528101611e5d816149f6565b60208082528101611e5d81614a2f565b60208082528101611e5d81614a68565b60208082528101611e5d81614aa1565b60208082528101611e5d81614aef565b60208082528101611e5d81614b38565b60208082528101611e5d81614b7c565b60208082528101611e5d81614bec565b60208082528101611e5d81614c34565b60208082528101611e5d81614c6d565b60208082528101611e5d81614ca6565b60208082528101611e5d81614cdf565b60208082528101611e5d81614d0a565b60208082528101611e5d81614d4d565b60208082528101611e5d81614d86565b60208082528101611e5d81614dbf565b60208082528101611e5d81614df8565b60208082528101611e5d81614e57565b60208082528101611e5d81614e85565b60208082528101611e5d81614ebe565b60208082528101611e5d81614f1d565b60208082528101611e5d81614f56565b60208082528101611e5d81614fa8565b60208082528101611e5d81614fda565b60208082528101611e5d81615021565b60208082528101611e5d8161505a565b60208082528101611e5d81615089565b60208082528101611e5d816150bb565b60208082528101611e5d816150f4565b60208082528101611e5d8161512d565b60208082528101611e5d81615182565b60208082528101611e5d816151c7565b60208082528101611e5d8161520c565b60208082528101611e5d81615250565b60208082528101611e5d81615289565b60208082528101611e5d816152c2565b60208082528101611e5d816152fb565b60208082528101611e5d81615334565b60208082528101611e5d81615380565b60208082528101611e5d816153d1565b60208082528101611e5d8161540a565b60208082528101611e5d8161543c565b60208082528101611e5d81615490565b60208082528101611e5d816154dc565b60208082528101611e5d8161552a565b60208082528101611e5d81615563565b60208082528101611e5d81615593565b60208101611bc182846155f3565b60408101615d9b82856155f3565b611c0160208301846155e1565b604081016156ba82856155f3565b60208101611bc182846155fc565b6040518181016001600160401b0381118282101715615de257600080fd5b604052919050565b60006001600160401b03821115615e0057600080fd5b5060209081020190565b60006001600160401b03821115615e2057600080fd5b5060200290565b60006001600160401b03821115615e3d57600080fd5b506020601f91909101601f19160190565b60200190565b60009081526020902090565b5190565b90815260200190565b6000611e5d82615e9c565b151590565b6001600160f81b03191690565b6000611e5d82615e6d565b61ffff1690565b6001600160a01b031690565b6001600160401b031690565b60ff1690565b6000611e5d82615e8a565b6000611e5d82615ea8565b82818337506000910152565b60005b83811015615ef7578181015183820152602001615edf565b83811115611c635750506000910152565b6000611e5d826000611e5d82615f23565b601f01601f191690565b60601b90565b615f3281615e6d565b811461162d57600080fd5b615f3281615e78565b615f32816106ee565b615f3281615e8a565b615f3281615e95565b615f3281615ea8565b615f3281615eb456fea365627a7a72315820d2224369c0ed29600bf5e263f05e7cb4d25abd77b8ff32e6f40d637b99b941456c6578706572696d656e74616cf564736f6c634300050b0040",
    "sourceMap": "1065:19331:46:-;;;3374:712;8:9:-1;5:2;;;30:1;27;20:12;5:2;3374:712:46;;;;;;;;;;;;;;;;;;;;;3631:15;:58;;-1:-1:-1;;;;;;3631:58:46;-1:-1:-1;;;;;3631:58:46;;;;;;;;;;;3733:28;;;;;:15;;;:25;;:28;;-1:-1:-1;;3733:28:46;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3733:28:46;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3733:28:46;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3733:28:46;;;;;;;;;3699:15;:63;;-1:-1:-1;;;;;3699:63:46;;;-1:-1:-1;;;;;;3699:63:46;;;;;;;3772:25;:88;;;;;;;;;;;;;;;3870:11;:26;;;;;;;;;;;;;;;;3699:15;3906:29;;;;;3925:10;3906:29;;;3945:15;:34;;;;3989:13;:30;4029:9;:22;4061:14;:18;-1:-1:-1;1065:19331:46;;5:134:-1;83:13;;101:33;83:13;101:33;;;68:71;;;;;146:134;224:13;;242:33;224:13;242:33;;287:263;;402:2;390:9;381:7;377:23;373:32;370:2;;;418:1;415;408:12;370:2;453:1;470:64;526:7;506:9;470:64;;;460:74;364:186;-1:-1;;;;364:186;557:946;;;;;;;757:3;745:9;736:7;732:23;728:33;725:2;;;774:1;771;764:12;725:2;809:1;826:64;882:7;862:9;826:64;;;816:74;;788:108;927:2;945:64;1001:7;992:6;981:9;977:22;945:64;;;935:74;;906:109;1046:2;1064:64;1120:7;1111:6;1100:9;1096:22;1064:64;;;1054:74;;1025:109;1165:2;1183:64;1239:7;1230:6;1219:9;1215:22;1183:64;;;1173:74;;1144:109;1284:3;1303:64;1359:7;1350:6;1339:9;1335:22;1303:64;;;1293:74;;1263:110;1404:3;1423:64;1479:7;1470:6;1459:9;1455:22;1423:64;;;1413:74;;1383:110;719:784;;;;;;;;;1510:142;1601:45;1640:5;1601:45;;;1596:3;1589:58;1583:69;;;1659:229;1785:2;1770:18;;1799:79;1774:9;1851:6;1799:79;;1895:91;;-1:-1;;;;;2055:54;;1957:24;2038:76;2121:72;2183:5;2166:27;2200:116;;2287:24;2305:5;2287:24;;2323:117;2392:24;2410:5;2392:24;;;2385:5;2382:35;2372:2;;2431:1;2428;2421:12;2372:2;2366:74;;2447:117;2516:24;2534:5;2516:24;;2490:74;1065:19331:46;;;;;;",
    "deployedSourceMap": "1065:19331:46:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2027:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2027:29:46;;;:::i;:::-;;;;;;;;;;;;;;;;4152:313;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4152:313:46;;;:::i;4556:410:47:-;;;;;;;;;:::i;:::-;;1570:26:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1570:26:46;;;:::i;:::-;;;;;;;;1672:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1672:54:46;;;:::i;1235:38::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:38:46;;;:::i;:::-;;;;;;;;10445:1111;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10445:1111:46;;;;;;;;:::i;965:43:47:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;965:43:47;;;;;;;;:::i;:::-;;;;;;;;;;;;5065:698:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5065:698:46;;;;;;;;:::i;1732:48::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1732:48:46;;;:::i;2571:45::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2571:45:46;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;1638:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1638:28:46;;;:::i;12249:1806::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12249:1806:46;;;;;;;;:::i;1531:183:47:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1531:183:47;;;;;;;;:::i;2622:46:46:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2622:46:46;;;;;;;;:::i;:::-;;;;;;;;;;6891:1966;;;;;;;;;:::i;644:31:47:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;644:31:47;;;:::i;14202:484:46:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14202:484:46;;;;;;;;:::i;9333:870::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9333:870:46;;;;;;;;:::i;1505:58::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1505:58:46;;;:::i;1255:92:47:-;;;:::i;4699:116:46:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4699:116:46;;;;;;;;:::i;4109:318:47:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4109:318:47;;;;;;;;:::i;1014:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1014:55:47;;;;;;;;:::i;5832:85:46:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5832:85:46;;;:::i;1602:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1602:30:46;;;:::i;2062:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2062:20:46;;;:::i;:::-;;;;;;;;2683:1128:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2683:1128:47;;;;;;;;:::i;1895:24:46:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1895:24:46;;;:::i;1461:38::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1461:38:46;;;:::i;5985:87::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5985:87:46;;;:::i;6148:225::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6148:225:46;;;:::i;1832:57::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1832:57:46;;;:::i;2027:29::-;;;;:::o;4152:313::-;4202:7;4221:26;4250:15;;;;;;;;;-1:-1:-1;;;;;4250:15:46;-1:-1:-1;;;;;4250:34:46;;:36;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4250:36:46;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4250:36:46;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4250:36:46;;;;;;;;;4221:65;;4296:23;4322:56;4359:18;4322:15;;;;;;;;;-1:-1:-1;;;;;4322:15:46;-1:-1:-1;;;;;4322:30:46;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4322:32:46;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4322:32:46;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4322:32:46;;;;;;;;;:36;:56;:36;:56;:::i;:::-;4296:82;;4395:63;4418:39;4438:18;4418:15;;:19;;:39;;;;:::i;:::-;4395:18;;:63;:22;:63;:::i;:::-;4388:70;;;;4152:313;;:::o;4556:410:47:-;-1:-1:-1;;;;;4640:19:47;;4636:164;;-1:-1:-1;4684:9:47;4636:164;;;4724:65;-1:-1:-1;;;;;4724:30:47;;4755:10;4775:4;4782:6;4724:65;:30;:65;:::i;:::-;-1:-1:-1;;;;;4839:26:47;;;;;;:19;:26;;;;;;:38;;4870:6;4839:38;:30;:38;:::i;:::-;-1:-1:-1;;;;;4810:26:47;;;;;;:19;:26;;;;;;;;:67;;;;4917:9;:16;;;;;:27;;:39;;4949:6;4917:39;:31;:39;:::i;:::-;-1:-1:-1;;;;;4887:16:47;;;;;;;:9;:16;;;;;:27;;:69;;;;-1:-1:-1;4556:410:47:o;1570:26:46:-;;;-1:-1:-1;;;;;1570:26:46;;:::o;1672:54::-;1721:5;1672:54;:::o;1235:38::-;;;-1:-1:-1;;;;;1235:38:46;;:::o;10445:1111::-;10527:37;10556:7;10527:28;:37::i;:::-;10575:54;10604:7;10613:15;10575:28;:54::i;:::-;10669:14;10686:41;10711:15;10686:24;:41::i;:::-;10766:16;;;10780:1;10766:16;;;;;;;;;10669:58;;-1:-1:-1;10737:26:46;;10766:16;;;;;;;105:10:-1;10766:16:46;88:34:-1;136:17;;-1:-1;10766:16:46;10737:45;;10807:6;10792:9;10802:1;10792:12;;;;;;;;-1:-1:-1;;;;;10792:21:46;;;:12;;;;;;;;;:21;10876:15;;;:40;;-1:-1:-1;;;10876:40:46;;10823:50;;10876:15;;;;;:29;;:40;;10906:9;;10876:40;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10876:40:46;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10876:40:46;;;;;;39:16:-1;36:1;17:17;2:54;101:4;10876:40:46;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;10876:40:46;;;;;;;;;10823:93;;10934:7;10942:1;10934:10;;;;;;;;;;;;;;:29;;;-1:-1:-1;;;;;10934:34:46;10967:1;10934:34;;10926:71;;;;-1:-1:-1;;;10926:71:46;;;;;;;;;;;;;;;;;11261:51;1775:5;11261:7;11269:1;11261:10;;;;;;;;;;;;;;:29;;;-1:-1:-1;;;;;11261:33:46;;;:51;;;;:::i;:::-;11242:15;:70;;11234:110;;;;-1:-1:-1;;;11234:110:46;;;;;;;;;11355:19;;;;:10;:19;;;;;;;;;:29;;:36;;-1:-1:-1;;11355:36:46;11387:4;11355:36;;;11425:75;;;;;;;;;;;;;11448:45;:15;1883:6;11448:45;:19;:45;:::i;:::-;11425:75;;11495:4;11425:75;;;;;;11401:21;;;:12;:21;;;;;:99;;;;:21;;:99;;:21;;:99;;;;;:::i;:::-;-1:-1:-1;11401:99:46;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11401:99:46;;;;;;;;;;11515:34;;;;;11533:7;;11542:6;;11515:34;;;;;;;;;;10445:1111;;;;;:::o;965:43:47:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;965:43:47;;;;;;;;;:::o;5065:698:46:-;5127:23;5153:19;;;:10;:19;;;;;:37;;;;5209:29;;;;;;;5208:30;5200:76;;;;-1:-1:-1;;;5200:76:46;;;;;;;;;5312:15;5294;:33;:57;;;;-1:-1:-1;5331:20:46;;;5294:57;5286:105;;;;-1:-1:-1;;;5286:105:46;;;;;;;;;5402:19;5424;;;:10;:19;;;;;;;;:34;;;;;5468:38;;;;-1:-1:-1;5516:37:46;;:41;;;5636:25;;;;;-1:-1:-1;;;;;5636:25:46;5616:46;;-1:-1:-1;5616:46:46;;;;;;;:63;;5424:34;5616:63;:50;:63;:::i;:::-;5567:46;5587:19;;;:10;:19;;;;;;;;:25;;;;-1:-1:-1;;;;;5587:25:46;5567:46;;:19;:46;;;;;:112;;;;5725:19;;;;;;:29;;;5706:14;;:49;;;:18;:49;:::i;:::-;5689:14;:66;-1:-1:-1;;;5065:698:46:o;1732:48::-;1775:5;1732:48;:::o;2571:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2571:45:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2571:45:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2571:45:46;;;;;;;-1:-1:-1;;2571:45:46;;;:::o;1638:28::-;;;;:::o;12249:1806::-;12592:10;12575:28;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12575:28:46;;;12565:39;;;;;;12551:10;:53;12543:86;;;;-1:-1:-1;;;12543:86:46;;;;;;;;;12647:19;;;;:10;:19;;;;;:29;;;;;:62;;;;-1:-1:-1;12680:21:46;;;;:12;:21;;;;;:29;;;;;12647:62;12639:105;;;;-1:-1:-1;;;12639:105:46;;;;;;;;;12781:21;;;;:12;:21;;;;;:43;;;12762:15;:62;;12754:103;;;;-1:-1:-1;;;12754:103:46;;;;;;;;;12945:14;12935:25;;;;;;12898:12;:21;12911:7;12898:21;;;;;;;;;;;:32;;12888:43;;;;;;;;;;;;;;;:72;;12867:183;;;;-1:-1:-1;;;12867:183:46;;;;;;;;;13121:15;;13069:105;;-1:-1:-1;;;;;13121:15:46;13150:14;13069:38;:105::i;:::-;13061:156;;;;-1:-1:-1;;;13061:156:46;;;;;;;;;13232:27;;13228:520;;13313:19;;;;:10;:19;;;;;;;;;:39;;13280:132;;;;;;;;;;;-1:-1:-1;;13280:132:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;13313:19;;13280:132;;13313:39;13280:132;;13313:39;13280:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13354:14;13370:21;13393:18;13280:23;:132::i;:::-;13228:520;;;13443:52;;:::i;:::-;13541:21;;;;:12;:21;;;;;;;;;13510:64;;;;;;-1:-1:-1;;13510:64:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13541:21;13510:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:30;:64::i;:::-;13443:131;;13589:148;13621:9;:16;;;13638:15;13621:33;;;;;;;;;;;;;;;;13613:42;;13657:20;13679:14;13695:21;13718:18;13589:23;:148::i;:::-;13228:520;;13790:5;13758:21;;;:12;:21;;;;;:29;;:37;;-1:-1:-1;;13758:37:46;;;13805:20;;:::i;:::-;13828:19;;;;:10;:19;;;;;;;;;13805:42;;;;;;;;;;-1:-1:-1;;;;;13805:42:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13805:42:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;13828:19;;13805:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13805:42:46;;;-1:-1:-1;;13805:42:46;;;;;;;;;;;;;;;13931:21;;;;13913:12;;;;-1:-1:-1;;;;;13893:33:46;13805:42;13893:33;;;:19;:33;;;;;;;;13805:42;;-1:-1:-1;13893:60:46;;:33;:60;:37;:60;:::i;:::-;13877:12;;;;-1:-1:-1;;;;;13857:33:46;;;;;:19;:33;;;;;:96;14013:16;;;;13963:85;;14001:10;;726:4:47;13963:37:46;:85::i;:::-;12249:1806;;;;;;;;:::o;1531:183:47:-;1605:65;-1:-1:-1;;;;;1605:30:47;;1636:10;1656:4;1663:6;1605:65;:30;:65;:::i;:::-;1681:26;1693:5;1700:6;1681:11;:26::i;:::-;1531:183;;:::o;2622:46:46:-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2622:46:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2622:46:46;;;;;;;;;;;;;;;-1:-1:-1;2622:46:46;:::o;6891:1966::-;2832:8;;;;2831:9;2823:51;;;;-1:-1:-1;;;2823:51:46;;;;;;;;;7075:9;;7062;:22;7054:55;;;;-1:-1:-1;;;7054:55:46;;;;;;;;;7128:19;;;;:10;:19;;;;;:29;;;;;7127:30;7119:76;;;;-1:-1:-1;;;7119:76:46;;;;;;;;;7213:19;;;;:10;:19;;;;;:37;;;:42;7205:85;;;;-1:-1:-1;;;7205:85:46;;;;;;;;;7301:37;;:::i;:::-;7341:22;7355:7;7341:13;:22::i;:::-;7301:62;;7409:20;:18;:20::i;:::-;7382:23;;-1:-1:-1;;;;;7382:47:46;;;7374:110;;;;-1:-1:-1;;;7374:110:46;;;;;;;;;7495:52;;:::i;:::-;7558:51;7589:19;7558:30;:51::i;:::-;7495:114;;7620:49;;:::i;:::-;7680:72;7714:9;7725:14;:26;;;7680:33;:72::i;:::-;7620:132;;7841:39;7857:10;7869;7841:15;:39::i;:::-;7833:86;;;;-1:-1:-1;;;7833:86:46;;;;;;;;;7990:15;;7938:198;;-1:-1:-1;;;;;7990:15:46;8019:19;8052:30;:14;:28;:30::i;:::-;8096;7938:38;:198::i;:::-;7930:236;;;;-1:-1:-1;;;7930:236:46;;;;;;;;;8207:16;;;;;-1:-1:-1;;;;;8197:27:46;8177:17;8197:27;;;:9;:27;;;:37;;;8253:17;;;;:29;-1:-1:-1;8245:80:46;;;;-1:-1:-1;;;8245:80:46;;;;;;;;;8360:17;;;;8335:22;;8360:32;;8382:9;8360:32;:21;:32;:::i;:::-;8448:16;;;;;-1:-1:-1;;;;;8428:37:46;;;;;:19;:37;;;;8335:57;;-1:-1:-1;8410:55:46;;;8402:112;;;;-1:-1:-1;;;8402:112:46;;;;;;;;;8585:16;;;;;-1:-1:-1;;;;;8565:37:46;;;;;:19;:37;;;;:57;;8607:14;8565:57;:41;:57;:::i;:::-;8545:16;;;;;-1:-1:-1;;;;;8525:37:46;;;;;:19;:37;;;;;;;;:97;;;;8654:155;;;;;;;;8661:10;8654:155;;;;;8673:43;:15;1721:5;8673:43;:19;:43;:::i;:::-;8654:155;;;;8718:10;:17;;;8654:155;;;;8737:14;8654:155;;;;8753:10;:16;;;-1:-1:-1;;;;;8654:155:46;;;;;8771:9;8654:155;;;;8782:19;8654:155;;;;8803:5;8654:155;;;;;8632:10;:19;8643:7;8632:19;;;;;;;;;;;:177;;;;;;;;;;;;;-1:-1:-1;;;;;8632:177:46;;;;;-1:-1:-1;;;;;8632:177:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8632:177:46;;;;;-1:-1:-1;;;;;8632:177:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8632:177:46;;;;;;;;;;;;-1:-1:-1;;8632:177:46;;;;;;;;;;8824:26;;;;;;8842:7;;8824:26;;;;;;;;;;2884:1;;;;;6891:1966;;;:::o;644:31:47:-;;;-1:-1:-1;;;;;644:31:47;;:::o;14202:484:46:-;14287:21;;;;:12;:21;;;;;:43;;;14269:15;:61;14261:104;;;;-1:-1:-1;;;14261:104:46;;;;;;;;;14383:21;;;;:12;:21;;;;;:29;;;;;14375:90;;;;-1:-1:-1;;;14375:90:46;;;;;;;;;14507:5;14475:21;;;:12;:21;;;;;;;;:29;;;;:37;;-1:-1:-1;;14475:37:46;;;14531:10;:19;;;;;;:25;;;;14558:31;;;14523:67;;-1:-1:-1;;;;;14531:25:46;;14523:7;:67::i;:::-;14620:19;;;;:10;:19;;;;;:31;;14653:25;;;;;14601:78;;14611:7;;-1:-1:-1;;;;;14620:31:46;;;;14653:25;14601:9;:78::i;:::-;14202:484;:::o;9333:870::-;9525:37;9554:7;9525:28;:37::i;:::-;9573:57;9602:7;9611:18;9573:28;:57::i;:::-;9641:45;;:::i;:::-;9689:33;9703:18;9689:13;:33::i;:::-;9792:15;;9641:81;;-1:-1:-1;9740:204:46;;-1:-1:-1;;;;;9792:15:46;9821:18;9853:38;9641:81;9853:36;:38::i;:::-;9905:29;9740:38;:204::i;:::-;9732:242;;;;-1:-1:-1;;;9732:242:46;;;;;;;;;9985:19;;;;:10;:19;;;;;:29;;;:36;;-1:-1:-1;;9985:36:46;10017:4;9985:36;;;10040:25;;;;10067:31;;;;;10032:67;;-1:-1:-1;;;;;10040:25:46;;10032:7;:67::i;:::-;10137:19;;;;:10;:19;;;;;:31;;10170:25;;;;;10118:78;;10128:7;;-1:-1:-1;;;;;10137:31:46;;;;10170:25;10118:9;:78::i;:::-;9333:870;;;;;:::o;1505:58::-;;;-1:-1:-1;;;;;1505:58:46;;:::o;1255:92:47:-;1306:34;1326:1;1330:9;1306:11;:34::i;:::-;1255:92::o;4699:116:46:-;867:16:47;;-1:-1:-1;;;;;867:16:47;853:10;:30;845:92;;;;-1:-1:-1;;;845:92:47;;;;;;;;;4784:15:46;:24;4699:116::o;4109:318:47:-;867:16;;-1:-1:-1;;;;;867:16:47;853:10;:30;845:92;;;;-1:-1:-1;;;845:92:47;;;;;;;;;-1:-1:-1;;;;;4239:16:47;;;4281:1;4239:16;;;:9;:16;;;;;:30;;:44;4231:92;;;;-1:-1:-1;;;4231:92:47;;;;;;;;;4352:68;;;;;;;;-1:-1:-1;;;;;4352:68:47;;;;;792:4;4352:68;;;;;;;-1:-1:-1;4352:68:47;;;;;;;;;;;;;;;;;;4333:16;;;;;:9;:16;;;;;;;:87;;;;-1:-1:-1;;;;;;4333:87:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4109:318::o;1014:55::-;;;;;;;;;;;;;:::o;5832:85:46:-;867:16:47;;-1:-1:-1;;;;;867:16:47;853:10;:30;845:92;;;;-1:-1:-1;;;845:92:47;;;;;;;;;5895:8:46;:15;;-1:-1:-1;;5895:15:46;5906:4;5895:15;;;5832:85::o;1602:30::-;;;;:::o;2062:20::-;;;;;;:::o;2683:1128:47:-;-1:-1:-1;;;;;2771:16:47;;;2754:14;2771:16;;;:9;:16;;;;;;:30;2835:36;;-1:-1:-1;;;2835:36:47;;2771:30;;;;;2835:24;;:36;;2860:10;;2835:36;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2835:36:47;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2835:36:47;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2835:36:47;;;;;;;;;2811:60;;2899:13;2889:6;:23;;2881:61;;;;-1:-1:-1;;;2881:61:47;;;;;;;;;3059:46;;;;;;;;;-1:-1:-1;;;;;3074:16:47;;3001:25;3074:16;;;:9;:16;;;;;;;:29;;3059:46;;3029:85;;3107:6;3029:29;:85::i;:::-;-1:-1:-1;;;;;3153:26:47;;;;;;:19;:26;;;;;;3001:113;;-1:-1:-1;3132:47:47;;;3124:103;;;;-1:-1:-1;;;3124:103:47;;;;;;;;;-1:-1:-1;;;;;3267:26:47;;;;;;:19;:26;;;;;;:49;;3298:17;3267:49;:30;:49;:::i;:::-;-1:-1:-1;;;;;3238:26:47;;;;;;:19;:26;;;;;;;;:78;;;;3356:9;:16;;;:27;;;:50;;3388:17;3356:50;:31;:50;:::i;:::-;-1:-1:-1;;;;;3326:16:47;;;;;;;:9;:16;;;;;;;:27;;:80;;;;3453:40;;-1:-1:-1;;;3453:40:47;;:20;;;;;;:40;;3474:10;;3486:6;;3453:40;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3453:40:47;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;;;;;;3508:19:47;;3504:224;;3543:86;3581:10;3593:17;726:4;3543:37;:86::i;:::-;3504:224;;;3660:57;-1:-1:-1;;;;;3660:26:47;;3687:10;3699:17;3660:57;:26;:57;:::i;:::-;-1:-1:-1;;;;;3777:26:47;;;;;;:19;:26;;;;;;;;3743:61;;;;;;3770:5;;3777:26;3743:61;;1895:24:46;;;;:::o;1461:38::-;;;-1:-1:-1;;;;;1461:38:46;;:::o;5985:87::-;867:16:47;;-1:-1:-1;;;;;867:16:47;853:10;:30;845:92;;;;-1:-1:-1;;;845:92:47;;;;;;;;;6049:8:46;:16;;-1:-1:-1;;6049:16:46;;;5985:87::o;6148:225::-;867:16:47;;-1:-1:-1;;;;;867:16:47;853:10;:30;845:92;;;;-1:-1:-1;;;845:92:47;;;;;;;;;6239:14:46;;;6222;6263:18;;;6291:75;6329:10;6239:14;726:4:47;6291:37:46;:75::i;1832:57::-;1883:6;1832:57;:::o;1274:179:117:-;1332:7;1364:1;1359;:6;;1351:49;;;;-1:-1:-1;;;1351:49:117;;;;;;;;;-1:-1:-1;1422:5:117;;;1274:179;;;;;:::o;1693:458::-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:117;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:117;;;;;;;;;2143:1;1693:458;-1:-1:-1;;;1693:458:117:o;842:202:123:-;968:68;;942:95;;961:5;;-1:-1:-1;;;991:27:123;968:68;;1020:4;;1026:2;;1030:5;;968:68;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;968:68:123;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;968:68:123;;;179:29:-1;;;;160:49;;;942:18:123;:95::i;:::-;842:202;;;;:::o;834:176:117:-;892:7;923:5;;;946:6;;;;938:46;;;;-1:-1:-1;;;938:46:117;;;;;;;;16865:409:46;16947:19;;;;:10;:19;;;;;:29;;;;;16946:30;16938:58;;;;-1:-1:-1;;;16938:58:46;;;;;;;;;17014:19;;;;:10;:19;;;;;:31;-1:-1:-1;;;;;17014:31:46;17049:10;17014:45;17006:88;;;;-1:-1:-1;;;17006:88:46;;;;;;;;;17104:23;17130:19;;;:10;:19;;;;;:37;;;17185:20;;;;;:58;;;17228:15;17209;:34;;17185:58;17177:90;;;;-1:-1:-1;;;17177:90:46;;;;;;;;17477:976;17572:52;;:::i;:::-;17635:39;17666:7;17635:30;:39::i;:::-;17572:102;;17797:7;17789:16;;17766:9;:16;;;17783:1;17766:19;;;;;;;;;;;;;;:39;17758:107;;;;-1:-1:-1;;;17758:107:46;;;;;;;;;17936:49;;:::i;:::-;17996:47;18030:9;18041:1;17996:33;:47::i;:::-;18131:11;;17936:107;;-1:-1:-1;18103:40:46;;17936:107;;-1:-1:-1;;;;;18131:11:46;18103:15;:40::i;:::-;18095:96;;;;-1:-1:-1;;;18095:96:46;;;;;;;;;18291:17;;;;18256:19;;;;:10;:19;;;;;:31;;;:52;18248:98;;;;-1:-1:-1;;;18248:98:46;;;;;;;;;18393:16;;;;;18364:19;;;;:10;:19;;;;;;:25;;;-1:-1:-1;;;;;18364:25:46;;;:45;;;18356:90;;;;-1:-1:-1;;;18356:90:46;;;;;;;;1785:164:76;1901:19;;;;;;1858:7;;1892:49;;1925:3;1893:35;1937:3;1892:49;:44;:49;:::i;:::-;1877:65;;1785:164;;;;:::o;1671:513:78:-;1818:4;1842:7;:14;1860:1;1842:19;1838:62;;;-1:-1:-1;1884:5:78;1877:12;;1838:62;1910:47;;:::i;:::-;1960:34;1986:7;1960:25;:34::i;:::-;2041:16;;2021:37;;-1:-1:-1;;;2021:37:78;;1910:84;;-1:-1:-1;2004:14:78;;-1:-1:-1;;;;;2021:19:78;;;;;:37;;2041:16;2021:37;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2021:37:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2021:37:78;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2021:37:78;;;;;;;;;2004:54;;2088:18;:16;:18::i;:::-;2076:30;;:8;:30;;;2068:87;;;;-1:-1:-1;;;2068:87:78;;;;;;;;;-1:-1:-1;2173:4:78;;1671:513;-1:-1:-1;;;;1671:513:78:o;15640:1086:46:-;15834:51;;:::i;:::-;15888:41;15914:14;15888:25;:41::i;:::-;15834:95;;15940:45;;:::i;:::-;15988:46;16014:19;15988:25;:46::i;:::-;15940:94;;16044:37;;:::i;:::-;16084:22;16098:7;16084:13;:22::i;:::-;16044:62;;16116:39;;:::i;:::-;16158:65;16187:7;16196:14;:26;;;16158:28;:65::i;:::-;16265:25;;16323:17;;16342:20;;16265:107;;-1:-1:-1;;;16265:107:46;;16116;;-1:-1:-1;16234:28:46;;-1:-1:-1;;;;;16265:25:46;;;;:44;;:107;;16323:17;;16265:107;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16265:107:46;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16265:107:46;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16265:107:46;;;;;;;;;16234:138;-1:-1:-1;;;;;;16390:32:46;;16382:82;;;;-1:-1:-1;;;16382:82:46;;;;;;;;;16489:175;;-1:-1:-1;;;16489:175:46;;16474:12;;-1:-1:-1;;;;;16489:16:46;;;;;:175;;16519:19;;16552:7;;16573:14;;16601:21;;16636:18;;16489:175;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16489:175:46;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16489:175:46;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16489:175:46;;;;;;;;;16474:190;;16682:7;16674:45;;;;-1:-1:-1;;;16674:45:46;;;;;;;;;15640:1086;;;;;;;;;;;:::o;1817:168:93:-;1874:42;;:::i;:::-;1935:43;1947:30;1973:3;1947:25;:30::i;:::-;1935:11;:43::i;824:265:102:-;948:12;963:50;984:8;994:6;1002:10;963:20;:50::i;:::-;948:65;;1031:7;1023:59;;;;-1:-1:-1;;;1023:59:102;;;;;;;;1872:652:47;-1:-1:-1;;;;;1950:16:47;;;1992:1;1950:16;;;:9;:16;;;;;:30;;1942:95;;;;-1:-1:-1;;;1942:95:47;;;;;;;;;-1:-1:-1;;;;;2077:26:47;;;;;;:19;:26;;;;;;:38;;2108:6;2077:38;:30;:38;:::i;:::-;-1:-1:-1;;;;;2048:26:47;;;;;;:19;:26;;;;;;;;:67;;;;2155:9;:16;;;:27;;;:39;;2187:6;2155:39;:31;:39;:::i;:::-;-1:-1:-1;;;;;2125:16:47;;;;;;:9;:16;;;;;;;;:27;;;:69;;;;2309:46;;;;;;;2324:29;;;2309:46;;2125:16;2266:90;;2301:6;;2266:34;:90::i;:::-;-1:-1:-1;;;;;2374:16:47;;;;;;;:9;:16;;;;;;;:30;2366:74;;-1:-1:-1;;;2366:74:47;;2239:117;;-1:-1:-1;2374:30:47;;2366:44;;:74;;2411:10;;2239:117;;2366:74;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2366:74:47;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;;;;;2490:26:47;;;;;;:19;:26;;;;;;;;2456:61;;;;-1:-1:-1;2456:61:47;;2483:5;;2456:61;;;;;;;;;;1872:652;;;:::o;2150:491:100:-;2202:15;;:::i;:::-;410:10;2248:18;;;;464:5;2295:18;;;2294:32;;;;2364:15;;805:59;2399:25;;;2391:90;;;;-1:-1:-1;;;2391:90:100;;;;;;;;;666:11;2499:7;:23;;2491:70;;;;-1:-1:-1;;;2491:70:100;;;;;;;;;2578:56;;;;;;;;-1:-1:-1;;;;;2578:56:100;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2150:491:100;;;:::o;3961:279:93:-;4055:38;;:::i;:::-;4127:11;:19;;;:26;4113:11;:40;;;4105:79;;;;-1:-1:-1;;;4105:79:93;;;;;;;;;4201:11;:19;;;4221:11;4201:32;;;;;;;;;;;;;;;;4194:39;;3961:279;;;;:::o;14968:264:46:-;15090:4;15106:19;15128:46;15167:6;15128:38;:46::i;:::-;-1:-1:-1;;;;;15191:34:46;;;;;;;;-1:-1:-1;;14968:264:46;;;;:::o;1065:174:100:-;1156:15;;:::i;:::-;-1:-1:-1;1194:38:100;;;;;;;;1203:12;;-1:-1:-1;;;;;1194:38:100;;;;1217:11;;;;1194:38;;;;;;;;;-1:-1:-1;1194:38:100;;;;;1065:174::o;653:822:78:-;875:4;903:5;:17;;;:22;;924:1;903:22;895:63;;;;-1:-1:-1;;;895:63:78;;;;;;;;;968:47;;:::i;:::-;1018:34;1044:7;1018:25;:34::i;:::-;1099:16;;1079:37;;-1:-1:-1;;;1079:37:78;;968:84;;-1:-1:-1;1062:14:78;;-1:-1:-1;;;;;1079:19:78;;;;;:37;;1099:16;1079:37;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1079:37:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1079:37:78;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1079:37:78;;;;;;;;;1062:54;;1146:18;:16;:18::i;:::-;1134:30;;:8;:30;;;1126:87;;;;-1:-1:-1;;;1126:87:78;;;;;;;;;1259:14;;1242:32;;-1:-1:-1;;;1242:32:78;;1225:12;;-1:-1:-1;;;;;1242:16:78;;;;;:32;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1242:32:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1242:32:78;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1242:32:78;;;;;;;;;-1:-1:-1;1224:50:78;-1:-1:-1;1292:19:78;1284:76;;;;-1:-1:-1;;;1284:76:78;;;;;;;;;1378:90;1414:7;1423:5;:13;;;1378:90;;1438:4;1444:14;1378:22;:90::i;:::-;1371:97;;;;;653:822;;;;;;;:::o;19406:988:46:-;-1:-1:-1;;;;;19497:16:46;;;19473:21;19497:16;;;:9;:16;;;;;;;;:30;19565:35;;-1:-1:-1;;;19565:35:46;;;;19497:30;;;;;19565:33;;:35;;;;;;;;;;;19497:30;19565:35;;;5:2:-1;;;;30:1;27;20:12;5:2;19565:35:46;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19565:35:46;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;19565:35:46;;;;;;;;;-1:-1:-1;;;;;19630:16:46;;19610:17;19630:16;;;:9;:16;;;;;:26;;;;19967:27;;;;;19537:63;;-1:-1:-1;19630:26:46;19953:42;;19630:26;;19953:42;:13;:42;:::i;:::-;19933:62;-1:-1:-1;20013:14:46;20005:61;;;;-1:-1:-1;;;20005:61:46;;;;;;;;;20076:29;;:::i;:::-;20108:48;20127:9;20138:17;20108:18;:48::i;:::-;-1:-1:-1;;;;;20197:16:46;;;;;;:9;:16;;;;;:27;;;20076:80;;-1:-1:-1;20197:39:46;;20229:6;20197:39;:31;:39;:::i;:::-;-1:-1:-1;;;;;20167:16:46;;;;;;:9;:16;;;;;;;;:27;;;:69;;;;20278:27;;20246:29;;;:59;20345:27;;;:42;;20377:9;20345:42;:31;:42;:::i;:::-;-1:-1:-1;;;;;20315:16:46;;;;;;;:9;:16;;;;;:27;;:72;;;;-1:-1:-1;;;;;;19406:988:46:o;18671:559::-;-1:-1:-1;;;;;18773:19:46;;18769:455;;18808:19;18869;;;:10;:19;;;;;:29;;;;18830:34;;;;;:69;;;:38;:69;:::i;:::-;18808:91;;18913:81;18951:11;18964;726:4:47;18913:37:46;:81::i;:::-;18769:455;;;;19065:19;;;;:10;:19;;;;;:34;;;19025:75;;-1:-1:-1;;;;;19025:26:46;;;19052:11;;19025:75;:26;:75;:::i;:::-;19165:19;;;;:10;:19;;;;;:29;;;19114:99;;19152:11;;726:4:47;19114:37:46;:99::i;:::-;18671:559;;;:::o;1029:181:49:-;1109:4;1125:18;;:::i;:::-;1146:20;1156:1;1159:6;1146:9;:20::i;:::-;1125:41;;1185:17;1194:7;1185:8;:17::i;662:174:123:-;770:58;;744:85;;763:5;;-1:-1:-1;;;793:23:123;770:58;;818:2;;822:5;;770:58;;;;2621:1095;3216:27;3224:5;-1:-1:-1;;;;;3216:25:123;;:27::i;:::-;3208:71;;;;-1:-1:-1;;;3208:71:123;;;;;;;;;3350:12;3364:23;3399:5;-1:-1:-1;;;;;3391:19:123;3411:4;3391:25;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3349:67:123;;;;3434:7;3426:52;;;;-1:-1:-1;;;3426:52:123;;;;;;;;;3493:17;;:21;3489:221;;3633:10;3622:30;;;;;;;;;;;;;;3614:85;;;;-1:-1:-1;;;3614:85:123;;;;;;;;425:144:95;180:1;549:13;;;;;;541:21;;425:144::o;1281:862:92:-;1346:18;;:::i;:::-;1376:32;1411;:23;:11;:21;:23::i;:::-;:30;:32::i;:::-;1461:12;;1376:67;;-1:-1:-1;847:1:92;1461:28;1453:72;;;;-1:-1:-1;;;1453:72:92;;;;;;;;;1535:14;1552:17;:5;1558:1;1552:8;;;;;;;;;;;;;;:15;:17::i;:::-;1535:34;;1596:1;1587:6;:10;1579:53;;;;-1:-1:-1;;;1579:53:92;;;;;;;;;1643:37;1683:17;:5;1689:1;1683:8;;;;;;;;;;;;;;:15;:17::i;:::-;1643:57;;1710:23;1749:10;:17;1736:31;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;1710:57:92;-1:-1:-1;1782:6:92;1777:110;1798:10;:17;1794:1;:21;1777:110;;;1849:27;1862:10;1873:1;1862:13;;;;;;;;;;;;;;1849:12;:27::i;:::-;1836:7;1844:1;1836:10;;;;;;;;;;;;;;;;;:40;1817:3;;1777:110;;;;1897:16;1916:20;:5;1922:1;1916:8;;;;;;;;;;;;;;:18;:20::i;:::-;1897:39;;1954:182;;;;;;;;1988:6;1954:182;;;;2016:17;:5;2022:1;2016:8;;;;;;;:17;1954:182;;;;2056:7;1954:182;;;;2085:5;2091:1;2085:8;;;;;;;;;;;;;;1954:182;;;;2117:8;1954:182;;;1947:189;;;;;;;1281:862;;;:::o;382:86:83:-;184:1;382:86;:::o;2233:282:92:-;2351:13;;:::i;2195:1363:93:-;2312:42;;:::i;:::-;2378:16;;;;:23;369:1;-1:-1:-1;2378:41:93;2370:90;;;;-1:-1:-1;;;2370:90:93;;;;;;;;;2478:17;;;;:24;2470:75;;;;-1:-1:-1;;;2470:75:93;;;;;;;;;2563:17;;;;:24;417:1;-1:-1:-1;2563:43:93;2555:93;;;;-1:-1:-1;;;2555:93:93;;;;;;;;;2659:23;2699:9;:16;;;:23;2685:38;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;2685:38:93;-1:-1:-1;2659:64:93;-1:-1:-1;2738:6:93;2733:222;2754:9;:16;;;:23;2750:1;:27;2733:222;;;2798:13;2814:31;:9;:16;;;2831:1;2814:19;;;;;;;:31;2798:47;-1:-1:-1;2867:19:93;2859:54;;;;-1:-1:-1;;;2859:54:93;;;;;;;;;2939:5;2927:6;2934:1;2927:9;;;;;;;;;;;;;;;;;:17;-1:-1:-1;2779:3:93;;2733:222;;;;2965:48;3054:9;:17;;;:24;3016:63;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;2965:114:93;-1:-1:-1;3094:6:93;3089:149;3110:9;:17;;;:24;3106:1;:28;3089:149;;;3168:59;3206:9;:17;;;3224:1;3206:20;;;;;;;;;;;;;;3168:37;:59::i;:::-;3155:7;3163:1;3155:10;;;;;;;;;;;;;;;;;:72;3136:3;;3089:149;;;;3298:25;:9;:16;;;:23;:25::i;:::-;:30;3290:59;;;;-1:-1:-1;;;3290:59:93;;;;;;;;;3367:184;;;;;;;;3401:16;;3367:184;;;;;;;;;;;;-1:-1:-1;3367:184:93;;;;;3522:18;;;;3367:184;;;;;-1:-1:-1;2195:1363:93;;;:::o;1610:243:102:-;1736:4;1757:12;1775:8;-1:-1:-1;;;;;1775:13:102;1793:10;1811:6;1775:47;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;1756:66:102;;1610:243;-1:-1:-1;;;;;;1610:243:102:o;1601:202:49:-;1689:4;1705:19;;:::i;:::-;1727:31;1742:6;1750:7;1727:14;:31::i;3716:171:93:-;3860:18;;;3852:27;;;3716:171::o;594:1288:97:-;738:4;766:5;:12;782:1;766:17;;758:60;;;;-1:-1:-1;;;758:60:97;;;;;;;;;851:2;836:5;:12;:17;;;;;;:22;828:82;;;;-1:-1:-1;;;828:82:97;;;;;;;;;1024:2;1011:5;:12;:15;;;;;;1007:1;:20;999:5;:28;991:85;;;;-1:-1:-1;;;991:85:97;;;;;;;;;1087:20;1117;151:4;1167:9;;1178:4;1150:33;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;1150:33:97;;;1140:44;;49:4:-1;1140:44:97;;;;;-1:-1:-1;1206:5:97;;1338:496;1364:5;:12;1359:1;:17;1338:496;;1510:13;;;1504:20;;-1:-1:-1;1559:1:97;1555;:5;1551:250;;1610:55;;;;-1:-1:-1;;;1627:9:97;1638:12;;1652;;1610:55;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1610:55:97;;;1600:66;;;;;;1585:81;;1551:250;;;1730:55;;;;-1:-1:-1;;;1747:9:97;1758:12;;1772;;1730:55;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1730:55:97;;;1720:66;;;;;;1705:81;;1551:250;1822:1;1818;:5;;-1:-1:-1;1383:2:97;1378:7;1338:496;;;-1:-1:-1;;1851:24:97;;;;594:1288;-1:-1:-1;;;;;594:1288:97:o;397:241:49:-;464:10;;:::i;:::-;486:23;512:18;:3;247:4;512:18;:7;:18;:::i;:::-;486:44;-1:-1:-1;541:16:49;560:26;486:44;580:5;560:26;:19;:26;:::i;:::-;605:25;;;;;;;;;;;;;397:241;-1:-1:-1;;;;;397:241:49:o;722:199::-;794:10;;:::i;:::-;841;;816:22;;841;;856:6;841:22;:14;:22;:::i;:::-;882:31;;;;;;;;;;;;;722:199;-1:-1:-1;;;;722:199:49:o;1956:111::-;2036:12;247:4;2036:24;;;1956:111::o;542:413:132:-;902:20;940:8;;;542:413::o;1097:278:101:-;1158:14;;:::i;:::-;-1:-1:-1;1340:28:101;;;;;;;;;1348:11;;1340:28;;1308:4;1298:15;;;1340:28;;;;1097:278;;;:::o;1541:730::-;1601:16;1637:12;1644:4;1637:6;:12::i;:::-;1629:43;;;;-1:-1:-1;;;1629:43:101;;;;;;;;;1684:18;1704:14;1722:34;1744:4;:11;;;1722:21;:34::i;:::-;1788:8;;1683:73;;-1:-1:-1;1683:73:101;-1:-1:-1;1774:22:101;;1766:73;;;;-1:-1:-1;;;1766:73:101;;;;;;;;;1850:13;1866:23;1884:4;1866:17;:23::i;:::-;1850:39;;1899:23;1939:5;1925:20;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;1977:11:101;;;;1899:46;;-1:-1:-1;1977:20:101;;1956:18;;2032:209;2056:5;2052:1;:9;2032:209;;;2096:33;2118:10;2096:21;:33::i;:::-;2082:47;;;;;2155:28;;;;;;;;2163:7;2155:28;;;;2172:10;2155:28;;;2143:6;2150:1;2143:9;;;;;;;;;;;;;;;;;:40;2210:20;;;;2063:3;;2032:209;;;-1:-1:-1;2258:6:101;;1541:730;-1:-1:-1;;;;;;;1541:730:101:o;3970:1206::-;4057:8;;4030:7;;4057:12;;;;:30;;-1:-1:-1;4073:8:101;;4085:2;-1:-1:-1;4073:14:101;4057:30;4049:85;;;;-1:-1:-1;;;4049:85:101;;;;;;;;;4153:12;4160:4;4153:6;:12::i;:::-;4152:13;4144:49;;;;-1:-1:-1;;;4144:49:101;;;;;;;;;4204:15;4221:14;4239:34;4261:4;:11;;;4239:21;:34::i;:::-;4302:8;;4203:70;;-1:-1:-1;4203:70:101;-1:-1:-1;4291:19:101;;4283:90;;;;-1:-1:-1;;;4283:90:101;;;;;;;;;4492:11;;;;;:20;;4611:17;;4402:16;;;;4611:17;;4384:15;4654;;;;4743:22;;4740:2;;;4830:7;4819:9;4815:23;4810:3;4806:33;4798:6;4794:46;4784:56;;4740:2;4961:14;;:29;;;;-1:-1:-1;4979:11:101;;4961:29;4959:32;4951:79;;;;-1:-1:-1;;;4951:79:101;;;;;;;;;5085:14;;:29;;;;;5113:1;5103:7;:11;5085:29;5083:32;5075:70;;;;-1:-1:-1;;;5075:70:101;;;;;;;;2579:491:92;2688:13;;:::i;:::-;2717:34;2754:22;:13;:20;:22::i;:::-;2717:59;;2794:7;:14;2812:1;2794:19;2786:56;;;;-1:-1:-1;;;2786:56:92;;;;;;;;;2853:20;;:::i;:::-;2876:93;;;;;;;;2909:19;:7;2917:1;2909:10;;;;;;;:19;2876:93;;;;2948:7;2956:1;2948:10;;;;;;;;;;;;;;2876:93;;;2853:116;;2988:6;:17;;;3009:1;2988:22;;2980:60;;;;-1:-1:-1;;;2980:60:92;;;;;;;;5390:609:101;5520:8;;5453:7;;5532:2;5520:14;5512:49;;;;-1:-1:-1;;;5512:49:101;;;;;;;;;5580:12;5587:4;5580:6;:12::i;:::-;5579:13;5571:49;;;;-1:-1:-1;;;5571:49:101;;;;;;;;;5632:15;5649:14;5667:34;5689:4;:11;;;5667:21;:34::i;:::-;5631:70;;;;5719:7;5730:2;5719:13;5711:56;;;;-1:-1:-1;;;5711:56:101;;;;;;;;;5799:11;;;;:20;5942:17;;-1:-1:-1;;5390:609:101;;;:::o;1004:732:91:-;1121:13;;:::i;:::-;1150:35;1188:27;:13;:18;;;:25;:27::i;:::-;1150:65;;1233:8;:15;1252:1;1233:20;1225:62;;;;-1:-1:-1;;;1225:62:91;;;;;;;;;1298:24;;:::i;:::-;1325:213;;;;;;;;1358:13;:24;;;1325:213;;;;1417:23;:8;1426:1;1417:11;;;;;;;;;;;;;;:21;:23::i;:::-;1409:32;;1325:213;;;;;;;1462:23;:8;1471:1;1462:11;;;;;;;:23;-1:-1:-1;;;;;1325:213:91;;;;;1507:20;:8;1516:1;1507:11;;;;;;;:20;1325:213;;1557:17;;;;1298:240;;-1:-1:-1;1549:62:91;;;;-1:-1:-1;;;1549:62:91;;;;;;;;;1629:22;;;;-1:-1:-1;;1629:36:91;1621:81;;;;-1:-1:-1;;;1621:81:91;;;;;;;;1292:203:49;1375:10;;:::i;:::-;1397:14;1414:21;247:4;1428:6;1414:21;:13;:21;:::i;:::-;1397:38;;1453:35;1460:9;1471:7;:16;;;1453:6;:35::i;2606:326:117:-;2664:7;2761:1;2757;:5;2749:44;;;;-1:-1:-1;;;2749:44:117;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:117:o;2447:389:101:-;2527:8;;2507:4;;2523:31;;-1:-1:-1;2549:5:101;2542:12;;2523:31;2603:11;;;;2720:13;;2565:11;2712:22;;721:4;2758:24;;2754:54;;;2803:5;2796:12;;;;;;2754:54;-1:-1:-1;2825:4:101;;2447:389;-1:-1:-1;;;2447:389:101:o;7131:4008::-;7404:13;;7201:7;;;;;;;;7396:22;;611:4;7442:26;;7438:3654;;;7537:1;7521:17;;7561:1;7552:10;;7438:3654;;;611:4;7583:27;-1:-1:-1;7583:27:101;;;:56;;-1:-1:-1;666:4:101;7614:25;;7583:56;7579:3513;;;-1:-1:-1;;7825:32:101;;;-1:-1:-1;7892:1:101;7875:18;;7871:396;;;8073:1;8061:14;;8055:21;7912:13;8047:30;611:4;8191:27;;;8183:69;;;;-1:-1:-1;;;8183:69:101;;;;;;;;;7871:396;;8289:1;8280:10;;7579:3513;;;666:4;8311:26;-1:-1:-1;8311:26:101;;;:54;;-1:-1:-1;721:4:101;8341:24;;8311:54;8307:2785;;;8893:1;8881:14;;;;9011:13;;8881:14;;9039:9;9035:25;;;8776:4;9035:25;9030:3;9026:35;9007:55;;9096:31;;;-1:-1:-1;;9096:31:101;;-1:-1:-1;8769:5:101;;8577:15;9153:22;-1:-1:-1;;8765:16:101;;9269:10;9261:86;;;;-1:-1:-1;;;9261:86:101;;;;;;;;;831:2;9431:23;;9423:68;;;;-1:-1:-1;;;9423:68:101;;;;;;;;;9562:1;9550:13;;-1:-1:-1;8307:2785:101;;-1:-1:-1;;8307:2785:101;;721:4;9584:25;-1:-1:-1;9584:25:101;;;:52;;-1:-1:-1;776:4:101;9613:23;;9584:52;9580:1512;;;-1:-1:-1;;9820:30:101;;;-1:-1:-1;9849:1:101;;-1:-1:-1;9580:1512:101;;;10415:1;10403:14;;;;10533:13;;10403:14;;10561:9;10557:25;;;10298:4;10557:25;10552:3;10548:35;10529:55;;10618:31;;;-1:-1:-1;;10618:31:101;;-1:-1:-1;10291:5:101;;10099:15;10675:22;-1:-1:-1;;10287:16:101;;10791:10;10783:84;;;;-1:-1:-1;;;10783:84:101;;;;;;;;;831:2;10951:23;;10943:66;;;;-1:-1:-1;;;10943:66:101;;;;;;;;;11080:1;11068:13;;-1:-1:-1;;;9580:1512:101;-1:-1:-1;11110:13:101;;-1:-1:-1;11125:6:101;-1:-1:-1;7131:4008:101;;;:::o;6188:587::-;6258:7;6277:13;6293:1;6277:17;;6307:14;6325:34;6347:4;:11;;;6325:21;:34::i;:::-;6387:11;;;;6448:8;;6304:55;;-1:-1:-1;6387:20:101;;;;-1:-1:-1;6434:22:101;6466:280;6483:6;6473:7;:16;6466:280;;;6506:15;6527:30;6549:7;6527:21;:30::i;:::-;-1:-1:-1;6581:17:101;;;;6505:52;-1:-1:-1;6620:17:101;;;;6612:102;;;;-1:-1:-1;;;6612:102:101;;;;;;;;;-1:-1:-1;6728:7:101;;;;;6466:280;;;-1:-1:-1;6763:5:101;;6188:587;-1:-1:-1;;;;6188:587:101:o;3052:675::-;3142:8;;3115:7;;3154:2;3142:14;3134:49;;;;-1:-1:-1;;;3134:49:101;;;;;;;;;3202:12;3209:4;3202:6;:12::i;:::-;3201:13;3193:49;;;;-1:-1:-1;;;3193:49:101;;;;;;;;;3254:15;3271:14;3289:34;3311:4;:11;;;3289:21;:34::i;:::-;3253:70;;;;3341:7;3352:2;3341:13;3333:56;;;;-1:-1:-1;;;3333:56:101;;;;;;;;;3421:11;;;;:20;3564:17;-1:-1:-1;;;3653:25:101;;;-1:-1:-1;;3052:675:101;;;:::o;1065:19331:46:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1065:19331:46;;;-1:-1:-1;1065:19331:46;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;1065:19331:46;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1065:19331:46;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;1065:19331:46;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;1065:19331:46;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;5:130:-1;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;491:802;;645:3;638:4;630:6;626:17;622:27;612:2;;663:1;660;653:12;612:2;693:6;687:13;715:106;730:90;813:6;730:90;;;715:106;;;706:115;;838:5;863:6;856:5;849:21;893:4;885:6;881:17;871:27;;915:4;910:3;906:14;899:21;;968:6;1016:3;1007:5;999:6;995:18;990:3;986:28;983:37;980:2;;;1033:1;1030;1023:12;980:2;1058:1;1043:244;1068:6;1065:1;1062:13;1043:244;;;1126:3;1148:74;1218:3;1206:10;1148:74;;;1136:87;;-1:-1;1246:4;1237:14;;;;1274:5;1265:15;;;;;1090:1;1083:9;1043:244;;;1047:14;605:688;;;;;;;;1353:707;;1501:3;1494:4;1486:6;1482:17;1478:27;1468:2;;1519:1;1516;1509:12;1468:2;1543:3;1561:100;1576:84;1653:6;1576:84;;1561:100;1552:109;;1678:5;1737:6;1784:3;1776:4;1768:6;1764:17;1759:3;1755:27;1752:36;1749:2;;;1801:1;1798;1791:12;1749:2;1826:1;1811:243;1836:6;1833:1;1830:13;1811:243;;;1894:3;1916:74;1986:3;1974:10;1916:74;;;1904:87;;-1:-1;2014:4;2005:14;;;;2042:4;2033:14;;;;;1858:1;1851:9;1811:243;;2068:128;2143:13;;2161:30;2143:13;2161:30;;2203:130;2270:20;;2295:33;2270:20;2295:33;;2340:134;2418:13;;2436:33;2418:13;2436:33;;2482:440;;2583:3;2576:4;2568:6;2564:17;2560:27;2550:2;;2601:1;2598;2591:12;2550:2;2638:6;2625:20;2660:64;2675:48;2716:6;2675:48;;2660:64;2651:73;;2744:6;2737:5;2730:21;2780:4;2772:6;2768:17;2813:4;2806:5;2802:16;2848:3;2839:6;2834:3;2830:16;2827:25;2824:2;;;2865:1;2862;2855:12;2824:2;2875:41;2909:6;2904:3;2899;2875:41;;;2543:379;;;;;;;;2930:188;3035:13;;3053:60;3035:13;3053:60;;3172:1752;;3298:5;3286:9;3281:3;3277:19;3273:31;3270:2;;;3317:1;3314;3307:12;3270:2;3335:21;3350:5;3335:21;;;3326:30;-1:-1;3413:1;3444:57;3497:3;3477:9;3444:57;;;3420:82;;-1:-1;3577:2;3610:59;3665:3;3641:22;;;3610:59;;;3603:4;3596:5;3592:16;3585:85;3523:158;3734:2;3767:60;3823:3;3814:6;3803:9;3799:22;3767:60;;;3760:4;3753:5;3749:16;3742:86;3691:148;3893:2;3926:60;3982:3;3973:6;3962:9;3958:22;3926:60;;;3919:4;3912:5;3908:16;3901:86;3849:149;4050:3;4084:105;4185:3;4176:6;4165:9;4161:22;4084:105;;;4077:4;4070:5;4066:16;4059:131;4008:193;4254:3;4288:105;4389:3;4380:6;4369:9;4365:22;4288:105;;;4281:4;4274:5;4270:16;4263:131;4211:194;4460:4;4495:68;4559:3;4550:6;4539:9;4535:22;4495:68;;;4488:4;4481:5;4477:16;4470:94;4415:160;4629:4;4664:60;4720:3;4711:6;4700:9;4696:22;4664:60;;;4657:4;4650:5;4646:16;4639:86;4585:151;4806:4;4842:60;4898:3;4889:6;4878:9;4874:22;4842:60;;;4834:5;4827;4823:17;4816:87;4746:168;3264:1660;;;;;4978:1000;;5104:4;5092:9;5087:3;5083:19;5079:30;5076:2;;;5122:1;5119;5112:12;5076:2;5140:20;5155:4;5140:20;;;5131:29;-1:-1;5214:1;5245:60;5301:3;5281:9;5245:60;;;5221:85;;-1:-1;5373:2;5406:68;5470:3;5446:22;;;5406:68;;;5399:4;5392:5;5388:16;5381:94;5327:159;5537:2;5570:60;5626:3;5617:6;5606:9;5602:22;5570:60;;;5563:4;5556:5;5552:16;5545:86;5496:146;5694:2;5727:60;5783:3;5774:6;5763:9;5759:22;5727:60;;;5720:4;5713:5;5709:16;5702:86;5652:147;5862:3;5896:60;5952:3;5943:6;5932:9;5928:22;5896:60;;;5889:4;5882:5;5878:16;5871:86;5809:159;5070:908;;;;;5985:128;6051:20;;6076:32;6051:20;6076:32;;6398:132;6475:13;;6493:32;6475:13;6493:32;;6537:130;6613:13;;6631:31;6613:13;6631:31;;6674:241;;6778:2;6766:9;6757:7;6753:23;6749:32;6746:2;;;6794:1;6791;6784:12;6746:2;6829:1;6846:53;6891:7;6871:9;6846:53;;6922:491;;;;7060:2;7048:9;7039:7;7035:23;7031:32;7028:2;;;7076:1;7073;7066:12;7028:2;7111:1;7128:53;7173:7;7153:9;7128:53;;;7118:63;;7090:97;7218:2;7236:53;7281:7;7272:6;7261:9;7257:22;7236:53;;;7226:63;;7197:98;7326:2;7344:53;7389:7;7380:6;7369:9;7365:22;7344:53;;;7334:63;;7305:98;7022:391;;;;;;7420:366;;;7541:2;7529:9;7520:7;7516:23;7512:32;7509:2;;;7557:1;7554;7547:12;7509:2;7592:1;7609:53;7654:7;7634:9;7609:53;;;7599:63;;7571:97;7699:2;7717:53;7762:7;7753:6;7742:9;7738:22;7717:53;;;7707:63;;7678:98;7503:283;;;;;;7793:444;;7959:2;7947:9;7938:7;7934:23;7930:32;7927:2;;;7975:1;7972;7965:12;7927:2;8010:24;;-1:-1;;;;;8043:30;;8040:2;;;8086:1;8083;8076:12;8040:2;8106:115;8213:7;8204:6;8193:9;8189:22;8106:115;;8244:257;;8356:2;8344:9;8335:7;8331:23;8327:32;8324:2;;;8372:1;8369;8362:12;8324:2;8407:1;8424:61;8477:7;8457:9;8424:61;;8508:399;;;8640:2;8628:9;8619:7;8615:23;8611:32;8608:2;;;8656:1;8653;8646:12;8608:2;8691:1;8708:64;8764:7;8744:9;8708:64;;;8698:74;;8670:108;8809:2;8827:64;8883:7;8874:6;8863:9;8859:22;8827:64;;8914:317;;9056:2;9044:9;9035:7;9031:23;9027:32;9024:2;;;9072:1;9069;9062:12;9024:2;9107:1;9124:91;9207:7;9187:9;9124:91;;9238:241;;9342:2;9330:9;9321:7;9317:23;9313:32;9310:2;;;9358:1;9355;9348:12;9310:2;9393:1;9410:53;9455:7;9435:9;9410:53;;9486:263;;9601:2;9589:9;9580:7;9576:23;9572:32;9569:2;;;9617:1;9614;9607:12;9569:2;9652:1;9669:64;9725:7;9705:9;9669:64;;9756:470;;;9886:2;9874:9;9865:7;9861:23;9857:32;9854:2;;;9902:1;9899;9892:12;9854:2;9937:1;9954:53;9999:7;9979:9;9954:53;;;9944:63;;9916:97;10072:2;10061:9;10057:18;10044:32;-1:-1;;;;;10088:6;10085:30;10082:2;;;10128:1;10125;10118:12;10082:2;10148:62;10202:7;10193:6;10182:9;10178:22;10148:62;;10233:699;;;;10389:2;10377:9;10368:7;10364:23;10360:32;10357:2;;;10405:1;10402;10395:12;10357:2;10440:1;10457:53;10502:7;10482:9;10457:53;;;10447:63;;10419:97;10575:2;10564:9;10560:18;10547:32;-1:-1;;;;;10591:6;10588:30;10585:2;;;10631:1;10628;10621:12;10585:2;10651:62;10705:7;10696:6;10685:9;10681:22;10651:62;;;10641:72;;10526:193;10778:2;10767:9;10763:18;10750:32;-1:-1;;;;;10794:6;10791:30;10788:2;;;10834:1;10831;10824:12;10788:2;10854:62;10908:7;10899:6;10888:9;10884:22;10854:62;;10939:1303;;;;;;;;11170:3;11158:9;11149:7;11145:23;11141:33;11138:2;;;11187:1;11184;11177:12;11138:2;11222:1;11239:53;11284:7;11264:9;11239:53;;;11229:63;;11201:97;11357:2;11346:9;11342:18;11329:32;-1:-1;;;;;11373:6;11370:30;11367:2;;;11413:1;11410;11403:12;11367:2;11433:62;11487:7;11478:6;11467:9;11463:22;11433:62;;;11423:72;;11308:193;11532:2;11550:52;11594:7;11585:6;11574:9;11570:22;11550:52;;;11540:62;;11511:97;11667:2;11656:9;11652:18;11639:32;-1:-1;;;;;11683:6;11680:30;11677:2;;;11723:1;11720;11713:12;11677:2;11743:62;11797:7;11788:6;11777:9;11773:22;11743:62;;;11733:72;;11618:193;11842:3;11861:52;11905:7;11896:6;11885:9;11881:22;11861:52;;;11851:62;;11821:98;11978:3;11967:9;11963:19;11950:33;-1:-1;;;;;11995:6;11992:30;11989:2;;;12035:1;12032;12025:12;11989:2;12055:62;12109:7;12100:6;12089:9;12085:22;12055:62;;;12045:72;;11929:194;12154:3;12173:53;12218:7;12209:6;12198:9;12194:22;12173:53;;;12163:63;;12133:99;11132:1110;;;;;;;;;;;12249:825;;;;;12422:3;12410:9;12401:7;12397:23;12393:33;12390:2;;;12439:1;12436;12429:12;12390:2;12474:1;12491:53;12536:7;12516:9;12491:53;;;12481:63;;12453:97;12581:2;12599:53;12644:7;12635:6;12624:9;12620:22;12599:53;;;12589:63;;12560:98;12717:2;12706:9;12702:18;12689:32;-1:-1;;;;;12733:6;12730:30;12727:2;;;12773:1;12770;12763:12;12727:2;12793:62;12847:7;12838:6;12827:9;12823:22;12793:62;;;12783:72;;12668:193;12920:2;12909:9;12905:18;12892:32;-1:-1;;;;;12936:6;12933:30;12930:2;;;12976:1;12973;12966:12;12930:2;12996:62;13050:7;13041:6;13030:9;13026:22;12996:62;;;12986:72;;12871:193;12384:690;;;;;;;;13081:259;;13194:2;13182:9;13173:7;13169:23;13165:32;13162:2;;;13210:1;13207;13200:12;13162:2;13245:1;13262:62;13316:7;13296:9;13262:62;;13348:173;;13435:46;13477:3;13469:6;13435:46;;;-1:-1;;13510:4;13501:14;;13428:93;13529:142;13620:45;13659:5;13620:45;;;13615:3;13608:58;13602:69;;;13678:137;13777:32;13803:5;13777:32;;13822:184;13939:61;13967:32;13993:5;13967:32;;;13939:61;;14164:690;;14309:54;14357:5;14309:54;;;14376:86;14455:6;14450:3;14376:86;;;14369:93;;14483:56;14533:5;14483:56;;;14559:7;14587:1;14572:260;14597:6;14594:1;14591:13;14572:260;;;14664:6;14658:13;14685:63;14744:3;14729:13;14685:63;;;14678:70;;14765:60;14818:6;14765:60;;;14755:70;-1:-1;;14619:1;14612:9;14572:260;;;-1:-1;14845:3;;14288:566;-1:-1;;;;;14288:566;14862:104;14939:21;14954:5;14939:21;;14973:148;15072:43;15091:23;15108:5;15091:23;;;15072:43;;15128:152;15229:45;15249:24;15267:5;15249:24;;15287:343;;15397:38;15429:5;15397:38;;;15447:70;15510:6;15505:3;15447:70;;;15440:77;;15522:52;15567:6;15562:3;15555:4;15548:5;15544:16;15522:52;;;15595:29;15617:6;15595:29;;;15586:39;;;;15377:253;-1:-1;;;15377:253;15637:356;;15765:38;15797:5;15765:38;;;15815:88;15896:6;15891:3;15815:88;;;15808:95;;15908:52;15953:6;15948:3;15941:4;15934:5;15930:16;15908:52;;;15972:16;;;;;15745:248;-1:-1;;15745:248;16365:879;;16500:5;16494:12;16534:1;16523:9;16519:17;16547:1;16542:267;;;;16820:1;16815:423;;;;16512:726;;16542:267;16620:4;16616:1;16605:9;16601:17;16597:28;16639:88;16720:6;16715:3;16639:88;;;-1:-1;;16746:25;;16734:38;;16632:95;-1:-1;16786:16;;;-1:-1;16542:267;;16815:423;16884:1;16873:9;16869:17;16900:88;16981:6;16976:3;16900:88;;;16893:95;;17010:37;17041:5;17010:37;;;17063:1;17071:130;17085:6;17082:1;17079:13;17071:130;;;17144:14;;17131:11;;;17124:35;17191:1;17178:15;;;;17107:4;17100:12;17071:130;;;-1:-1;;17215:16;;;-1:-1;16512:726;;16470:774;;;;;;17252:174;17359:61;17414:5;17359:61;;17820:364;;17980:67;18044:2;18039:3;17980:67;;;18080:66;18060:87;;18175:2;18166:12;;17966:218;-1:-1;;17966:218;18193:465;;18353:67;18417:2;18412:3;18353:67;;;18453:66;18433:87;;-1:-1;;;18549:2;18540:12;;18533:88;18649:2;18640:12;;18339:319;-1:-1;;18339:319;18667:364;;18827:67;18891:2;18886:3;18827:67;;;18927:66;18907:87;;19022:2;19013:12;;18813:218;-1:-1;;18813:218;19040:465;;19200:67;19264:2;19259:3;19200:67;;;19300:66;19280:87;;-1:-1;;;19396:2;19387:12;;19380:88;19496:2;19487:12;;19186:319;-1:-1;;19186:319;19514:364;;19674:67;19738:2;19733:3;19674:67;;;19774:66;19754:87;;19869:2;19860:12;;19660:218;-1:-1;;19660:218;19887:465;;20047:67;20111:2;20106:3;20047:67;;;20147:66;20127:87;;-1:-1;;;20243:2;20234:12;;20227:88;20343:2;20334:12;;20033:319;-1:-1;;20033:319;20361:465;;20521:67;20585:2;20580:3;20521:67;;;20621:66;20601:87;;20722:66;20717:2;20708:12;;20701:88;20817:2;20808:12;;20507:319;-1:-1;;20507:319;20835:465;;20995:67;21059:2;21054:3;20995:67;;;21095:66;21075:87;;-1:-1;;;21191:2;21182:12;;21175:88;21291:2;21282:12;;20981:319;-1:-1;;20981:319;21309:364;;21469:67;21533:2;21528:3;21469:67;;;21569:66;21549:87;;21664:2;21655:12;;21455:218;-1:-1;;21455:218;21682:465;;21842:67;21906:2;21901:3;21842:67;;;21942:66;21922:87;;22043:66;22038:2;22029:12;;22022:88;22138:2;22129:12;;21828:319;-1:-1;;21828:319;22156:364;;22316:67;22380:2;22375:3;22316:67;;;22416:66;22396:87;;22511:2;22502:12;;22302:218;-1:-1;;22302:218;22529:465;;22689:67;22753:2;22748:3;22689:67;;;22789:66;22769:87;;-1:-1;;;22885:2;22876:12;;22869:88;22985:2;22976:12;;22675:319;-1:-1;;22675:319;23003:465;;23163:67;23227:2;23222:3;23163:67;;;23263:66;23243:87;;-1:-1;;;23359:2;23350:12;;23343:88;23459:2;23450:12;;23149:319;-1:-1;;23149:319;23477:465;;23637:67;23701:2;23696:3;23637:67;;;23737:66;23717:87;;-1:-1;;;23833:2;23824:12;;23817:88;23933:2;23924:12;;23623:319;-1:-1;;23623:319;23951:465;;24111:67;24175:2;24170:3;24111:67;;;24211:66;24191:87;;-1:-1;;;24307:2;24298:12;;24291:88;24407:2;24398:12;;24097:319;-1:-1;;24097:319;24425:364;;24585:67;24649:2;24644:3;24585:67;;;-1:-1;;;24665:87;;24780:2;24771:12;;24571:218;-1:-1;;24571:218;24798:364;;24958:67;25022:2;25017:3;24958:67;;;25058:66;25038:87;;25153:2;25144:12;;24944:218;-1:-1;;24944:218;25171:364;;25331:67;25395:2;25390:3;25331:67;;;-1:-1;;;25411:87;;25526:2;25517:12;;25317:218;-1:-1;;25317:218;25544:364;;25704:67;25768:2;25763:3;25704:67;;;25804:66;25784:87;;25899:2;25890:12;;25690:218;-1:-1;;25690:218;25917:364;;26077:67;26141:2;26136:3;26077:67;;;26177:66;26157:87;;26272:2;26263:12;;26063:218;-1:-1;;26063:218;26290:465;;26450:67;26514:2;26509:3;26450:67;;;26550:66;26530:87;;-1:-1;;;26646:2;26637:12;;26630:88;26746:2;26737:12;;26436:319;-1:-1;;26436:319;26764:465;;26924:67;26988:2;26983:3;26924:67;;;27024:66;27004:87;;-1:-1;;;27120:2;27111:12;;27104:88;27220:2;27211:12;;26910:319;-1:-1;;26910:319;27238:364;;27398:67;27462:2;27457:3;27398:67;;;27498:66;27478:87;;27593:2;27584:12;;27384:218;-1:-1;;27384:218;27611:465;;27771:67;27835:2;27830:3;27771:67;;;27871:66;27851:87;;27972:66;27967:2;27958:12;;27951:88;28067:2;28058:12;;27757:319;-1:-1;;27757:319;28085:364;;28245:67;28309:2;28304:3;28245:67;;;28345:66;28325:87;;28440:2;28431:12;;28231:218;-1:-1;;28231:218;28458:465;;28618:67;28682:2;28677:3;28618:67;;;28718:66;28698:87;;-1:-1;;;28814:2;28805:12;;28798:88;28914:2;28905:12;;28604:319;-1:-1;;28604:319;28932:364;;29092:67;29156:2;29151:3;29092:67;;;29192:66;29172:87;;29287:2;29278:12;;29078:218;-1:-1;;29078:218;29305:364;;29465:67;29529:2;29524:3;29465:67;;;29565:66;29545:87;;29660:2;29651:12;;29451:218;-1:-1;;29451:218;29678:364;;29838:67;29902:2;29897:3;29838:67;;;29938:66;29918:87;;30033:2;30024:12;;29824:218;-1:-1;;29824:218;30051:364;;30211:67;30275:2;30270:3;30211:67;;;30311:66;30291:87;;30406:2;30397:12;;30197:218;-1:-1;;30197:218;30424:465;;30584:67;30648:2;30643:3;30584:67;;;30684:66;30664:87;;-1:-1;;;30780:2;30771:12;;30764:88;30880:2;30871:12;;30570:319;-1:-1;;30570:319;30898:465;;31058:67;31122:2;31117:3;31058:67;;;31158:66;31138:87;;-1:-1;;;31254:2;31245:12;;31238:88;31354:2;31345:12;;31044:319;-1:-1;;31044:319;31372:465;;31532:67;31596:2;31591:3;31532:67;;;31632:66;31612:87;;-1:-1;;;31728:2;31719:12;;31712:88;31828:2;31819:12;;31518:319;-1:-1;;31518:319;31846:364;;32006:67;32070:2;32065:3;32006:67;;;32106:66;32086:87;;32201:2;32192:12;;31992:218;-1:-1;;31992:218;32219:364;;32379:67;32443:2;32438:3;32379:67;;;32479:66;32459:87;;32574:2;32565:12;;32365:218;-1:-1;;32365:218;32592:364;;32752:67;32816:2;32811:3;32752:67;;;32852:66;32832:87;;32947:2;32938:12;;32738:218;-1:-1;;32738:218;32965:465;;33125:67;33189:2;33184:3;33125:67;;;33225:66;33205:87;;-1:-1;;;33321:2;33312:12;;33305:88;33421:2;33412:12;;33111:319;-1:-1;;33111:319;33439:465;;33599:67;33663:2;33658:3;33599:67;;;33699:66;33679:87;;-1:-1;;;33795:2;33786:12;;33779:88;33895:2;33886:12;;33585:319;-1:-1;;33585:319;33913:465;;34073:67;34137:2;34132:3;34073:67;;;34173:66;34153:87;;-1:-1;;;34269:2;34260:12;;34253:88;34369:2;34360:12;;34059:319;-1:-1;;34059:319;34387:566;;34547:67;34611:2;34606:3;34547:67;;;34647:66;34627:87;;34748:66;34743:2;34734:12;;34727:88;-1:-1;;;34844:2;34835:12;;34828:88;34944:2;34935:12;;34533:420;-1:-1;;34533:420;34962:465;;35122:67;35186:2;35181:3;35122:67;;;35222:66;35202:87;;-1:-1;;;35318:2;35309:12;;35302:88;35418:2;35409:12;;35108:319;-1:-1;;35108:319;35436:364;;35596:67;35660:2;35655:3;35596:67;;;35696:66;35676:87;;35791:2;35782:12;;35582:218;-1:-1;;35582:218;35809:364;;35969:67;36033:2;36028:3;35969:67;;;36069:66;36049:87;;36164:2;36155:12;;35955:218;-1:-1;;35955:218;36182:364;;36342:67;36406:2;36401:3;36342:67;;;36442:66;36422:87;;36537:2;36528:12;;36328:218;-1:-1;;36328:218;36555:364;;36715:67;36779:2;36774:3;36715:67;;;-1:-1;;;36795:87;;36910:2;36901:12;;36701:218;-1:-1;;36701:218;36928:465;;37088:67;37152:2;37147:3;37088:67;;;37188:66;37168:87;;-1:-1;;;37284:2;37275:12;;37268:88;37384:2;37375:12;;37074:319;-1:-1;;37074:319;37402:364;;37562:67;37626:2;37621:3;37562:67;;;37662:66;37642:87;;37757:2;37748:12;;37548:218;-1:-1;;37548:218;37775:364;;37935:67;37999:2;37994:3;37935:67;;;38035:66;38015:87;;38130:2;38121:12;;37921:218;-1:-1;;37921:218;38148:364;;38308:67;38372:2;38367:3;38308:67;;;38408:66;38388:87;;38503:2;38494:12;;38294:218;-1:-1;;38294:218;38521:465;;38681:67;38745:2;38740:3;38681:67;;;38781:66;38761:87;;38882:66;38877:2;38868:12;;38861:88;38977:2;38968:12;;38667:319;-1:-1;;38667:319;38995:364;;39155:67;39219:2;39214:3;39155:67;;;-1:-1;;;39235:87;;39350:2;39341:12;;39141:218;-1:-1;;39141:218;39368:364;;39528:67;39592:2;39587:3;39528:67;;;39628:66;39608:87;;39723:2;39714:12;;39514:218;-1:-1;;39514:218;39741:465;;39901:67;39965:2;39960:3;39901:67;;;40001:66;39981:87;;40102:66;40097:2;40088:12;;40081:88;40197:2;40188:12;;39887:319;-1:-1;;39887:319;40215:364;;40375:67;40439:2;40434:3;40375:67;;;40475:66;40455:87;;40570:2;40561:12;;40361:218;-1:-1;;40361:218;40588:465;;40748:67;40812:2;40807:3;40748:67;;;40848:66;40828:87;;-1:-1;;;40944:2;40935:12;;40928:88;41044:2;41035:12;;40734:319;-1:-1;;40734:319;41062:364;;41222:67;41286:2;41281:3;41222:67;;;-1:-1;;;41302:87;;41417:2;41408:12;;41208:218;-1:-1;;41208:218;41435:465;;41595:67;41659:2;41654:3;41595:67;;;41695:66;41675:87;;-1:-1;;;41791:2;41782:12;;41775:88;41891:2;41882:12;;41581:319;-1:-1;;41581:319;41909:364;;42069:67;42133:2;42128:3;42069:67;;;42169:66;42149:87;;42264:2;42255:12;;42055:218;-1:-1;;42055:218;42282:364;;42442:67;42506:2;42501:3;42442:67;;;-1:-1;;;42522:87;;42637:2;42628:12;;42428:218;-1:-1;;42428:218;42655:364;;42815:67;42879:2;42874:3;42815:67;;;-1:-1;;;42895:87;;43010:2;43001:12;;42801:218;-1:-1;;42801:218;43028:364;;43188:67;43252:2;43247:3;43188:67;;;43288:66;43268:87;;43383:2;43374:12;;43174:218;-1:-1;;43174:218;43401:364;;43561:67;43625:2;43620:3;43561:67;;;43661:66;43641:87;;43756:2;43747:12;;43547:218;-1:-1;;43547:218;43774:465;;43934:67;43998:2;43993:3;43934:67;;;44034:66;44014:87;;-1:-1;;;44130:2;44121:12;;44114:88;44230:2;44221:12;;43920:319;-1:-1;;43920:319;44248:296;;44425:83;44506:1;44501:3;44425:83;;44553:465;;44713:67;44777:2;44772:3;44713:67;;;44813:66;44793:87;;-1:-1;;;44909:2;44900:12;;44893:88;45009:2;45000:12;;44699:319;-1:-1;;44699:319;45027:465;;45187:67;45251:2;45246:3;45187:67;;;45287:66;45267:87;;-1:-1;;;45383:2;45374:12;;45367:88;45483:2;45474:12;;45173:319;-1:-1;;45173:319;45501:465;;45661:67;45725:2;45720:3;45661:67;;;45761:66;45741:87;;-1:-1;;;45857:2;45848:12;;45841:88;45957:2;45948:12;;45647:319;-1:-1;;45647:319;45975:364;;46135:67;46199:2;46194:3;46135:67;;;46235:66;46215:87;;46330:2;46321:12;;46121:218;-1:-1;;46121:218;46348:364;;46508:67;46572:2;46567:3;46508:67;;;46608:66;46588:87;;46703:2;46694:12;;46494:218;-1:-1;;46494:218;46721:364;;46881:67;46945:2;46940:3;46881:67;;;46981:66;46961:87;;47076:2;47067:12;;46867:218;-1:-1;;46867:218;47094:364;;47254:67;47318:2;47313:3;47254:67;;;47354:66;47334:87;;47449:2;47440:12;;47240:218;-1:-1;;47240:218;47467:465;;47627:67;47691:2;47686:3;47627:67;;;47727:66;47707:87;;-1:-1;;;47823:2;47814:12;;47807:88;47923:2;47914:12;;47613:319;-1:-1;;47613:319;47941:465;;48101:67;48165:2;48160:3;48101:67;;;48201:66;48181:87;;-1:-1;;;48297:2;48288:12;;48281:88;48397:2;48388:12;;48087:319;-1:-1;;48087:319;48415:364;;48575:67;48639:2;48634:3;48575:67;;;48675:66;48655:87;;48770:2;48761:12;;48561:218;-1:-1;;48561:218;48788:364;;48948:67;49012:2;49007:3;48948:67;;;-1:-1;;;49028:87;;49143:2;49134:12;;48934:218;-1:-1;;48934:218;49161:465;;49321:67;49385:2;49380:3;49321:67;;;49421:66;49401:87;;-1:-1;;;49517:2;49508:12;;49501:88;49617:2;49608:12;;49307:319;-1:-1;;49307:319;49635:465;;49795:67;49859:2;49854:3;49795:67;;;49895:66;49875:87;;-1:-1;;;49991:2;49982:12;;49975:88;50091:2;50082:12;;49781:319;-1:-1;;49781:319;50109:465;;50269:67;50333:2;50328:3;50269:67;;;50369:66;50349:87;;-1:-1;;;50465:2;50456:12;;50449:88;50565:2;50556:12;;50255:319;-1:-1;;50255:319;50583:364;;50743:67;50807:2;50802:3;50743:67;;;50843:66;50823:87;;50938:2;50929:12;;50729:218;-1:-1;;50729:218;50956:364;;51116:67;51180:2;51175:3;51116:67;;;-1:-1;;;51196:87;;51311:2;51302:12;;51102:218;-1:-1;;51102:218;51329:465;;51489:67;51553:2;51548:3;51489:67;;;51589:66;51569:87;;-1:-1;;;51685:2;51676:12;;51669:88;51785:2;51776:12;;51475:319;-1:-1;;51475:319;51802:103;51875:24;51893:5;51875:24;;52032:110;52113:23;52130:5;52113:23;;52149:113;52232:24;52250:5;52232:24;;52269:124;52351:36;52381:5;52351:36;;52400:276;;52535:91;52622:3;52613:6;52535:91;;;-1:-1;52648:2;52639:12;;52523:153;-1:-1;52523:153;52683:517;;52856:73;52925:3;52916:6;52856:73;;;52951:1;52946:3;52942:11;52935:18;;52964:75;53035:3;53026:6;52964:75;;;53061:2;53056:3;53052:12;53045:19;;53075:75;53146:3;53137:6;53075:75;;;-1:-1;53172:2;53163:12;;52844:356;-1:-1;;;52844:356;53207:396;;53370:73;53439:3;53430:6;53370:73;;;53465:1;53460:3;53456:11;53449:18;;53485:93;53574:3;53565:6;53485:93;;53610:262;;53754:93;53843:3;53834:6;53754:93;;53879:256;;54020:90;54106:3;54097:6;54020:90;;54142:370;;54340:147;54483:3;54340:147;;54519:213;54637:2;54622:18;;54651:71;54626:9;54695:6;54651:71;;54739:229;54865:2;54850:18;;54879:79;54854:9;54931:6;54879:79;;54975:340;55129:2;55114:18;;55143:79;55118:9;55195:6;55143:79;;;55233:72;55301:2;55290:9;55286:18;55277:6;55233:72;;55322:1091;55660:3;55645:19;;55675:87;55649:9;55735:6;55675:87;;;55773:72;55841:2;55830:9;55826:18;55817:6;55773:72;;;55856;55924:2;55913:9;55909:18;55900:6;55856:72;;;55939;56007:2;55996:9;55992:18;55983:6;55939:72;;;56022:73;56090:3;56079:9;56075:19;56066:6;56022:73;;;56106;56174:3;56163:9;56159:19;56150:6;56106:73;;;56228:9;56222:4;56218:20;56212:3;56201:9;56197:19;56190:49;56253:72;56320:4;56311:6;56253:72;;;56245:80;;56336:67;56398:3;56387:9;56383:19;56374:6;56336:67;;;55631:782;;;;;;;;;;;;56420:435;56594:2;56579:18;;56608:71;56583:9;56652:6;56608:71;;;56690:72;56758:2;56747:9;56743:18;56734:6;56690:72;;;56773;56841:2;56830:9;56826:18;56817:6;56773:72;;56862:324;57008:2;56993:18;;57022:71;56997:9;57066:6;57022:71;;57193:659;57423:3;57408:19;;57438:71;57412:9;57482:6;57438:71;;;57520:72;57588:2;57577:9;57573:18;57564:6;57520:72;;;57603;57671:2;57660:9;57656:18;57647:6;57603:72;;;57686;57754:2;57743:9;57739:18;57730:6;57686:72;;;57769:73;57837:3;57826:9;57822:19;57813:6;57769:73;;;57394:458;;;;;;;;;57859:361;58027:2;58041:47;;;58012:18;;58102:108;58012:18;58196:6;58102:108;;58227:201;58339:2;58324:18;;58353:65;58328:9;58391:6;58353:65;;58435:907;58717:3;58732:47;;;58702:19;;58793:76;58702:19;58855:6;58793:76;;;58785:84;;58880:72;58948:2;58937:9;58933:18;58924:6;58880:72;;;59000:9;58994:4;58990:20;58985:2;58974:9;58970:18;58963:48;59025:76;59096:4;59087:6;59025:76;;;59017:84;;59112:70;59178:2;59167:9;59163:18;59154:6;59112:70;;;59231:9;59225:4;59221:20;59215:3;59204:9;59200:19;59193:49;59256:76;59327:4;59318:6;59256:76;;;59248:84;58688:654;-1:-1;;;;;;;58688:654;59349:499;59531:2;59545:47;;;59516:18;;59606:72;59516:18;59664:6;59606:72;;;59598:80;;59689:72;59757:2;59746:9;59742:18;59733:6;59689:72;;;59772:66;59834:2;59823:9;59819:18;59810:6;59772:66;;59855:261;59997:2;59982:18;;60011:95;59986:9;60079:6;60011:95;;60683:407;60874:2;60888:47;;;60859:18;;60949:131;60859:18;60949:131;;61097:407;61288:2;61302:47;;;61273:18;;61363:131;61273:18;61363:131;;61511:407;61702:2;61716:47;;;61687:18;;61777:131;61687:18;61777:131;;61925:407;62116:2;62130:47;;;62101:18;;62191:131;62101:18;62191:131;;62339:407;62530:2;62544:47;;;62515:18;;62605:131;62515:18;62605:131;;62753:407;62944:2;62958:47;;;62929:18;;63019:131;62929:18;63019:131;;63167:407;63358:2;63372:47;;;63343:18;;63433:131;63343:18;63433:131;;63581:407;63772:2;63786:47;;;63757:18;;63847:131;63757:18;63847:131;;63995:407;64186:2;64200:47;;;64171:18;;64261:131;64171:18;64261:131;;64409:407;64600:2;64614:47;;;64585:18;;64675:131;64585:18;64675:131;;64823:407;65014:2;65028:47;;;64999:18;;65089:131;64999:18;65089:131;;65237:407;65428:2;65442:47;;;65413:18;;65503:131;65413:18;65503:131;;65651:407;65842:2;65856:47;;;65827:18;;65917:131;65827:18;65917:131;;66065:407;66256:2;66270:47;;;66241:18;;66331:131;66241:18;66331:131;;66479:407;66670:2;66684:47;;;66655:18;;66745:131;66655:18;66745:131;;66893:407;67084:2;67098:47;;;67069:18;;67159:131;67069:18;67159:131;;67307:407;67498:2;67512:47;;;67483:18;;67573:131;67483:18;67573:131;;67721:407;67912:2;67926:47;;;67897:18;;67987:131;67897:18;67987:131;;68135:407;68326:2;68340:47;;;68311:18;;68401:131;68311:18;68401:131;;68549:407;68740:2;68754:47;;;68725:18;;68815:131;68725:18;68815:131;;68963:407;69154:2;69168:47;;;69139:18;;69229:131;69139:18;69229:131;;69377:407;69568:2;69582:47;;;69553:18;;69643:131;69553:18;69643:131;;69791:407;69982:2;69996:47;;;69967:18;;70057:131;69967:18;70057:131;;70205:407;70396:2;70410:47;;;70381:18;;70471:131;70381:18;70471:131;;70619:407;70810:2;70824:47;;;70795:18;;70885:131;70795:18;70885:131;;71033:407;71224:2;71238:47;;;71209:18;;71299:131;71209:18;71299:131;;71447:407;71638:2;71652:47;;;71623:18;;71713:131;71623:18;71713:131;;71861:407;72052:2;72066:47;;;72037:18;;72127:131;72037:18;72127:131;;72275:407;72466:2;72480:47;;;72451:18;;72541:131;72451:18;72541:131;;72689:407;72880:2;72894:47;;;72865:18;;72955:131;72865:18;72955:131;;73103:407;73294:2;73308:47;;;73279:18;;73369:131;73279:18;73369:131;;73517:407;73708:2;73722:47;;;73693:18;;73783:131;73693:18;73783:131;;73931:407;74122:2;74136:47;;;74107:18;;74197:131;74107:18;74197:131;;74345:407;74536:2;74550:47;;;74521:18;;74611:131;74521:18;74611:131;;74759:407;74950:2;74964:47;;;74935:18;;75025:131;74935:18;75025:131;;75173:407;75364:2;75378:47;;;75349:18;;75439:131;75349:18;75439:131;;75587:407;75778:2;75792:47;;;75763:18;;75853:131;75763:18;75853:131;;76001:407;76192:2;76206:47;;;76177:18;;76267:131;76177:18;76267:131;;76415:407;76606:2;76620:47;;;76591:18;;76681:131;76591:18;76681:131;;76829:407;77020:2;77034:47;;;77005:18;;77095:131;77005:18;77095:131;;77243:407;77434:2;77448:47;;;77419:18;;77509:131;77419:18;77509:131;;77657:407;77848:2;77862:47;;;77833:18;;77923:131;77833:18;77923:131;;78071:407;78262:2;78276:47;;;78247:18;;78337:131;78247:18;78337:131;;78485:407;78676:2;78690:47;;;78661:18;;78751:131;78661:18;78751:131;;78899:407;79090:2;79104:47;;;79075:18;;79165:131;79075:18;79165:131;;79313:407;79504:2;79518:47;;;79489:18;;79579:131;79489:18;79579:131;;79727:407;79918:2;79932:47;;;79903:18;;79993:131;79903:18;79993:131;;80141:407;80332:2;80346:47;;;80317:18;;80407:131;80317:18;80407:131;;80555:407;80746:2;80760:47;;;80731:18;;80821:131;80731:18;80821:131;;80969:407;81160:2;81174:47;;;81145:18;;81235:131;81145:18;81235:131;;81383:407;81574:2;81588:47;;;81559:18;;81649:131;81559:18;81649:131;;81797:407;81988:2;82002:47;;;81973:18;;82063:131;81973:18;82063:131;;82211:407;82402:2;82416:47;;;82387:18;;82477:131;82387:18;82477:131;;82625:407;82816:2;82830:47;;;82801:18;;82891:131;82801:18;82891:131;;83039:407;83230:2;83244:47;;;83215:18;;83305:131;83215:18;83305:131;;83453:407;83644:2;83658:47;;;83629:18;;83719:131;83629:18;83719:131;;83867:407;84058:2;84072:47;;;84043:18;;84133:131;84043:18;84133:131;;84281:407;84472:2;84486:47;;;84457:18;;84547:131;84457:18;84547:131;;84695:407;84886:2;84900:47;;;84871:18;;84961:131;84871:18;84961:131;;85109:407;85300:2;85314:47;;;85285:18;;85375:131;85285:18;85375:131;;85523:407;85714:2;85728:47;;;85699:18;;85789:131;85699:18;85789:131;;85937:407;86128:2;86142:47;;;86113:18;;86203:131;86113:18;86203:131;;86351:407;86542:2;86556:47;;;86527:18;;86617:131;86527:18;86617:131;;86765:407;86956:2;86970:47;;;86941:18;;87031:131;86941:18;87031:131;;87179:407;87370:2;87384:47;;;87355:18;;87445:131;87355:18;87445:131;;87593:407;87784:2;87798:47;;;87769:18;;87859:131;87769:18;87859:131;;88007:407;88198:2;88212:47;;;88183:18;;88273:131;88183:18;88273:131;;88421:407;88612:2;88626:47;;;88597:18;;88687:131;88597:18;88687:131;;88835:407;89026:2;89040:47;;;89011:18;;89101:131;89011:18;89101:131;;89249:407;89440:2;89454:47;;;89425:18;;89515:131;89425:18;89515:131;;89663:407;89854:2;89868:47;;;89839:18;;89929:131;89839:18;89929:131;;90077:407;90268:2;90282:47;;;90253:18;;90343:131;90253:18;90343:131;;90491:407;90682:2;90696:47;;;90667:18;;90757:131;90667:18;90757:131;;90905:407;91096:2;91110:47;;;91081:18;;91171:131;91081:18;91171:131;;91319:407;91510:2;91524:47;;;91495:18;;91585:131;91495:18;91585:131;;91733:407;91924:2;91938:47;;;91909:18;;91999:131;91909:18;91999:131;;92147:407;92338:2;92352:47;;;92323:18;;92413:131;92323:18;92413:131;;92561:407;92752:2;92766:47;;;92737:18;;92827:131;92737:18;92827:131;;92975:407;93166:2;93180:47;;;93151:18;;93241:131;93151:18;93241:131;;93389:407;93580:2;93594:47;;;93565:18;;93655:131;93565:18;93655:131;;93803:213;93921:2;93906:18;;93935:71;93910:9;93979:6;93935:71;;94023:324;94169:2;94154:18;;94183:71;94158:9;94227:6;94183:71;;;94265:72;94333:2;94322:9;94318:18;94309:6;94265:72;;94354:324;94500:2;94485:18;;94514:71;94489:9;94558:6;94514:71;;94685:211;94802:2;94787:18;;94816:70;94791:9;94859:6;94816:70;;94903:256;94965:2;94959:9;94991:17;;;-1:-1;;;;;95051:34;;95087:22;;;95048:62;95045:2;;;95123:1;95120;95113:12;95045:2;95139;95132:22;94943:216;;-1:-1;94943:216;95166:330;;-1:-1;;;;;95343:6;95340:30;95337:2;;;95383:1;95380;95373:12;95337:2;-1:-1;95418:4;95406:17;;;95471:15;;95274:222;95503:266;;-1:-1;;;;;95674:6;95671:30;95668:2;;;95714:1;95711;95704:12;95668:2;-1:-1;95749:4;95737:17;;95605:164;95776:321;;-1:-1;;;;;95911:6;95908:30;95905:2;;;95951:1;95948;95941:12;95905:2;-1:-1;96082:4;96018;95995:17;;;;-1:-1;;95991:33;96072:15;;95842:255;96104:151;96228:4;96219:14;;96176:79;96262:157;;96356:14;;;96398:4;96385:18;;;96315:104;96426:137;96529:12;;96500:63;96938:178;97056:19;;;97105:4;97096:14;;97049:67;97620:91;;97682:24;97700:5;97682:24;;97824:85;97890:13;97883:21;;97866:43;97916:144;-1:-1;;;;;;97977:78;;97960:100;98146:118;;98235:24;98253:5;98235:24;;98271:84;98343:6;98332:18;;98315:40;98362:121;-1:-1;;;;;98424:54;;98407:76;98569:96;-1:-1;;;;;98630:30;;98613:52;98672:81;98743:4;98732:16;;98715:38;98760:129;;98847:37;98878:5;98847:37;;100120:106;;100198:23;100215:5;100198:23;;100234:145;100315:6;100310:3;100305;100292:30;-1:-1;100371:1;100353:16;;100346:27;100285:94;100388:268;100453:1;100460:101;100474:6;100471:1;100468:13;100460:101;;;100541:11;;;100535:18;100522:11;;;100515:39;100496:2;100489:10;100460:101;;;100576:6;100573:1;100570:13;100567:2;;;-1:-1;;100641:1;100623:16;;100616:27;100437:219;100664:103;;100736:26;100756:5;100935:89;100999:20;101013:5;100999:20;;101031:97;101119:2;101099:14;-1:-1;;101095:28;;101079:49;101136:94;101210:2;101206:14;;101178:52;101238:117;101307:24;101325:5;101307:24;;;101300:5;101297:35;101287:2;;101346:1;101343;101336:12;101502:111;101568:21;101583:5;101568:21;;101620:117;101689:24;101707:5;101689:24;;101744:171;101840:51;101885:5;101840:51;;101922:115;101990:23;102007:5;101990:23;;102168:115;102236:23;102253:5;102236:23;;102290:113;102357:22;102373:5;102357:22;",
    "source": "pragma solidity 0.5.11;\npragma experimental ABIEncoderV2;\n\nimport \"./QuasarPool.sol\";\nimport \"../../src/framework/PlasmaFramework.sol\";\nimport \"../../src/exits/payment/PaymentExitGame.sol\";\nimport \"../../src/utils/PosLib.sol\";\nimport \"../../src/utils/Merkle.sol\";\nimport \"../../src/exits/utils/ExitId.sol\";\nimport \"../../src/exits/payment/routers/PaymentInFlightExitRouter.sol\";\nimport \"../../src/utils/SafeEthTransfer.sol\";\nimport \"../../src/transactions/PaymentTransactionModel.sol\";\nimport \"../../src/transactions/GenericTransaction.sol\";\nimport \"../../src/exits/utils/MoreVpFinalization.sol\";\nimport \"../../src/exits/interfaces/ISpendingCondition.sol\";\nimport \"../../src/exits/registries/SpendingConditionRegistry.sol\";\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\";\n\n/**\n * @title Quasar Contract\n * Implementation Doc - https://github.com/omgnetwork/research-workshop/blob/master/Incognito_fast_withdrawals.md\n*/\ncontract Quasar is QuasarPool {\n    using SafeERC20 for IERC20;\n    using SafeMath for uint256;\n    using SafeMath for uint64;\n    using PosLib for PosLib.Position;\n\n    PlasmaFramework public plasmaFramework;\n    // This contract works with the current exit game\n    // Any changes to the exit game would require modifications to this contract\n    // Verify the exit game before interacting\n    PaymentExitGame public paymentExitGame;\n    SpendingConditionRegistry public spendingConditionRegistry;\n\n    address public quasarOwner;\n    uint256 public safeBlockMargin;\n    uint256 public waitingPeriod;\n    uint256 constant public TICKET_VALIDITY_PERIOD = 14400;\n    uint256 constant public IFE_CLAIM_MARGIN = 28800;\n    // 7+1 days waiting period for IFE Claims\n    uint256 constant public IFE_CLAIM_WAITING_PERIOD = 691200;\n    uint256 public bondValue;\n    // bond is added to this reserve only when tickets are flushed, bond is returned every other time\n    uint256 public unclaimedBonds;\n    bool public isPaused;\n\n    // outputValue is the size of the output\n    // reservedAmount is the liquid funds withdrawable\n    struct Ticket {\n        address payable outputOwner;\n        uint256 validityTimestamp;\n        uint256 outputValue;\n        uint256 reservedAmount;\n        address token;\n        uint256 bondValue;\n        bytes rlpOutputCreationTx;\n        bool isClaimed;\n    }\n\n    struct Claim {\n        bytes rlpClaimTx;\n        uint256 finalizationTimestamp;\n        bool isValid;\n    }\n\n    mapping (uint256 => Ticket) public ticketData;\n    mapping (uint256 => Claim) public ifeClaimData;\n\n    event NewTicketObtained(uint256 utxoPos);\n    event IFEClaimSubmitted(uint256 utxoPos, uint160 exitId);\n\n    modifier onlyWhenNotPaused() {\n        require(!isPaused, \"The Quasar contract is paused\");\n        _;\n    }\n\n    /**\n     * @dev Constructor, takes params to set up quasar contract\n     * @param plasmaFrameworkContract Plasma Framework contract address\n     * @param _quasarOwner Receiver address on Plasma\n     * @param _safeBlockMargin The Quasar will not accept exits for outputs younger than the current plasma block minus the safe block margin \n     * @param _waitingPeriod Waiting period from submission to processing claim\n     * @param _bondValue bond to obtain tickets\n    */\n    constructor (\n        address plasmaFrameworkContract, \n        address spendingConditionRegistryContract, \n        address _quasarOwner, \n        uint256 _safeBlockMargin, \n        uint256 _waitingPeriod, \n        uint256 _bondValue\n    ) public {\n        plasmaFramework = PlasmaFramework(plasmaFrameworkContract);\n        paymentExitGame = PaymentExitGame(plasmaFramework.exitGames(1));\n        spendingConditionRegistry = SpendingConditionRegistry(spendingConditionRegistryContract);\n        quasarOwner = _quasarOwner;\n        quasarMaintainer = msg.sender;\n        safeBlockMargin = _safeBlockMargin;\n        waitingPeriod = _waitingPeriod;\n        bondValue = _bondValue;\n        unclaimedBonds = 0;\n    }\n\n    /**\n     * @return  The latest safe block number\n    */\n    function getLatestSafeBlock() public view returns(uint256) {\n        uint256 childBlockInterval = plasmaFramework.childBlockInterval();\n        uint currentPlasmaBlock = plasmaFramework.nextChildBlock().sub(childBlockInterval);\n        return currentPlasmaBlock.sub(safeBlockMargin.mul(childBlockInterval));\n    }\n\n    ////////////////////////////////////////////\t\n    // Maintenance methods\t\n    ////////////////////////////////////////////\n    /**\n     * @dev Set the safe block margin.\n     * @param margin the new safe block margin\n    */\n    function setSafeBlockMargin (uint256 margin) public onlyQuasarMaintainer() {\n        safeBlockMargin = margin;\n    }\n\n    /**\n     * @dev Flush an expired ticket to free up reserved funds\n     * @notice Only an unclaimed ticket can be flushed, bond amount is added to unclaimedBonds\n     * @param utxoPos pos of the output, which is the ticket identifier\n    */\n    function flushExpiredTicket(uint256 utxoPos) public {\n        uint256 expiryTimestamp = ticketData[utxoPos].validityTimestamp;\n        require(!ticketData[utxoPos].isClaimed, \"The UTXO has already been claimed\");\n        require(block.timestamp > expiryTimestamp && expiryTimestamp != 0, \"Ticket still valid or doesn't exist\");\n\n        uint256 tokenAmount = ticketData[utxoPos].reservedAmount;\n        ticketData[utxoPos].reservedAmount = 0;\n        ticketData[utxoPos].validityTimestamp = 0;\n        tokenUsableCapacity[ticketData[utxoPos].token] = tokenUsableCapacity[ticketData[utxoPos].token].add(tokenAmount);\n        unclaimedBonds = unclaimedBonds.add(ticketData[utxoPos].bondValue); \n    }\n\n    /**\n     * @dev Pause contract in a byzantine state\n    */\n    function pauseQuasar() public onlyQuasarMaintainer() {\n        isPaused = true;\n    }\n\n    /**\n     * @dev Unpause contract and allow tickets\n    */\n    function resumeQuasar() public onlyQuasarMaintainer() {\n        isPaused = false;\n    }\n\n    /**\n     * @dev Withdraw Unclaimed bonds from the contract\n    */\n    function withdrawUnclaimedBonds() public onlyQuasarMaintainer() {\n        uint256 amount = unclaimedBonds;\n        unclaimedBonds = 0;\n        SafeEthTransfer.transferRevertOnError(msg.sender, amount, SAFE_GAS_STIPEND);\n    }\n\n    ////////////////////////////////////////////\t\n    // Exit procedure\t\n    ////////////////////////////////////////////\n    /**\n     * @dev Obtain a ticket from the Quasar\n     * @notice Ticket is valid for four hours, pay bond here for obtaining ticket\n     * @param utxoPos Output that will be spent to the quasar later, is the ticket identifier\n     * @param rlpOutputCreationTx RLP-encoded transaction that created the output\n     * @param outputCreationTxInclusionProof Transaction inclusion proof\n    */\n    function obtainTicket(uint256 utxoPos, bytes memory rlpOutputCreationTx, bytes memory outputCreationTxInclusionProof) public payable onlyWhenNotPaused() {\n        require(msg.value == bondValue, \"Bond Value incorrect\");\n        require(!ticketData[utxoPos].isClaimed, \"The UTXO has already been claimed\");\n        require(ticketData[utxoPos].validityTimestamp == 0, \"This UTXO already has a ticket\");\n\n        PosLib.Position memory utxoPosDecoded = PosLib.decode(utxoPos);\n\n        require(utxoPosDecoded.blockNum <= getLatestSafeBlock(), \"The UTXO is from a block later than the safe limit\");\n\n        PaymentTransactionModel.Transaction memory decodedTx\n        = PaymentTransactionModel.decode(rlpOutputCreationTx);\n\n        FungibleTokenOutputModel.Output memory outputData\n        = PaymentTransactionModel.getOutput(decodedTx, utxoPosDecoded.outputIndex);\n        \n        // verify the owner of output is obtaining the ticket\n        require(verifyOwnership(outputData, msg.sender), \"Was not called by the Output owner\");\n\n        require(MoreVpFinalization.isStandardFinalized(\n            plasmaFramework,\n            rlpOutputCreationTx,\n            utxoPosDecoded.toStrictTxPos(),\n            outputCreationTxInclusionProof\n        ), \"Provided Tx doesn't exist\");\n\n        uint256 quasarFee = tokenData[outputData.token].quasarFee;\n\n        require(outputData.amount > quasarFee, \"The UTXO isn't enough to cover the fee\");\n        uint256 reservedAmount = outputData.amount.sub(quasarFee);\n        require(reservedAmount <= tokenUsableCapacity[outputData.token], \"Requested amount exceeds the Usable Liqudity\");\n\n        tokenUsableCapacity[outputData.token] = tokenUsableCapacity[outputData.token].sub(reservedAmount);\n        ticketData[utxoPos] = Ticket(msg.sender, block.timestamp.add(TICKET_VALIDITY_PERIOD), outputData.amount, reservedAmount, outputData.token, msg.value, rlpOutputCreationTx, false);\n        emit NewTicketObtained(utxoPos);\n    }\n\n    // for simplicity fee has to be from a seperate input in the tx to quasar\n    /**\n     * @dev Submit claim after spending the output to the quasar owner\n     * @param utxoPos pos of the output, which is the ticket identifier\n     * @param utxoPosQuasarOwner pos of the quasar owner's output\n     * @param rlpTxToQuasarOwner RLP-encoded transaction that spends the output to quasar owner\n     * @param txToQuasarOwnerInclusionProof Transaction Inclusion proof\n    */\n    function claim(\n        uint256 utxoPos,\n        uint256 utxoPosQuasarOwner,\n        bytes memory rlpTxToQuasarOwner,\n        bytes memory txToQuasarOwnerInclusionProof\n    ) public {\n        verifyTicketValidityForClaim(utxoPos);\n\n        verifyClaimTxCorrectlyFormed(utxoPos, rlpTxToQuasarOwner);\n\n        PosLib.Position memory utxoQuasarOwnerDecoded = PosLib.decode(utxoPosQuasarOwner);\n        require(MoreVpFinalization.isStandardFinalized(\n            plasmaFramework,\n            rlpTxToQuasarOwner,\n            utxoQuasarOwnerDecoded.toStrictTxPos(),\n            txToQuasarOwnerInclusionProof\n        ), \"Provided Tx doesn't exist\");\n\n        ticketData[utxoPos].isClaimed = true;\n\n        utilize(ticketData[utxoPos].token, ticketData[utxoPos].outputValue);\n        \n        runPayout(utxoPos, ticketData[utxoPos].outputOwner, ticketData[utxoPos].token);\n    }\n\n    /**\n     * @dev Submit an IFE claim for claims without inclusion proof\n     * @param utxoPos pos of the output, which is the ticket identifier\n     * @param inFlightClaimTx in-flight tx that spends the output to quasar owner\n    */\n    function ifeClaim(uint256 utxoPos, bytes memory inFlightClaimTx) public {\n        verifyTicketValidityForClaim(utxoPos);\n\n        verifyClaimTxCorrectlyFormed(utxoPos, inFlightClaimTx);\n\n        //verify IFE started\n        uint160 exitId = ExitId.getInFlightExitId(inFlightClaimTx);\n        uint160[] memory exitIdArr = new uint160[](1);\n        exitIdArr[0] = exitId;\n        PaymentExitDataModel.InFlightExit[] memory ifeData = paymentExitGame.inFlightExits(exitIdArr);\n        require(ifeData[0].exitStartTimestamp != 0, \"IFE has not been started\");\n\n        // IFE claims should start within IFE_CLAIM_MARGIN from starting IFE to enable sufficient time to piggyback\n        // this might be overriden by the ticket expiry check usually, except if the ticket is obtained later\n        require(block.timestamp <= ifeData[0].exitStartTimestamp.add(IFE_CLAIM_MARGIN), \"IFE Claim period has passed\");\n\n        ticketData[utxoPos].isClaimed = true;\n        ifeClaimData[utxoPos] = Claim(inFlightClaimTx, block.timestamp.add(IFE_CLAIM_WAITING_PERIOD), true);\n        emit IFEClaimSubmitted(utxoPos, exitId);\n    }\n\n    /**\n     * @dev Challenge an IFE claim\n     * @notice A challenge is required if any of the claimTx's inputs are double spent\n     * @param utxoPos pos of the output, which is the ticket identifier\n     * @param rlpChallengeTx RLP-encoded challenge transaction\n     * @param challengeTxInputIndex index pos of the same utxo in the challenge transaction\n     * @param challengeTxWitness Witness for challenging transaction\n     * @param otherInputIndex (optional) index pos of another input from the claimTx that is spent\n     * @param otherInputCreationTx (optional) Transaction that created this shared input\n     * @param senderData A keccak256 hash of the sender's address\n    */\n    function challengeIfeClaim(\n        uint256 utxoPos,\n        bytes memory rlpChallengeTx,\n        uint16 challengeTxInputIndex,\n        bytes memory challengeTxWitness,\n        uint16 otherInputIndex,\n        bytes memory otherInputCreationTx,\n        bytes32 senderData\n    ) public {\n        require(senderData == keccak256(abi.encodePacked(msg.sender)), \"Incorrect SenderData\");\n        require(ticketData[utxoPos].isClaimed && ifeClaimData[utxoPos].isValid, \"The claim is not challengeable\");\n        require(block.timestamp <= ifeClaimData[utxoPos].finalizationTimestamp, \"The challenge period is over\");\n        require(\n            keccak256(ifeClaimData[utxoPos].rlpClaimTx) != keccak256(rlpChallengeTx),\n            \"The challenging transaction is the same as the claim transaction\"\n        );\n\n        require(MoreVpFinalization.isProtocolFinalized(\n            plasmaFramework,\n            rlpChallengeTx\n        ), \"The challenging transaction is invalid\");\n\n        if (otherInputCreationTx.length == 0) {\n            verifySpendingCondition(utxoPos, ticketData[utxoPos].rlpOutputCreationTx, rlpChallengeTx, challengeTxInputIndex, challengeTxWitness);\n        } else {\n            PaymentTransactionModel.Transaction memory decodedTx\n            = PaymentTransactionModel.decode(ifeClaimData[utxoPos].rlpClaimTx);\n\n            verifySpendingCondition(uint256(decodedTx.inputs[otherInputIndex]), otherInputCreationTx, rlpChallengeTx, challengeTxInputIndex, challengeTxWitness);\n        }\n\n        ifeClaimData[utxoPos].isValid = false;\n        Ticket memory ticket = ticketData[utxoPos];\n        tokenUsableCapacity[ticket.token] = tokenUsableCapacity[ticket.token].add(ticket.reservedAmount);\n        SafeEthTransfer.transferRevertOnError(msg.sender, ticket.bondValue, SAFE_GAS_STIPEND);\n    }\n\n    /**\n     * @dev Process the IFE claim to get liquid funds\n     * @param utxoPos pos of the output, which is the ticket identifier\n    */\n    function processIfeClaim(uint256 utxoPos) public {\n        require(block.timestamp > ifeClaimData[utxoPos].finalizationTimestamp, \"The claim is not finalized yet\");\n        require(ifeClaimData[utxoPos].isValid, \"The claim has already been claimed or challenged\");\n        ifeClaimData[utxoPos].isValid = false;\n\n        utilize(ticketData[utxoPos].token, ticketData[utxoPos].outputValue);\n\n        runPayout(utxoPos, ticketData[utxoPos].outputOwner, ticketData[utxoPos].token);\n    }\n\n    ////////////////////////////////////////////\t\n    // Helper methods\t\n    ////////////////////////////////////////////\n    /**\n     * @dev Verify the owner of the output\n     * @param output Output Data\n     * @param expectedOutputOwner expected owner of the output\n    */\n    function verifyOwnership(FungibleTokenOutputModel.Output memory output, address expectedOutputOwner) private pure returns(bool) {\n        address outputOwner = PaymentTransactionModel.getOutputOwner(output);\n        return outputOwner == expectedOutputOwner;\n    }\n\n    /**\n     * @dev Verify the challengeTx spends the output\n     * @param utxoPos pos of the output\n     * @param rlpOutputCreationTx transaction that created the output\n     * @param rlpChallengeTx RLP-encoded challenge transaction\n     * @param challengeTxInputIndex index pos of the same utxo in the challenge transaction\n     * @param challengeTxWitness Witness for challenging transaction\n    */\n    function verifySpendingCondition(uint256 utxoPos, bytes memory rlpOutputCreationTx, bytes memory rlpChallengeTx, uint16 challengeTxInputIndex, bytes memory challengeTxWitness) private {\n        GenericTransaction.Transaction memory challengingTx = GenericTransaction.decode(rlpChallengeTx);\n\n        GenericTransaction.Transaction memory inputTx = GenericTransaction.decode(rlpOutputCreationTx);\n        PosLib.Position memory utxoPosDecoded = PosLib.decode(utxoPos);\n        GenericTransaction.Output memory output = GenericTransaction.getOutput(inputTx, utxoPosDecoded.outputIndex);\n\n        ISpendingCondition condition = spendingConditionRegistry.spendingConditions(\n            output.outputType, challengingTx.txType\n        );\n        require(address(condition) != address(0), \"Spending condition contract not found\");\n        bool isSpent = condition.verify(\n            rlpOutputCreationTx,\n            utxoPos,\n            rlpChallengeTx,\n            challengeTxInputIndex,\n            challengeTxWitness\n        );\n        require(isSpent, \"Spending condition failed\");\n    }\n\n    /**\n     * @dev Verify the validity of the ticket\n     * @param utxoPos pos of the output, which is the ticket identifier\n    */\n    function verifyTicketValidityForClaim(uint256 utxoPos) private {\n        require(!ticketData[utxoPos].isClaimed, \"Already claimed\");\n        require(ticketData[utxoPos].outputOwner == msg.sender, \"Not called by the ticket owner\");\n        uint256 expiryTimestamp = ticketData[utxoPos].validityTimestamp;\n        require(expiryTimestamp != 0 && block.timestamp <= expiryTimestamp, \"Ticket is not valid\");\n    }\n    \n    /**\n     * @dev Verify the claim Tx is properly formed\n     * @param utxoPos pos of the output, which is the ticket identifier\n     * @param claimTx the Claim Tx to the quasar owner\n    */\n    function verifyClaimTxCorrectlyFormed(uint256 utxoPos, bytes memory claimTx) private {\n        PaymentTransactionModel.Transaction memory decodedTx\n        = PaymentTransactionModel.decode(claimTx);\n\n        // first input should be the Utxo with which ticket was obtained\n        require(decodedTx.inputs[0] == bytes32(utxoPos), \"The claim transaction does not spend the correct output\");\n\n        // first output should be the utxo for Quasar owner\n        FungibleTokenOutputModel.Output memory outputData\n        = PaymentTransactionModel.getOutput(decodedTx, 0);\n\n        // verify output to Quasar Owner\n        require(verifyOwnership(outputData, quasarOwner), \"The output is not owned by the quasar owner\");\n        // considering fee as a separate input\n        require(ticketData[utxoPos].outputValue == outputData.amount, \"Wrong amount sent to quasar owner\");\n        require(ticketData[utxoPos].token == outputData.token, \"Wrong token sent to quasar owner\");\n    }\n\n    /**\n     * @dev Payout liquid funds\n     * @param utxoPos pos of the output, which is the ticket identifier\n     * @param outputOwner the recipient of the funds\n     * @param token the token to payout\n    */\n    function runPayout(uint256 utxoPos, address payable outputOwner, address token) private {\n        if (token == address(0)) {\n            uint256 totalAmount = ticketData[utxoPos].reservedAmount.add(ticketData[utxoPos].bondValue);\n            SafeEthTransfer.transferRevertOnError(outputOwner, totalAmount, SAFE_GAS_STIPEND);\n        } else {\n            IERC20(token).safeTransfer(outputOwner, ticketData[utxoPos].reservedAmount);\n            SafeEthTransfer.transferRevertOnError(outputOwner, ticketData[utxoPos].bondValue, SAFE_GAS_STIPEND);\n        }\n    }\n\n    /**\n     * @dev Utilize funds from the pool, update exchange rate\n     * @param token the token to payout\n     * @param amount the value of the output claimed\n    */\n    function utilize(address token, uint256 amount) internal {\n        address qTokenAddress = tokenData[token].qTokenAddress;\n        uint256 totalQTokenSupply = IERC20(qTokenAddress).totalSupply();\n        uint256 quasarFee = tokenData[token].quasarFee;\n        // exchangeRate updates to-\n        // k' = (fee + (k * qTotalSupply)) / qTotalSupply\n        // exchangeRate cannot update to zero,\n        // since poolSupply cannot be reduced to zero between obtaining and claiming ticket\n        // same with qTokenSupply\n        uint256 numerator = quasarFee.add(tokenData[token].poolSupply);\n        require(numerator != 0, \"Issue with updating Exchange Rate \");\n        Exp memory exchangeRateScaled = Exponential.getExp(numerator, totalQTokenSupply);\n\n        tokenData[token].owedAmount = tokenData[token].owedAmount.add(amount);\n        tokenData[token].exchangeRate = exchangeRateScaled.mantissa;\n        tokenData[token].poolSupply = tokenData[token].poolSupply.add(quasarFee);\n    }\n}\n",
    "sourcePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/poc/fast_exits/Quasar.sol",
    "ast": {
      "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/poc/fast_exits/Quasar.sol",
      "exportedSymbols": {
        "Quasar": [
          5441
        ]
      },
      "id": 5442,
      "nodeType": "SourceUnit",
      "nodes": [
        {
          "id": 4169,
          "literals": [
            "solidity",
            "0.5",
            ".11"
          ],
          "nodeType": "PragmaDirective",
          "src": "0:23:46"
        },
        {
          "id": 4170,
          "literals": [
            "experimental",
            "ABIEncoderV2"
          ],
          "nodeType": "PragmaDirective",
          "src": "24:33:46"
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/poc/fast_exits/QuasarPool.sol",
          "file": "./QuasarPool.sol",
          "id": 4171,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 5831,
          "src": "59:26:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/framework/PlasmaFramework.sol",
          "file": "../../src/framework/PlasmaFramework.sol",
          "id": 4172,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 14729,
          "src": "86:49:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/payment/PaymentExitGame.sol",
          "file": "../../src/exits/payment/PaymentExitGame.sol",
          "id": 4173,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 6422,
          "src": "136:53:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/utils/PosLib.sol",
          "file": "../../src/utils/PosLib.sol",
          "id": 4174,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 17052,
          "src": "190:36:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/utils/Merkle.sol",
          "file": "../../src/utils/Merkle.sol",
          "id": 4175,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 16851,
          "src": "227:36:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/utils/ExitId.sol",
          "file": "../../src/exits/utils/ExitId.sol",
          "id": 4176,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 13555,
          "src": "264:42:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/payment/routers/PaymentInFlightExitRouter.sol",
          "file": "../../src/exits/payment/routers/PaymentInFlightExitRouter.sol",
          "id": 4177,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 12574,
          "src": "307:71:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/utils/SafeEthTransfer.sol",
          "file": "../../src/utils/SafeEthTransfer.sol",
          "id": 4178,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 17708,
          "src": "379:45:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/transactions/PaymentTransactionModel.sol",
          "file": "../../src/transactions/PaymentTransactionModel.sol",
          "id": 4179,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 16302,
          "src": "425:60:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/transactions/GenericTransaction.sol",
          "file": "../../src/transactions/GenericTransaction.sol",
          "id": 4180,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 16054,
          "src": "486:55:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/utils/MoreVpFinalization.sol",
          "file": "../../src/exits/utils/MoreVpFinalization.sol",
          "id": 4181,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 13740,
          "src": "542:54:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/interfaces/ISpendingCondition.sol",
          "file": "../../src/exits/interfaces/ISpendingCondition.sol",
          "id": 4182,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 6211,
          "src": "597:59:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/registries/SpendingConditionRegistry.sol",
          "file": "../../src/exits/registries/SpendingConditionRegistry.sol",
          "id": 4183,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 13264,
          "src": "657:66:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
          "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
          "id": 4184,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 19133,
          "src": "724:59:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
          "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
          "id": 4185,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 19796,
          "src": "784:64:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol",
          "file": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol",
          "id": 4186,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 20015,
          "src": "849:67:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "baseContracts": [
            {
              "arguments": null,
              "baseName": {
                "contractScope": null,
                "id": 4187,
                "name": "QuasarPool",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 5830,
                "src": "1084:10:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_QuasarPool_$5830",
                  "typeString": "contract QuasarPool"
                }
              },
              "id": 4188,
              "nodeType": "InheritanceSpecifier",
              "src": "1084:10:46"
            }
          ],
          "contractDependencies": [
            5830,
            5992
          ],
          "contractKind": "contract",
          "documentation": "@title Quasar Contract\nImplementation Doc - https://github.com/omgnetwork/research-workshop/blob/master/Incognito_fast_withdrawals.md",
          "fullyImplemented": true,
          "id": 5441,
          "linearizedBaseContracts": [
            5441,
            5830,
            5992
          ],
          "name": "Quasar",
          "nodeType": "ContractDefinition",
          "nodes": [
            {
              "id": 4191,
              "libraryName": {
                "contractScope": null,
                "id": 4189,
                "name": "SafeERC20",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 20014,
                "src": "1107:9:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_SafeERC20_$20014",
                  "typeString": "library SafeERC20"
                }
              },
              "nodeType": "UsingForDirective",
              "src": "1101:27:46",
              "typeName": {
                "contractScope": null,
                "id": 4190,
                "name": "IERC20",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 19795,
                "src": "1121:6:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IERC20_$19795",
                  "typeString": "contract IERC20"
                }
              }
            },
            {
              "id": 4194,
              "libraryName": {
                "contractScope": null,
                "id": 4192,
                "name": "SafeMath",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 19132,
                "src": "1139:8:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_SafeMath_$19132",
                  "typeString": "library SafeMath"
                }
              },
              "nodeType": "UsingForDirective",
              "src": "1133:27:46",
              "typeName": {
                "id": 4193,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1152:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            {
              "id": 4197,
              "libraryName": {
                "contractScope": null,
                "id": 4195,
                "name": "SafeMath",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 19132,
                "src": "1171:8:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_SafeMath_$19132",
                  "typeString": "library SafeMath"
                }
              },
              "nodeType": "UsingForDirective",
              "src": "1165:26:46",
              "typeName": {
                "id": 4196,
                "name": "uint64",
                "nodeType": "ElementaryTypeName",
                "src": "1184:6:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                }
              }
            },
            {
              "id": 4200,
              "libraryName": {
                "contractScope": null,
                "id": 4198,
                "name": "PosLib",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 17051,
                "src": "1202:6:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_PosLib_$17051",
                  "typeString": "library PosLib"
                }
              },
              "nodeType": "UsingForDirective",
              "src": "1196:33:46",
              "typeName": {
                "contractScope": null,
                "id": 4199,
                "name": "PosLib.Position",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 16894,
                "src": "1213:15:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Position_$16894_storage_ptr",
                  "typeString": "struct PosLib.Position"
                }
              }
            },
            {
              "constant": false,
              "id": 4202,
              "name": "plasmaFramework",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "1235:38:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                "typeString": "contract PlasmaFramework"
              },
              "typeName": {
                "contractScope": null,
                "id": 4201,
                "name": "PlasmaFramework",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 14728,
                "src": "1235:15:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                  "typeString": "contract PlasmaFramework"
                }
              },
              "value": null,
              "visibility": "public"
            },
            {
              "constant": false,
              "id": 4204,
              "name": "paymentExitGame",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "1461:38:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_PaymentExitGame_$6421",
                "typeString": "contract PaymentExitGame"
              },
              "typeName": {
                "contractScope": null,
                "id": 4203,
                "name": "PaymentExitGame",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 6421,
                "src": "1461:15:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_PaymentExitGame_$6421",
                  "typeString": "contract PaymentExitGame"
                }
              },
              "value": null,
              "visibility": "public"
            },
            {
              "constant": false,
              "id": 4206,
              "name": "spendingConditionRegistry",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "1505:58:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SpendingConditionRegistry_$13263",
                "typeString": "contract SpendingConditionRegistry"
              },
              "typeName": {
                "contractScope": null,
                "id": 4205,
                "name": "SpendingConditionRegistry",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 13263,
                "src": "1505:25:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_SpendingConditionRegistry_$13263",
                  "typeString": "contract SpendingConditionRegistry"
                }
              },
              "value": null,
              "visibility": "public"
            },
            {
              "constant": false,
              "id": 4208,
              "name": "quasarOwner",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "1570:26:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              },
              "typeName": {
                "id": 4207,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1570:7:46",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "value": null,
              "visibility": "public"
            },
            {
              "constant": false,
              "id": 4210,
              "name": "safeBlockMargin",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "1602:30:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 4209,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1602:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": null,
              "visibility": "public"
            },
            {
              "constant": false,
              "id": 4212,
              "name": "waitingPeriod",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "1638:28:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 4211,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1638:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": null,
              "visibility": "public"
            },
            {
              "constant": true,
              "id": 4215,
              "name": "TICKET_VALIDITY_PERIOD",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "1672:54:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 4213,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1672:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "argumentTypes": null,
                "hexValue": "3134343030",
                "id": 4214,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1721:5:46",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_14400_by_1",
                  "typeString": "int_const 14400"
                },
                "value": "14400"
              },
              "visibility": "public"
            },
            {
              "constant": true,
              "id": 4218,
              "name": "IFE_CLAIM_MARGIN",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "1732:48:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 4216,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1732:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "argumentTypes": null,
                "hexValue": "3238383030",
                "id": 4217,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1775:5:46",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_28800_by_1",
                  "typeString": "int_const 28800"
                },
                "value": "28800"
              },
              "visibility": "public"
            },
            {
              "constant": true,
              "id": 4221,
              "name": "IFE_CLAIM_WAITING_PERIOD",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "1832:57:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 4219,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1832:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "argumentTypes": null,
                "hexValue": "363931323030",
                "id": 4220,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1883:6:46",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_691200_by_1",
                  "typeString": "int_const 691200"
                },
                "value": "691200"
              },
              "visibility": "public"
            },
            {
              "constant": false,
              "id": 4223,
              "name": "bondValue",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "1895:24:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 4222,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1895:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": null,
              "visibility": "public"
            },
            {
              "constant": false,
              "id": 4225,
              "name": "unclaimedBonds",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "2027:29:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 4224,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2027:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": null,
              "visibility": "public"
            },
            {
              "constant": false,
              "id": 4227,
              "name": "isPaused",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "2062:20:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "typeName": {
                "id": 4226,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "2062:4:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "value": null,
              "visibility": "public"
            },
            {
              "canonicalName": "Quasar.Ticket",
              "id": 4244,
              "members": [
                {
                  "constant": false,
                  "id": 4229,
                  "name": "outputOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 4244,
                  "src": "2213:27:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 4228,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2213:15:46",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4231,
                  "name": "validityTimestamp",
                  "nodeType": "VariableDeclaration",
                  "scope": 4244,
                  "src": "2250:25:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4230,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2250:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4233,
                  "name": "outputValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 4244,
                  "src": "2285:19:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4232,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2285:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4235,
                  "name": "reservedAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4244,
                  "src": "2314:22:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4234,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2314:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4237,
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "scope": 4244,
                  "src": "2346:13:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4236,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2346:7:46",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4239,
                  "name": "bondValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 4244,
                  "src": "2369:17:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4238,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2369:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4241,
                  "name": "rlpOutputCreationTx",
                  "nodeType": "VariableDeclaration",
                  "scope": 4244,
                  "src": "2396:25:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 4240,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2396:5:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4243,
                  "name": "isClaimed",
                  "nodeType": "VariableDeclaration",
                  "scope": 4244,
                  "src": "2431:14:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4242,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2431:4:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "name": "Ticket",
              "nodeType": "StructDefinition",
              "scope": 5441,
              "src": "2189:263:46",
              "visibility": "public"
            },
            {
              "canonicalName": "Quasar.Claim",
              "id": 4251,
              "members": [
                {
                  "constant": false,
                  "id": 4246,
                  "name": "rlpClaimTx",
                  "nodeType": "VariableDeclaration",
                  "scope": 4251,
                  "src": "2481:16:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 4245,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2481:5:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4248,
                  "name": "finalizationTimestamp",
                  "nodeType": "VariableDeclaration",
                  "scope": 4251,
                  "src": "2507:29:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4247,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2507:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4250,
                  "name": "isValid",
                  "nodeType": "VariableDeclaration",
                  "scope": 4251,
                  "src": "2546:12:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4249,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2546:4:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "name": "Claim",
              "nodeType": "StructDefinition",
              "scope": 5441,
              "src": "2458:107:46",
              "visibility": "public"
            },
            {
              "constant": false,
              "id": 4255,
              "name": "ticketData",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "2571:45:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                "typeString": "mapping(uint256 => struct Quasar.Ticket)"
              },
              "typeName": {
                "id": 4254,
                "keyType": {
                  "id": 4252,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2580:7:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "Mapping",
                "src": "2571:27:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                  "typeString": "mapping(uint256 => struct Quasar.Ticket)"
                },
                "valueType": {
                  "contractScope": null,
                  "id": 4253,
                  "name": "Ticket",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 4244,
                  "src": "2591:6:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Ticket_$4244_storage_ptr",
                    "typeString": "struct Quasar.Ticket"
                  }
                }
              },
              "value": null,
              "visibility": "public"
            },
            {
              "constant": false,
              "id": 4259,
              "name": "ifeClaimData",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "2622:46:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Claim_$4251_storage_$",
                "typeString": "mapping(uint256 => struct Quasar.Claim)"
              },
              "typeName": {
                "id": 4258,
                "keyType": {
                  "id": 4256,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2631:7:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "Mapping",
                "src": "2622:26:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Claim_$4251_storage_$",
                  "typeString": "mapping(uint256 => struct Quasar.Claim)"
                },
                "valueType": {
                  "contractScope": null,
                  "id": 4257,
                  "name": "Claim",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 4251,
                  "src": "2642:5:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Claim_$4251_storage_ptr",
                    "typeString": "struct Quasar.Claim"
                  }
                }
              },
              "value": null,
              "visibility": "public"
            },
            {
              "anonymous": false,
              "documentation": null,
              "id": 4263,
              "name": "NewTicketObtained",
              "nodeType": "EventDefinition",
              "parameters": {
                "id": 4262,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 4261,
                    "indexed": false,
                    "name": "utxoPos",
                    "nodeType": "VariableDeclaration",
                    "scope": 4263,
                    "src": "2699:15:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4260,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2699:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "2698:17:46"
              },
              "src": "2675:41:46"
            },
            {
              "anonymous": false,
              "documentation": null,
              "id": 4269,
              "name": "IFEClaimSubmitted",
              "nodeType": "EventDefinition",
              "parameters": {
                "id": 4268,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 4265,
                    "indexed": false,
                    "name": "utxoPos",
                    "nodeType": "VariableDeclaration",
                    "scope": 4269,
                    "src": "2745:15:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4264,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2745:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4267,
                    "indexed": false,
                    "name": "exitId",
                    "nodeType": "VariableDeclaration",
                    "scope": 4269,
                    "src": "2762:14:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    },
                    "typeName": {
                      "id": 4266,
                      "name": "uint160",
                      "nodeType": "ElementaryTypeName",
                      "src": "2762:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "2744:33:46"
              },
              "src": "2721:57:46"
            },
            {
              "body": {
                "id": 4278,
                "nodeType": "Block",
                "src": "2813:79:46",
                "statements": [
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4273,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "2831:9:46",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 4272,
                            "name": "isPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4227,
                            "src": "2832:8:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "5468652051756173617220636f6e747261637420697320706175736564",
                          "id": 4274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2842:31:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_c022614e427defec54a8c498339c48fd938f0f97501055547dda4acf50b402e6",
                            "typeString": "literal_string \"The Quasar contract is paused\""
                          },
                          "value": "The Quasar contract is paused"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_c022614e427defec54a8c498339c48fd938f0f97501055547dda4acf50b402e6",
                            "typeString": "literal_string \"The Quasar contract is paused\""
                          }
                        ],
                        "id": 4271,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "2823:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4275,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2823:51:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4276,
                    "nodeType": "ExpressionStatement",
                    "src": "2823:51:46"
                  },
                  {
                    "id": 4277,
                    "nodeType": "PlaceholderStatement",
                    "src": "2884:1:46"
                  }
                ]
              },
              "documentation": null,
              "id": 4279,
              "name": "onlyWhenNotPaused",
              "nodeType": "ModifierDefinition",
              "parameters": {
                "id": 4270,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "2810:2:46"
              },
              "src": "2784:108:46",
              "visibility": "internal"
            },
            {
              "body": {
                "id": 4340,
                "nodeType": "Block",
                "src": "3621:465:46",
                "statements": [
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4298,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4294,
                        "name": "plasmaFramework",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4202,
                        "src": "3631:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                          "typeString": "contract PlasmaFramework"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4296,
                            "name": "plasmaFrameworkContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4281,
                            "src": "3665:23:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 4295,
                          "name": "PlasmaFramework",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14728,
                          "src": "3649:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_PlasmaFramework_$14728_$",
                            "typeString": "type(contract PlasmaFramework)"
                          }
                        },
                        "id": 4297,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3649:40:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                          "typeString": "contract PlasmaFramework"
                        }
                      },
                      "src": "3631:58:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                        "typeString": "contract PlasmaFramework"
                      }
                    },
                    "id": 4299,
                    "nodeType": "ExpressionStatement",
                    "src": "3631:58:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4307,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4300,
                        "name": "paymentExitGame",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4204,
                        "src": "3699:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PaymentExitGame_$6421",
                          "typeString": "contract PaymentExitGame"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 4304,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3759:1:46",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 4302,
                                "name": "plasmaFramework",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4202,
                                "src": "3733:15:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                                  "typeString": "contract PlasmaFramework"
                                }
                              },
                              "id": 4303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "exitGames",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15004,
                              "src": "3733:25:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$",
                                "typeString": "function (uint256) view external returns (address)"
                              }
                            },
                            "id": 4305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3733:28:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 4301,
                          "name": "PaymentExitGame",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6421,
                          "src": "3717:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_PaymentExitGame_$6421_$",
                            "typeString": "type(contract PaymentExitGame)"
                          }
                        },
                        "id": 4306,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3717:45:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PaymentExitGame_$6421",
                          "typeString": "contract PaymentExitGame"
                        }
                      },
                      "src": "3699:63:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_PaymentExitGame_$6421",
                        "typeString": "contract PaymentExitGame"
                      }
                    },
                    "id": 4308,
                    "nodeType": "ExpressionStatement",
                    "src": "3699:63:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4313,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4309,
                        "name": "spendingConditionRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4206,
                        "src": "3772:25:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_SpendingConditionRegistry_$13263",
                          "typeString": "contract SpendingConditionRegistry"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4311,
                            "name": "spendingConditionRegistryContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4283,
                            "src": "3826:33:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 4310,
                          "name": "SpendingConditionRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13263,
                          "src": "3800:25:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_SpendingConditionRegistry_$13263_$",
                            "typeString": "type(contract SpendingConditionRegistry)"
                          }
                        },
                        "id": 4312,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3800:60:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_SpendingConditionRegistry_$13263",
                          "typeString": "contract SpendingConditionRegistry"
                        }
                      },
                      "src": "3772:88:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SpendingConditionRegistry_$13263",
                        "typeString": "contract SpendingConditionRegistry"
                      }
                    },
                    "id": 4314,
                    "nodeType": "ExpressionStatement",
                    "src": "3772:88:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4317,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4315,
                        "name": "quasarOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4208,
                        "src": "3870:11:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "id": 4316,
                        "name": "_quasarOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4285,
                        "src": "3884:12:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "3870:26:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 4318,
                    "nodeType": "ExpressionStatement",
                    "src": "3870:26:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4322,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4319,
                        "name": "quasarMaintainer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5471,
                        "src": "3906:16:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4320,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21272,
                          "src": "3925:3:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 4321,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3925:10:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "3906:29:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 4323,
                    "nodeType": "ExpressionStatement",
                    "src": "3906:29:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4326,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4324,
                        "name": "safeBlockMargin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4210,
                        "src": "3945:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "id": 4325,
                        "name": "_safeBlockMargin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4287,
                        "src": "3963:16:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "3945:34:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4327,
                    "nodeType": "ExpressionStatement",
                    "src": "3945:34:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4330,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4328,
                        "name": "waitingPeriod",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4212,
                        "src": "3989:13:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "id": 4329,
                        "name": "_waitingPeriod",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4289,
                        "src": "4005:14:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "3989:30:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4331,
                    "nodeType": "ExpressionStatement",
                    "src": "3989:30:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4334,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4332,
                        "name": "bondValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4223,
                        "src": "4029:9:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "id": 4333,
                        "name": "_bondValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4291,
                        "src": "4041:10:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "4029:22:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4335,
                    "nodeType": "ExpressionStatement",
                    "src": "4029:22:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4338,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4336,
                        "name": "unclaimedBonds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4225,
                        "src": "4061:14:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4337,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4078:1:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "4061:18:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4339,
                    "nodeType": "ExpressionStatement",
                    "src": "4061:18:46"
                  }
                ]
              },
              "documentation": "@dev Constructor, takes params to set up quasar contract\n@param plasmaFrameworkContract Plasma Framework contract address\n@param _quasarOwner Receiver address on Plasma\n@param _safeBlockMargin The Quasar will not accept exits for outputs younger than the current plasma block minus the safe block margin \n@param _waitingPeriod Waiting period from submission to processing claim\n@param _bondValue bond to obtain tickets",
              "id": 4341,
              "implemented": true,
              "kind": "constructor",
              "modifiers": [],
              "name": "",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 4292,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 4281,
                    "name": "plasmaFrameworkContract",
                    "nodeType": "VariableDeclaration",
                    "scope": 4341,
                    "src": "3396:31:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 4280,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3396:7:46",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4283,
                    "name": "spendingConditionRegistryContract",
                    "nodeType": "VariableDeclaration",
                    "scope": 4341,
                    "src": "3438:41:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 4282,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3438:7:46",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4285,
                    "name": "_quasarOwner",
                    "nodeType": "VariableDeclaration",
                    "scope": 4341,
                    "src": "3490:20:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 4284,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3490:7:46",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4287,
                    "name": "_safeBlockMargin",
                    "nodeType": "VariableDeclaration",
                    "scope": 4341,
                    "src": "3521:24:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4286,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3521:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4289,
                    "name": "_waitingPeriod",
                    "nodeType": "VariableDeclaration",
                    "scope": 4341,
                    "src": "3556:22:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4288,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3556:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4291,
                    "name": "_bondValue",
                    "nodeType": "VariableDeclaration",
                    "scope": 4341,
                    "src": "3589:18:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4290,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3589:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "3386:227:46"
              },
              "returnParameters": {
                "id": 4293,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "3621:0:46"
              },
              "scope": 5441,
              "src": "3374:712:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            {
              "body": {
                "id": 4369,
                "nodeType": "Block",
                "src": "4211:254:46",
                "statements": [
                  {
                    "assignments": [
                      4347
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4347,
                        "name": "childBlockInterval",
                        "nodeType": "VariableDeclaration",
                        "scope": 4369,
                        "src": "4221:26:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4346,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4221:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4351,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4348,
                          "name": "plasmaFramework",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4202,
                          "src": "4250:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                            "typeString": "contract PlasmaFramework"
                          }
                        },
                        "id": 4349,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "childBlockInterval",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13794,
                        "src": "4250:34:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                          "typeString": "function () view external returns (uint256)"
                        }
                      },
                      "id": 4350,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4250:36:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4221:65:46"
                  },
                  {
                    "assignments": [
                      4353
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4353,
                        "name": "currentPlasmaBlock",
                        "nodeType": "VariableDeclaration",
                        "scope": 4369,
                        "src": "4296:23:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4352,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "4296:4:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4360,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4358,
                          "name": "childBlockInterval",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4347,
                          "src": "4359:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4354,
                              "name": "plasmaFramework",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4202,
                              "src": "4322:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                                "typeString": "contract PlasmaFramework"
                              }
                            },
                            "id": 4355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "nextChildBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13796,
                            "src": "4322:30:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 4356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4322:32:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4357,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 19051,
                        "src": "4322:36:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 4359,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4322:56:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4296:82:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4365,
                              "name": "childBlockInterval",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4347,
                              "src": "4438:18:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4363,
                              "name": "safeBlockMargin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4210,
                              "src": "4418:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4364,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 19085,
                            "src": "4418:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 4366,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4418:39:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4361,
                          "name": "currentPlasmaBlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4353,
                          "src": "4395:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4362,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 19051,
                        "src": "4395:22:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 4367,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4395:63:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "functionReturnParameters": 4345,
                    "id": 4368,
                    "nodeType": "Return",
                    "src": "4388:70:46"
                  }
                ]
              },
              "documentation": "@return  The latest safe block number",
              "id": 4370,
              "implemented": true,
              "kind": "function",
              "modifiers": [],
              "name": "getLatestSafeBlock",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 4342,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "4179:2:46"
              },
              "returnParameters": {
                "id": 4345,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 4344,
                    "name": "",
                    "nodeType": "VariableDeclaration",
                    "scope": 4370,
                    "src": "4202:7:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4343,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4202:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "4201:9:46"
              },
              "scope": 5441,
              "src": "4152:313:46",
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            {
              "body": {
                "id": 4381,
                "nodeType": "Block",
                "src": "4774:41:46",
                "statements": [
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4379,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4377,
                        "name": "safeBlockMargin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4210,
                        "src": "4784:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "id": 4378,
                        "name": "margin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4372,
                        "src": "4802:6:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "4784:24:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4380,
                    "nodeType": "ExpressionStatement",
                    "src": "4784:24:46"
                  }
                ]
              },
              "documentation": "@dev Set the safe block margin.\n@param margin the new safe block margin",
              "id": 4382,
              "implemented": true,
              "kind": "function",
              "modifiers": [
                {
                  "arguments": [],
                  "id": 4375,
                  "modifierName": {
                    "argumentTypes": null,
                    "id": 4374,
                    "name": "onlyQuasarMaintainer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5489,
                    "src": "4751:20:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_modifier$__$",
                      "typeString": "modifier ()"
                    }
                  },
                  "nodeType": "ModifierInvocation",
                  "src": "4751:22:46"
                }
              ],
              "name": "setSafeBlockMargin",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 4373,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 4372,
                    "name": "margin",
                    "nodeType": "VariableDeclaration",
                    "scope": 4382,
                    "src": "4728:14:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4371,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4728:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "4727:16:46"
              },
              "returnParameters": {
                "id": 4376,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "4774:0:46"
              },
              "scope": 5441,
              "src": "4699:116:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            {
              "body": {
                "id": 4463,
                "nodeType": "Block",
                "src": "5117:646:46",
                "statements": [
                  {
                    "assignments": [
                      4388
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4388,
                        "name": "expiryTimestamp",
                        "nodeType": "VariableDeclaration",
                        "scope": 4463,
                        "src": "5127:23:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4387,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5127:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4393,
                    "initialValue": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4389,
                          "name": "ticketData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4255,
                          "src": "5153:10:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                            "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                          }
                        },
                        "id": 4391,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4390,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4384,
                          "src": "5164:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5153:19:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                          "typeString": "struct Quasar.Ticket storage ref"
                        }
                      },
                      "id": 4392,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "validityTimestamp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4231,
                      "src": "5153:37:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5127:63:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4399,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "5208:30:46",
                          "subExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4395,
                                "name": "ticketData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4255,
                                "src": "5209:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                  "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                }
                              },
                              "id": 4397,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4396,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4384,
                                "src": "5220:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5209:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                "typeString": "struct Quasar.Ticket storage ref"
                              }
                            },
                            "id": 4398,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isClaimed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4243,
                            "src": "5209:29:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "546865205554584f2068617320616c7265616479206265656e20636c61696d6564",
                          "id": 4400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5240:35:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_42fd0d0be5a327d37eed70d846e1fbf1842b1c07eb7f4ec3b0755cee6e0a4359",
                            "typeString": "literal_string \"The UTXO has already been claimed\""
                          },
                          "value": "The UTXO has already been claimed"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_42fd0d0be5a327d37eed70d846e1fbf1842b1c07eb7f4ec3b0755cee6e0a4359",
                            "typeString": "literal_string \"The UTXO has already been claimed\""
                          }
                        ],
                        "id": 4394,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "5200:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4401,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5200:76:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4402,
                    "nodeType": "ExpressionStatement",
                    "src": "5200:76:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4411,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4407,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4404,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21262,
                                "src": "5294:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 4405,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5294:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 4406,
                              "name": "expiryTimestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4388,
                              "src": "5312:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5294:33:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4410,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 4408,
                              "name": "expiryTimestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4388,
                              "src": "5331:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4409,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5350:1:46",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5331:20:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5294:57:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "5469636b6574207374696c6c2076616c6964206f7220646f65736e2774206578697374",
                          "id": 4412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5353:37:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_c6c6629c23761081bda94e8bcd51eee30e7fca8f00fb8fe135630aeaa4c3cc18",
                            "typeString": "literal_string \"Ticket still valid or doesn't exist\""
                          },
                          "value": "Ticket still valid or doesn't exist"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_c6c6629c23761081bda94e8bcd51eee30e7fca8f00fb8fe135630aeaa4c3cc18",
                            "typeString": "literal_string \"Ticket still valid or doesn't exist\""
                          }
                        ],
                        "id": 4403,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "5286:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4413,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5286:105:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4414,
                    "nodeType": "ExpressionStatement",
                    "src": "5286:105:46"
                  },
                  {
                    "assignments": [
                      4416
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4416,
                        "name": "tokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 4463,
                        "src": "5402:19:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4415,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5402:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4421,
                    "initialValue": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4417,
                          "name": "ticketData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4255,
                          "src": "5424:10:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                            "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                          }
                        },
                        "id": 4419,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4418,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4384,
                          "src": "5435:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5424:19:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                          "typeString": "struct Quasar.Ticket storage ref"
                        }
                      },
                      "id": 4420,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "reservedAmount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4235,
                      "src": "5424:34:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5402:56:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4427,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4422,
                            "name": "ticketData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4255,
                            "src": "5468:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                              "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                            }
                          },
                          "id": 4424,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4423,
                            "name": "utxoPos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4384,
                            "src": "5479:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5468:19:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                            "typeString": "struct Quasar.Ticket storage ref"
                          }
                        },
                        "id": 4425,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "reservedAmount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4235,
                        "src": "5468:34:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4426,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5505:1:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "5468:38:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4428,
                    "nodeType": "ExpressionStatement",
                    "src": "5468:38:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4434,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4429,
                            "name": "ticketData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4255,
                            "src": "5516:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                              "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                            }
                          },
                          "id": 4431,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4430,
                            "name": "utxoPos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4384,
                            "src": "5527:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5516:19:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                            "typeString": "struct Quasar.Ticket storage ref"
                          }
                        },
                        "id": 4432,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "validityTimestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4231,
                        "src": "5516:37:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4433,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5556:1:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "5516:41:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4435,
                    "nodeType": "ExpressionStatement",
                    "src": "5516:41:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4451,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4436,
                          "name": "tokenUsableCapacity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5497,
                          "src": "5567:19:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 4441,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4437,
                              "name": "ticketData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4255,
                              "src": "5587:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                              }
                            },
                            "id": 4439,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4438,
                              "name": "utxoPos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4384,
                              "src": "5598:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5587:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                              "typeString": "struct Quasar.Ticket storage ref"
                            }
                          },
                          "id": 4440,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "token",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4237,
                          "src": "5587:25:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "5567:46:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4449,
                            "name": "tokenAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4416,
                            "src": "5667:11:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4442,
                              "name": "tokenUsableCapacity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5497,
                              "src": "5616:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 4447,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4443,
                                  "name": "ticketData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4255,
                                  "src": "5636:10:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                    "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                  }
                                },
                                "id": 4445,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 4444,
                                  "name": "utxoPos",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4384,
                                  "src": "5647:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5636:19:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                  "typeString": "struct Quasar.Ticket storage ref"
                                }
                              },
                              "id": 4446,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "token",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4237,
                              "src": "5636:25:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5616:46:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 19026,
                          "src": "5616:50:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 4450,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5616:63:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "5567:112:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4452,
                    "nodeType": "ExpressionStatement",
                    "src": "5567:112:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4461,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4453,
                        "name": "unclaimedBonds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4225,
                        "src": "5689:14:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4456,
                                "name": "ticketData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4255,
                                "src": "5725:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                  "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                }
                              },
                              "id": 4458,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4457,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4384,
                                "src": "5736:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5725:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                "typeString": "struct Quasar.Ticket storage ref"
                              }
                            },
                            "id": 4459,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "bondValue",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4239,
                            "src": "5725:29:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4454,
                            "name": "unclaimedBonds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4225,
                            "src": "5706:14:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 19026,
                          "src": "5706:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 4460,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5706:49:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "5689:66:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4462,
                    "nodeType": "ExpressionStatement",
                    "src": "5689:66:46"
                  }
                ]
              },
              "documentation": "@dev Flush an expired ticket to free up reserved funds\n@notice Only an unclaimed ticket can be flushed, bond amount is added to unclaimedBonds\n@param utxoPos pos of the output, which is the ticket identifier",
              "id": 4464,
              "implemented": true,
              "kind": "function",
              "modifiers": [],
              "name": "flushExpiredTicket",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 4385,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 4384,
                    "name": "utxoPos",
                    "nodeType": "VariableDeclaration",
                    "scope": 4464,
                    "src": "5093:15:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4383,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "5093:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "5092:17:46"
              },
              "returnParameters": {
                "id": 4386,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "5117:0:46"
              },
              "scope": 5441,
              "src": "5065:698:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            {
              "body": {
                "id": 4473,
                "nodeType": "Block",
                "src": "5885:32:46",
                "statements": [
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4471,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4469,
                        "name": "isPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4227,
                        "src": "5895:8:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 4470,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5906:4:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "src": "5895:15:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 4472,
                    "nodeType": "ExpressionStatement",
                    "src": "5895:15:46"
                  }
                ]
              },
              "documentation": "@dev Pause contract in a byzantine state",
              "id": 4474,
              "implemented": true,
              "kind": "function",
              "modifiers": [
                {
                  "arguments": [],
                  "id": 4467,
                  "modifierName": {
                    "argumentTypes": null,
                    "id": 4466,
                    "name": "onlyQuasarMaintainer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5489,
                    "src": "5862:20:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_modifier$__$",
                      "typeString": "modifier ()"
                    }
                  },
                  "nodeType": "ModifierInvocation",
                  "src": "5862:22:46"
                }
              ],
              "name": "pauseQuasar",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 4465,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "5852:2:46"
              },
              "returnParameters": {
                "id": 4468,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "5885:0:46"
              },
              "scope": 5441,
              "src": "5832:85:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            {
              "body": {
                "id": 4483,
                "nodeType": "Block",
                "src": "6039:33:46",
                "statements": [
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4481,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4479,
                        "name": "isPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4227,
                        "src": "6049:8:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 4480,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6060:5:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      "src": "6049:16:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 4482,
                    "nodeType": "ExpressionStatement",
                    "src": "6049:16:46"
                  }
                ]
              },
              "documentation": "@dev Unpause contract and allow tickets",
              "id": 4484,
              "implemented": true,
              "kind": "function",
              "modifiers": [
                {
                  "arguments": [],
                  "id": 4477,
                  "modifierName": {
                    "argumentTypes": null,
                    "id": 4476,
                    "name": "onlyQuasarMaintainer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5489,
                    "src": "6016:20:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_modifier$__$",
                      "typeString": "modifier ()"
                    }
                  },
                  "nodeType": "ModifierInvocation",
                  "src": "6016:22:46"
                }
              ],
              "name": "resumeQuasar",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 4475,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "6006:2:46"
              },
              "returnParameters": {
                "id": 4478,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "6039:0:46"
              },
              "scope": 5441,
              "src": "5985:87:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            {
              "body": {
                "id": 4506,
                "nodeType": "Block",
                "src": "6212:161:46",
                "statements": [
                  {
                    "assignments": [
                      4490
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4490,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 4506,
                        "src": "6222:14:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4489,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6222:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4492,
                    "initialValue": {
                      "argumentTypes": null,
                      "id": 4491,
                      "name": "unclaimedBonds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4225,
                      "src": "6239:14:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6222:31:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4495,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4493,
                        "name": "unclaimedBonds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4225,
                        "src": "6263:14:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4494,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6280:1:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "6263:18:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4496,
                    "nodeType": "ExpressionStatement",
                    "src": "6263:18:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4500,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21272,
                            "src": "6329:3:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4501,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6329:10:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 4502,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4490,
                          "src": "6341:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 4503,
                          "name": "SAFE_GAS_STIPEND",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5474,
                          "src": "6349:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4497,
                          "name": "SafeEthTransfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17707,
                          "src": "6291:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_SafeEthTransfer_$17707_$",
                            "typeString": "type(library SafeEthTransfer)"
                          }
                        },
                        "id": 4499,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "transferRevertOnError",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17679,
                        "src": "6291:37:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$_t_uint256_$returns$__$",
                          "typeString": "function (address payable,uint256,uint256)"
                        }
                      },
                      "id": 4504,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6291:75:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4505,
                    "nodeType": "ExpressionStatement",
                    "src": "6291:75:46"
                  }
                ]
              },
              "documentation": "@dev Withdraw Unclaimed bonds from the contract",
              "id": 4507,
              "implemented": true,
              "kind": "function",
              "modifiers": [
                {
                  "arguments": [],
                  "id": 4487,
                  "modifierName": {
                    "argumentTypes": null,
                    "id": 4486,
                    "name": "onlyQuasarMaintainer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5489,
                    "src": "6189:20:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_modifier$__$",
                      "typeString": "modifier ()"
                    }
                  },
                  "nodeType": "ModifierInvocation",
                  "src": "6189:22:46"
                }
              ],
              "name": "withdrawUnclaimedBonds",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 4485,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "6179:2:46"
              },
              "returnParameters": {
                "id": 4488,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "6212:0:46"
              },
              "scope": 5441,
              "src": "6148:225:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            {
              "body": {
                "id": 4679,
                "nodeType": "Block",
                "src": "7044:1813:46",
                "statements": [
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4519,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21272,
                              "src": "7062:3:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4520,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7062:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4521,
                            "name": "bondValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4223,
                            "src": "7075:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7062:22:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "426f6e642056616c756520696e636f7272656374",
                          "id": 4523,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7086:22:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_236842436f0a77d5978d9fd3a8a06773df98941f1d1d303463ead4aea5aa1ec3",
                            "typeString": "literal_string \"Bond Value incorrect\""
                          },
                          "value": "Bond Value incorrect"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_236842436f0a77d5978d9fd3a8a06773df98941f1d1d303463ead4aea5aa1ec3",
                            "typeString": "literal_string \"Bond Value incorrect\""
                          }
                        ],
                        "id": 4518,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "7054:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4524,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7054:55:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4525,
                    "nodeType": "ExpressionStatement",
                    "src": "7054:55:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4531,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "7127:30:46",
                          "subExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4527,
                                "name": "ticketData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4255,
                                "src": "7128:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                  "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                }
                              },
                              "id": 4529,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4528,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4509,
                                "src": "7139:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7128:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                "typeString": "struct Quasar.Ticket storage ref"
                              }
                            },
                            "id": 4530,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isClaimed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4243,
                            "src": "7128:29:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "546865205554584f2068617320616c7265616479206265656e20636c61696d6564",
                          "id": 4532,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7159:35:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_42fd0d0be5a327d37eed70d846e1fbf1842b1c07eb7f4ec3b0755cee6e0a4359",
                            "typeString": "literal_string \"The UTXO has already been claimed\""
                          },
                          "value": "The UTXO has already been claimed"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_42fd0d0be5a327d37eed70d846e1fbf1842b1c07eb7f4ec3b0755cee6e0a4359",
                            "typeString": "literal_string \"The UTXO has already been claimed\""
                          }
                        ],
                        "id": 4526,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "7119:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4533,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7119:76:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4534,
                    "nodeType": "ExpressionStatement",
                    "src": "7119:76:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4541,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4536,
                                "name": "ticketData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4255,
                                "src": "7213:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                  "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                }
                              },
                              "id": 4538,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4537,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4509,
                                "src": "7224:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7213:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                "typeString": "struct Quasar.Ticket storage ref"
                              }
                            },
                            "id": 4539,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "validityTimestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4231,
                            "src": "7213:37:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4540,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7254:1:46",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7213:42:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "54686973205554584f20616c7265616479206861732061207469636b6574",
                          "id": 4542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7257:32:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_d75e1bb4ac0e9c16bb363f99e6c4008940bad86e6e0053761d1305d5448f347a",
                            "typeString": "literal_string \"This UTXO already has a ticket\""
                          },
                          "value": "This UTXO already has a ticket"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_d75e1bb4ac0e9c16bb363f99e6c4008940bad86e6e0053761d1305d5448f347a",
                            "typeString": "literal_string \"This UTXO already has a ticket\""
                          }
                        ],
                        "id": 4535,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "7205:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4543,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7205:85:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4544,
                    "nodeType": "ExpressionStatement",
                    "src": "7205:85:46"
                  },
                  {
                    "assignments": [
                      4548
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4548,
                        "name": "utxoPosDecoded",
                        "nodeType": "VariableDeclaration",
                        "scope": 4679,
                        "src": "7301:37:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                          "typeString": "struct PosLib.Position"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 4547,
                          "name": "PosLib.Position",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 16894,
                          "src": "7301:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Position_$16894_storage_ptr",
                            "typeString": "struct PosLib.Position"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4553,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4551,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4509,
                          "src": "7355:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4549,
                          "name": "PosLib",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17051,
                          "src": "7341:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_PosLib_$17051_$",
                            "typeString": "type(library PosLib)"
                          }
                        },
                        "id": 4550,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17050,
                        "src": "7341:13:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Position_$16894_memory_ptr_$",
                          "typeString": "function (uint256) pure returns (struct PosLib.Position memory)"
                        }
                      },
                      "id": 4552,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7341:22:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                        "typeString": "struct PosLib.Position memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "7301:62:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4559,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4555,
                              "name": "utxoPosDecoded",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4548,
                              "src": "7382:14:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                                "typeString": "struct PosLib.Position memory"
                              }
                            },
                            "id": 4556,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "blockNum",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16889,
                            "src": "7382:23:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 4557,
                              "name": "getLatestSafeBlock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4370,
                              "src": "7409:18:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 4558,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7409:20:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7382:47:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "546865205554584f2069732066726f6d206120626c6f636b206c61746572207468616e207468652073616665206c696d6974",
                          "id": 4560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7431:52:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_f048e877b5442d9dd919a4d58a5fa33b577f5829e3c77a4d14bb5d8479920b0d",
                            "typeString": "literal_string \"The UTXO is from a block later than the safe limit\""
                          },
                          "value": "The UTXO is from a block later than the safe limit"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_f048e877b5442d9dd919a4d58a5fa33b577f5829e3c77a4d14bb5d8479920b0d",
                            "typeString": "literal_string \"The UTXO is from a block later than the safe limit\""
                          }
                        ],
                        "id": 4554,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "7374:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4561,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7374:110:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4562,
                    "nodeType": "ExpressionStatement",
                    "src": "7374:110:46"
                  },
                  {
                    "assignments": [
                      4566
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4566,
                        "name": "decodedTx",
                        "nodeType": "VariableDeclaration",
                        "scope": 4679,
                        "src": "7495:52:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Transaction_$16102_memory_ptr",
                          "typeString": "struct PaymentTransactionModel.Transaction"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 4565,
                          "name": "PaymentTransactionModel.Transaction",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 16102,
                          "src": "7495:35:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Transaction_$16102_storage_ptr",
                            "typeString": "struct PaymentTransactionModel.Transaction"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4571,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4569,
                          "name": "rlpOutputCreationTx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4511,
                          "src": "7589:19:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4567,
                          "name": "PaymentTransactionModel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16301,
                          "src": "7558:23:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_PaymentTransactionModel_$16301_$",
                            "typeString": "type(library PaymentTransactionModel)"
                          }
                        },
                        "id": 4568,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16117,
                        "src": "7558:30:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_Transaction_$16102_memory_ptr_$",
                          "typeString": "function (bytes memory) pure returns (struct PaymentTransactionModel.Transaction memory)"
                        }
                      },
                      "id": 4570,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7558:51:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Transaction_$16102_memory_ptr",
                        "typeString": "struct PaymentTransactionModel.Transaction memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "7495:114:46"
                  },
                  {
                    "assignments": [
                      4575
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4575,
                        "name": "outputData",
                        "nodeType": "VariableDeclaration",
                        "scope": 4679,
                        "src": "7620:49:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                          "typeString": "struct FungibleTokenOutputModel.Output"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 4574,
                          "name": "FungibleTokenOutputModel.Output",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15744,
                          "src": "7620:31:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Output_$15744_storage_ptr",
                            "typeString": "struct FungibleTokenOutputModel.Output"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4582,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4578,
                          "name": "decodedTx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4566,
                          "src": "7714:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Transaction_$16102_memory_ptr",
                            "typeString": "struct PaymentTransactionModel.Transaction memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4579,
                            "name": "utxoPosDecoded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4548,
                            "src": "7725:14:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                              "typeString": "struct PosLib.Position memory"
                            }
                          },
                          "id": 4580,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "outputIndex",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16893,
                          "src": "7725:26:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Transaction_$16102_memory_ptr",
                            "typeString": "struct PaymentTransactionModel.Transaction memory"
                          },
                          {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4576,
                          "name": "PaymentTransactionModel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16301,
                          "src": "7680:23:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_PaymentTransactionModel_$16301_$",
                            "typeString": "type(library PaymentTransactionModel)"
                          }
                        },
                        "id": 4577,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getOutput",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16300,
                        "src": "7680:33:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_Transaction_$16102_memory_ptr_$_t_uint16_$returns$_t_struct$_Output_$15744_memory_ptr_$",
                          "typeString": "function (struct PaymentTransactionModel.Transaction memory,uint16) pure returns (struct FungibleTokenOutputModel.Output memory)"
                        }
                      },
                      "id": 4581,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7680:72:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                        "typeString": "struct FungibleTokenOutputModel.Output memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "7620:132:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4585,
                              "name": "outputData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4575,
                              "src": "7857:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                                "typeString": "struct FungibleTokenOutputModel.Output memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4586,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21272,
                                "src": "7869:3:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4587,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7869:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                                "typeString": "struct FungibleTokenOutputModel.Output memory"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 4584,
                            "name": "verifyOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5087,
                            "src": "7841:15:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_Output_$15744_memory_ptr_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (struct FungibleTokenOutputModel.Output memory,address) pure returns (bool)"
                            }
                          },
                          "id": 4588,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7841:39:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "576173206e6f742063616c6c656420627920746865204f7574707574206f776e6572",
                          "id": 4589,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7882:36:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_58631758b7ab4cbf5ca368a4a661f2b094c684caf3741f3c63a5c15e640e0a06",
                            "typeString": "literal_string \"Was not called by the Output owner\""
                          },
                          "value": "Was not called by the Output owner"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_58631758b7ab4cbf5ca368a4a661f2b094c684caf3741f3c63a5c15e640e0a06",
                            "typeString": "literal_string \"Was not called by the Output owner\""
                          }
                        ],
                        "id": 4583,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "7833:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4590,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7833:86:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4591,
                    "nodeType": "ExpressionStatement",
                    "src": "7833:86:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4595,
                              "name": "plasmaFramework",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4202,
                              "src": "7990:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                                "typeString": "contract PlasmaFramework"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4596,
                              "name": "rlpOutputCreationTx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4511,
                              "src": "8019:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4597,
                                  "name": "utxoPosDecoded",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4548,
                                  "src": "8052:14:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                                    "typeString": "struct PosLib.Position memory"
                                  }
                                },
                                "id": 4598,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "toStrictTxPos",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 16944,
                                "src": "8052:28:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_struct$_Position_$16894_memory_ptr_$returns$_t_struct$_Position_$16894_memory_ptr_$bound_to$_t_struct$_Position_$16894_memory_ptr_$",
                                  "typeString": "function (struct PosLib.Position memory) pure returns (struct PosLib.Position memory)"
                                }
                              },
                              "id": 4599,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8052:30:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                                "typeString": "struct PosLib.Position memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4600,
                              "name": "outputCreationTxInclusionProof",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4513,
                              "src": "8096:30:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                                "typeString": "contract PlasmaFramework"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                                "typeString": "struct PosLib.Position memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4593,
                              "name": "MoreVpFinalization",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13739,
                              "src": "7938:18:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MoreVpFinalization_$13739_$",
                                "typeString": "type(library MoreVpFinalization)"
                              }
                            },
                            "id": 4594,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isStandardFinalized",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13692,
                            "src": "7938:38:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_contract$_PlasmaFramework_$14728_$_t_bytes_memory_ptr_$_t_struct$_Position_$16894_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                              "typeString": "function (contract PlasmaFramework,bytes memory,struct PosLib.Position memory,bytes memory) view returns (bool)"
                            }
                          },
                          "id": 4601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7938:198:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "50726f766964656420547820646f65736e2774206578697374",
                          "id": 4602,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8138:27:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_810f45ff6bdd5e24d9726e09bbe8c7a76a1905c31f032f32fc245486dbadb351",
                            "typeString": "literal_string \"Provided Tx doesn't exist\""
                          },
                          "value": "Provided Tx doesn't exist"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_810f45ff6bdd5e24d9726e09bbe8c7a76a1905c31f032f32fc245486dbadb351",
                            "typeString": "literal_string \"Provided Tx doesn't exist\""
                          }
                        ],
                        "id": 4592,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "7930:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4603,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7930:236:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4604,
                    "nodeType": "ExpressionStatement",
                    "src": "7930:236:46"
                  },
                  {
                    "assignments": [
                      4606
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4606,
                        "name": "quasarFee",
                        "nodeType": "VariableDeclaration",
                        "scope": 4679,
                        "src": "8177:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4605,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8177:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4612,
                    "initialValue": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4607,
                          "name": "tokenData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5493,
                          "src": "8197:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Token_$5469_storage_$",
                            "typeString": "mapping(address => struct QuasarPool.Token storage ref)"
                          }
                        },
                        "id": 4610,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4608,
                            "name": "outputData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4575,
                            "src": "8207:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                              "typeString": "struct FungibleTokenOutputModel.Output memory"
                            }
                          },
                          "id": 4609,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "token",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15741,
                          "src": "8207:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8197:27:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Token_$5469_storage",
                          "typeString": "struct QuasarPool.Token storage ref"
                        }
                      },
                      "id": 4611,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "quasarFee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5468,
                      "src": "8197:37:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "8177:57:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4614,
                              "name": "outputData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4575,
                              "src": "8253:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                                "typeString": "struct FungibleTokenOutputModel.Output memory"
                              }
                            },
                            "id": 4615,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15743,
                            "src": "8253:17:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4616,
                            "name": "quasarFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4606,
                            "src": "8273:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8253:29:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "546865205554584f2069736e277420656e6f75676820746f20636f7665722074686520666565",
                          "id": 4618,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8284:40:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_48799fec64dcf34ceb3f806336e269d7d6fd610d050a9f6512604507900c3e7f",
                            "typeString": "literal_string \"The UTXO isn't enough to cover the fee\""
                          },
                          "value": "The UTXO isn't enough to cover the fee"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_48799fec64dcf34ceb3f806336e269d7d6fd610d050a9f6512604507900c3e7f",
                            "typeString": "literal_string \"The UTXO isn't enough to cover the fee\""
                          }
                        ],
                        "id": 4613,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "8245:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4619,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8245:80:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4620,
                    "nodeType": "ExpressionStatement",
                    "src": "8245:80:46"
                  },
                  {
                    "assignments": [
                      4622
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4622,
                        "name": "reservedAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 4679,
                        "src": "8335:22:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4621,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8335:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4628,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4626,
                          "name": "quasarFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4606,
                          "src": "8382:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4623,
                            "name": "outputData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4575,
                            "src": "8360:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                              "typeString": "struct FungibleTokenOutputModel.Output memory"
                            }
                          },
                          "id": 4624,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "amount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15743,
                          "src": "8360:17:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4625,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 19051,
                        "src": "8360:21:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 4627,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8360:32:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "8335:57:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4635,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4630,
                            "name": "reservedAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4622,
                            "src": "8410:14:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4631,
                              "name": "tokenUsableCapacity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5497,
                              "src": "8428:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 4634,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4632,
                                "name": "outputData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4575,
                                "src": "8448:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                                  "typeString": "struct FungibleTokenOutputModel.Output memory"
                                }
                              },
                              "id": 4633,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "token",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15741,
                              "src": "8448:16:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8428:37:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8410:55:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "52657175657374656420616d6f756e7420657863656564732074686520557361626c65204c69717564697479",
                          "id": 4636,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8467:46:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_1f702080734505012f640a87ef972cb9bb21bb5c450967c090841c0a04641dd4",
                            "typeString": "literal_string \"Requested amount exceeds the Usable Liqudity\""
                          },
                          "value": "Requested amount exceeds the Usable Liqudity"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_1f702080734505012f640a87ef972cb9bb21bb5c450967c090841c0a04641dd4",
                            "typeString": "literal_string \"Requested amount exceeds the Usable Liqudity\""
                          }
                        ],
                        "id": 4629,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "8402:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4637,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8402:112:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4638,
                    "nodeType": "ExpressionStatement",
                    "src": "8402:112:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4650,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4639,
                          "name": "tokenUsableCapacity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5497,
                          "src": "8525:19:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 4642,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4640,
                            "name": "outputData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4575,
                            "src": "8545:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                              "typeString": "struct FungibleTokenOutputModel.Output memory"
                            }
                          },
                          "id": 4641,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "token",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15741,
                          "src": "8545:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "8525:37:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4648,
                            "name": "reservedAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4622,
                            "src": "8607:14:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4643,
                              "name": "tokenUsableCapacity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5497,
                              "src": "8565:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 4646,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4644,
                                "name": "outputData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4575,
                                "src": "8585:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                                  "typeString": "struct FungibleTokenOutputModel.Output memory"
                                }
                              },
                              "id": 4645,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "token",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15741,
                              "src": "8585:16:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8565:37:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4647,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 19051,
                          "src": "8565:41:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 4649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8565:57:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "8525:97:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4651,
                    "nodeType": "ExpressionStatement",
                    "src": "8525:97:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4673,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4652,
                          "name": "ticketData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4255,
                          "src": "8632:10:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                            "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                          }
                        },
                        "id": 4654,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4653,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4509,
                          "src": "8643:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "8632:19:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                          "typeString": "struct Quasar.Ticket storage ref"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4656,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21272,
                              "src": "8661:3:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4657,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8661:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4661,
                                "name": "TICKET_VALIDITY_PERIOD",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4215,
                                "src": "8693:22:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4658,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21262,
                                  "src": "8673:5:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 4659,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "8673:15:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4660,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19026,
                              "src": "8673:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4662,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8673:43:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4663,
                              "name": "outputData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4575,
                              "src": "8718:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                                "typeString": "struct FungibleTokenOutputModel.Output memory"
                              }
                            },
                            "id": 4664,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15743,
                            "src": "8718:17:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4665,
                            "name": "reservedAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4622,
                            "src": "8737:14:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4666,
                              "name": "outputData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4575,
                              "src": "8753:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                                "typeString": "struct FungibleTokenOutputModel.Output memory"
                              }
                            },
                            "id": 4667,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "token",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15741,
                            "src": "8753:16:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4668,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21272,
                              "src": "8771:3:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4669,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8771:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4670,
                            "name": "rlpOutputCreationTx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4511,
                            "src": "8782:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 4671,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8803:5:46",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 4655,
                          "name": "Ticket",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4244,
                          "src": "8654:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_Ticket_$4244_storage_ptr_$",
                            "typeString": "type(struct Quasar.Ticket storage pointer)"
                          }
                        },
                        "id": 4672,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8654:155:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Ticket_$4244_memory",
                          "typeString": "struct Quasar.Ticket memory"
                        }
                      },
                      "src": "8632:177:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                        "typeString": "struct Quasar.Ticket storage ref"
                      }
                    },
                    "id": 4674,
                    "nodeType": "ExpressionStatement",
                    "src": "8632:177:46"
                  },
                  {
                    "eventCall": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4676,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4509,
                          "src": "8842:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 4675,
                        "name": "NewTicketObtained",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4263,
                        "src": "8824:17:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                          "typeString": "function (uint256)"
                        }
                      },
                      "id": 4677,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8824:26:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4678,
                    "nodeType": "EmitStatement",
                    "src": "8819:31:46"
                  }
                ]
              },
              "documentation": "@dev Obtain a ticket from the Quasar\n@notice Ticket is valid for four hours, pay bond here for obtaining ticket\n@param utxoPos Output that will be spent to the quasar later, is the ticket identifier\n@param rlpOutputCreationTx RLP-encoded transaction that created the output\n@param outputCreationTxInclusionProof Transaction inclusion proof",
              "id": 4680,
              "implemented": true,
              "kind": "function",
              "modifiers": [
                {
                  "arguments": [],
                  "id": 4516,
                  "modifierName": {
                    "argumentTypes": null,
                    "id": 4515,
                    "name": "onlyWhenNotPaused",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4279,
                    "src": "7024:17:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_modifier$__$",
                      "typeString": "modifier ()"
                    }
                  },
                  "nodeType": "ModifierInvocation",
                  "src": "7024:19:46"
                }
              ],
              "name": "obtainTicket",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 4514,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 4509,
                    "name": "utxoPos",
                    "nodeType": "VariableDeclaration",
                    "scope": 4680,
                    "src": "6913:15:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4508,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "6913:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4511,
                    "name": "rlpOutputCreationTx",
                    "nodeType": "VariableDeclaration",
                    "scope": 4680,
                    "src": "6930:32:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 4510,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "6930:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4513,
                    "name": "outputCreationTxInclusionProof",
                    "nodeType": "VariableDeclaration",
                    "scope": 4680,
                    "src": "6964:43:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 4512,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "6964:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "6912:96:46"
              },
              "returnParameters": {
                "id": 4517,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "7044:0:46"
              },
              "scope": 5441,
              "src": "6891:1966:46",
              "stateMutability": "payable",
              "superFunction": null,
              "visibility": "public"
            },
            {
              "body": {
                "id": 4752,
                "nodeType": "Block",
                "src": "9515:688:46",
                "statements": [
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4692,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4682,
                          "src": "9554:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 4691,
                        "name": "verifyTicketValidityForClaim",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5221,
                        "src": "9525:28:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                          "typeString": "function (uint256)"
                        }
                      },
                      "id": 4693,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9525:37:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4694,
                    "nodeType": "ExpressionStatement",
                    "src": "9525:37:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4696,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4682,
                          "src": "9602:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 4697,
                          "name": "rlpTxToQuasarOwner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4686,
                          "src": "9611:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 4695,
                        "name": "verifyClaimTxCorrectlyFormed",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5290,
                        "src": "9573:28:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                          "typeString": "function (uint256,bytes memory)"
                        }
                      },
                      "id": 4698,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9573:57:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4699,
                    "nodeType": "ExpressionStatement",
                    "src": "9573:57:46"
                  },
                  {
                    "assignments": [
                      4703
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4703,
                        "name": "utxoQuasarOwnerDecoded",
                        "nodeType": "VariableDeclaration",
                        "scope": 4752,
                        "src": "9641:45:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                          "typeString": "struct PosLib.Position"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 4702,
                          "name": "PosLib.Position",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 16894,
                          "src": "9641:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Position_$16894_storage_ptr",
                            "typeString": "struct PosLib.Position"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4708,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4706,
                          "name": "utxoPosQuasarOwner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4684,
                          "src": "9703:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4704,
                          "name": "PosLib",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17051,
                          "src": "9689:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_PosLib_$17051_$",
                            "typeString": "type(library PosLib)"
                          }
                        },
                        "id": 4705,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17050,
                        "src": "9689:13:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Position_$16894_memory_ptr_$",
                          "typeString": "function (uint256) pure returns (struct PosLib.Position memory)"
                        }
                      },
                      "id": 4707,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9689:33:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                        "typeString": "struct PosLib.Position memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "9641:81:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4712,
                              "name": "plasmaFramework",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4202,
                              "src": "9792:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                                "typeString": "contract PlasmaFramework"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4713,
                              "name": "rlpTxToQuasarOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4686,
                              "src": "9821:18:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4714,
                                  "name": "utxoQuasarOwnerDecoded",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4703,
                                  "src": "9853:22:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                                    "typeString": "struct PosLib.Position memory"
                                  }
                                },
                                "id": 4715,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "toStrictTxPos",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 16944,
                                "src": "9853:36:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_struct$_Position_$16894_memory_ptr_$returns$_t_struct$_Position_$16894_memory_ptr_$bound_to$_t_struct$_Position_$16894_memory_ptr_$",
                                  "typeString": "function (struct PosLib.Position memory) pure returns (struct PosLib.Position memory)"
                                }
                              },
                              "id": 4716,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9853:38:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                                "typeString": "struct PosLib.Position memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4717,
                              "name": "txToQuasarOwnerInclusionProof",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4688,
                              "src": "9905:29:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                                "typeString": "contract PlasmaFramework"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                                "typeString": "struct PosLib.Position memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4710,
                              "name": "MoreVpFinalization",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13739,
                              "src": "9740:18:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MoreVpFinalization_$13739_$",
                                "typeString": "type(library MoreVpFinalization)"
                              }
                            },
                            "id": 4711,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isStandardFinalized",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13692,
                            "src": "9740:38:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_contract$_PlasmaFramework_$14728_$_t_bytes_memory_ptr_$_t_struct$_Position_$16894_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                              "typeString": "function (contract PlasmaFramework,bytes memory,struct PosLib.Position memory,bytes memory) view returns (bool)"
                            }
                          },
                          "id": 4718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9740:204:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "50726f766964656420547820646f65736e2774206578697374",
                          "id": 4719,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9946:27:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_810f45ff6bdd5e24d9726e09bbe8c7a76a1905c31f032f32fc245486dbadb351",
                            "typeString": "literal_string \"Provided Tx doesn't exist\""
                          },
                          "value": "Provided Tx doesn't exist"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_810f45ff6bdd5e24d9726e09bbe8c7a76a1905c31f032f32fc245486dbadb351",
                            "typeString": "literal_string \"Provided Tx doesn't exist\""
                          }
                        ],
                        "id": 4709,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "9732:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4720,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9732:242:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4721,
                    "nodeType": "ExpressionStatement",
                    "src": "9732:242:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4727,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4722,
                            "name": "ticketData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4255,
                            "src": "9985:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                              "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                            }
                          },
                          "id": 4724,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4723,
                            "name": "utxoPos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4682,
                            "src": "9996:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9985:19:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                            "typeString": "struct Quasar.Ticket storage ref"
                          }
                        },
                        "id": 4725,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "isClaimed",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4243,
                        "src": "9985:29:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 4726,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10017:4:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "src": "9985:36:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 4728,
                    "nodeType": "ExpressionStatement",
                    "src": "9985:36:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4730,
                              "name": "ticketData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4255,
                              "src": "10040:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                              }
                            },
                            "id": 4732,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4731,
                              "name": "utxoPos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4682,
                              "src": "10051:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10040:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                              "typeString": "struct Quasar.Ticket storage ref"
                            }
                          },
                          "id": 4733,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "token",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4237,
                          "src": "10040:25:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4734,
                              "name": "ticketData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4255,
                              "src": "10067:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                              }
                            },
                            "id": 4736,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4735,
                              "name": "utxoPos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4682,
                              "src": "10078:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10067:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                              "typeString": "struct Quasar.Ticket storage ref"
                            }
                          },
                          "id": 4737,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "outputValue",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4233,
                          "src": "10067:31:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 4729,
                        "name": "utilize",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5440,
                        "src": "10032:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                          "typeString": "function (address,uint256)"
                        }
                      },
                      "id": 4738,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10032:67:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4739,
                    "nodeType": "ExpressionStatement",
                    "src": "10032:67:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4741,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4682,
                          "src": "10128:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4742,
                              "name": "ticketData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4255,
                              "src": "10137:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                              }
                            },
                            "id": 4744,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4743,
                              "name": "utxoPos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4682,
                              "src": "10148:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10137:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                              "typeString": "struct Quasar.Ticket storage ref"
                            }
                          },
                          "id": 4745,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "outputOwner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4229,
                          "src": "10137:31:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4746,
                              "name": "ticketData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4255,
                              "src": "10170:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                              }
                            },
                            "id": 4748,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4747,
                              "name": "utxoPos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4682,
                              "src": "10181:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10170:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                              "typeString": "struct Quasar.Ticket storage ref"
                            }
                          },
                          "id": 4749,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "token",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4237,
                          "src": "10170:25:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 4740,
                        "name": "runPayout",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5351,
                        "src": "10118:9:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_payable_$_t_address_$returns$__$",
                          "typeString": "function (uint256,address payable,address)"
                        }
                      },
                      "id": 4750,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10118:78:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4751,
                    "nodeType": "ExpressionStatement",
                    "src": "10118:78:46"
                  }
                ]
              },
              "documentation": "@dev Submit claim after spending the output to the quasar owner\n@param utxoPos pos of the output, which is the ticket identifier\n@param utxoPosQuasarOwner pos of the quasar owner's output\n@param rlpTxToQuasarOwner RLP-encoded transaction that spends the output to quasar owner\n@param txToQuasarOwnerInclusionProof Transaction Inclusion proof",
              "id": 4753,
              "implemented": true,
              "kind": "function",
              "modifiers": [],
              "name": "claim",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 4689,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 4682,
                    "name": "utxoPos",
                    "nodeType": "VariableDeclaration",
                    "scope": 4753,
                    "src": "9357:15:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4681,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "9357:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4684,
                    "name": "utxoPosQuasarOwner",
                    "nodeType": "VariableDeclaration",
                    "scope": 4753,
                    "src": "9382:26:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4683,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "9382:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4686,
                    "name": "rlpTxToQuasarOwner",
                    "nodeType": "VariableDeclaration",
                    "scope": 4753,
                    "src": "9418:31:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 4685,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "9418:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4688,
                    "name": "txToQuasarOwnerInclusionProof",
                    "nodeType": "VariableDeclaration",
                    "scope": 4753,
                    "src": "9459:42:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 4687,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "9459:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "9347:160:46"
              },
              "returnParameters": {
                "id": 4690,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "9515:0:46"
              },
              "scope": 5441,
              "src": "9333:870:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            {
              "body": {
                "id": 4852,
                "nodeType": "Block",
                "src": "10517:1039:46",
                "statements": [
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4761,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4755,
                          "src": "10556:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 4760,
                        "name": "verifyTicketValidityForClaim",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5221,
                        "src": "10527:28:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                          "typeString": "function (uint256)"
                        }
                      },
                      "id": 4762,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10527:37:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4763,
                    "nodeType": "ExpressionStatement",
                    "src": "10527:37:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4765,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4755,
                          "src": "10604:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 4766,
                          "name": "inFlightClaimTx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4757,
                          "src": "10613:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 4764,
                        "name": "verifyClaimTxCorrectlyFormed",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5290,
                        "src": "10575:28:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                          "typeString": "function (uint256,bytes memory)"
                        }
                      },
                      "id": 4767,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10575:54:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4768,
                    "nodeType": "ExpressionStatement",
                    "src": "10575:54:46"
                  },
                  {
                    "assignments": [
                      4770
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4770,
                        "name": "exitId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4852,
                        "src": "10669:14:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        "typeName": {
                          "id": 4769,
                          "name": "uint160",
                          "nodeType": "ElementaryTypeName",
                          "src": "10669:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4775,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4773,
                          "name": "inFlightClaimTx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4757,
                          "src": "10711:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4771,
                          "name": "ExitId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13554,
                          "src": "10686:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ExitId_$13554_$",
                            "typeString": "type(library ExitId)"
                          }
                        },
                        "id": 4772,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getInFlightExitId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13510,
                        "src": "10686:24:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint160_$",
                          "typeString": "function (bytes memory) pure returns (uint160)"
                        }
                      },
                      "id": 4774,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10686:41:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "10669:58:46"
                  },
                  {
                    "assignments": [
                      4779
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4779,
                        "name": "exitIdArr",
                        "nodeType": "VariableDeclaration",
                        "scope": 4852,
                        "src": "10737:26:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint160_$dyn_memory_ptr",
                          "typeString": "uint160[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4777,
                            "name": "uint160",
                            "nodeType": "ElementaryTypeName",
                            "src": "10737:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "id": 4778,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "10737:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint160_$dyn_storage_ptr",
                            "typeString": "uint160[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4785,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 4783,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10780:1:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "id": 4782,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "10766:13:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint160_$dyn_memory_$",
                          "typeString": "function (uint256) pure returns (uint160[] memory)"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4780,
                            "name": "uint160",
                            "nodeType": "ElementaryTypeName",
                            "src": "10770:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "id": 4781,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "10770:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint160_$dyn_storage_ptr",
                            "typeString": "uint160[]"
                          }
                        }
                      },
                      "id": 4784,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10766:16:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint160_$dyn_memory",
                        "typeString": "uint160[] memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "10737:45:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4790,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4786,
                          "name": "exitIdArr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4779,
                          "src": "10792:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint160_$dyn_memory_ptr",
                            "typeString": "uint160[] memory"
                          }
                        },
                        "id": 4788,
                        "indexExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4787,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10802:1:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "10792:12:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "id": 4789,
                        "name": "exitId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4770,
                        "src": "10807:6:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      "src": "10792:21:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "id": 4791,
                    "nodeType": "ExpressionStatement",
                    "src": "10792:21:46"
                  },
                  {
                    "assignments": [
                      4796
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4796,
                        "name": "ifeData",
                        "nodeType": "VariableDeclaration",
                        "scope": 4852,
                        "src": "10823:50:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_InFlightExit_$6287_memory_$dyn_memory_ptr",
                          "typeString": "struct PaymentExitDataModel.InFlightExit[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 4794,
                            "name": "PaymentExitDataModel.InFlightExit",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 6287,
                            "src": "10823:33:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_InFlightExit_$6287_storage_ptr",
                              "typeString": "struct PaymentExitDataModel.InFlightExit"
                            }
                          },
                          "id": 4795,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "10823:35:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_InFlightExit_$6287_storage_$dyn_storage_ptr",
                            "typeString": "struct PaymentExitDataModel.InFlightExit[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4801,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4799,
                          "name": "exitIdArr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4779,
                          "src": "10906:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint160_$dyn_memory_ptr",
                            "typeString": "uint160[] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_array$_t_uint160_$dyn_memory_ptr",
                            "typeString": "uint160[] memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4797,
                          "name": "paymentExitGame",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4204,
                          "src": "10876:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_PaymentExitGame_$6421",
                            "typeString": "contract PaymentExitGame"
                          }
                        },
                        "id": 4798,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "inFlightExits",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12348,
                        "src": "10876:29:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_array$_t_uint160_$dyn_memory_ptr_$returns$_t_array$_t_struct$_InFlightExit_$6287_memory_$dyn_memory_ptr_$",
                          "typeString": "function (uint160[] memory) view external returns (struct PaymentExitDataModel.InFlightExit memory[] memory)"
                        }
                      },
                      "id": 4800,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10876:40:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_InFlightExit_$6287_memory_$dyn_memory_ptr",
                        "typeString": "struct PaymentExitDataModel.InFlightExit memory[] memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "10823:93:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          "id": 4808,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4803,
                                "name": "ifeData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4796,
                                "src": "10934:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_InFlightExit_$6287_memory_$dyn_memory_ptr",
                                  "typeString": "struct PaymentExitDataModel.InFlightExit memory[] memory"
                                }
                              },
                              "id": 4805,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4804,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10942:1:46",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10934:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_InFlightExit_$6287_memory",
                                "typeString": "struct PaymentExitDataModel.InFlightExit memory"
                              }
                            },
                            "id": 4806,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "exitStartTimestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6268,
                            "src": "10934:29:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4807,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10967:1:46",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10934:34:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "49464520686173206e6f74206265656e2073746172746564",
                          "id": 4809,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10970:26:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_a05bec7b3022c73c65bbb742f5834fa393690c2d699ab472ae2c8884b194a5fb",
                            "typeString": "literal_string \"IFE has not been started\""
                          },
                          "value": "IFE has not been started"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_a05bec7b3022c73c65bbb742f5834fa393690c2d699ab472ae2c8884b194a5fb",
                            "typeString": "literal_string \"IFE has not been started\""
                          }
                        ],
                        "id": 4802,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "10926:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4810,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10926:71:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4811,
                    "nodeType": "ExpressionStatement",
                    "src": "10926:71:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4813,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21262,
                              "src": "11242:5:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 4814,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "11242:15:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4820,
                                "name": "IFE_CLAIM_MARGIN",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4218,
                                "src": "11295:16:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4815,
                                    "name": "ifeData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4796,
                                    "src": "11261:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_InFlightExit_$6287_memory_$dyn_memory_ptr",
                                      "typeString": "struct PaymentExitDataModel.InFlightExit memory[] memory"
                                    }
                                  },
                                  "id": 4817,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 4816,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11269:1:46",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "11261:10:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_InFlightExit_$6287_memory",
                                    "typeString": "struct PaymentExitDataModel.InFlightExit memory"
                                  }
                                },
                                "id": 4818,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "exitStartTimestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6268,
                                "src": "11261:29:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "id": 4819,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19026,
                              "src": "11261:33:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4821,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11261:51:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11242:70:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "49464520436c61696d20706572696f642068617320706173736564",
                          "id": 4823,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11314:29:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_7e5335f5d5298bc6cffb8a9fb8fe939521c0f6b222b0cc986462393510b1df5b",
                            "typeString": "literal_string \"IFE Claim period has passed\""
                          },
                          "value": "IFE Claim period has passed"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_7e5335f5d5298bc6cffb8a9fb8fe939521c0f6b222b0cc986462393510b1df5b",
                            "typeString": "literal_string \"IFE Claim period has passed\""
                          }
                        ],
                        "id": 4812,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "11234:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4824,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11234:110:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4825,
                    "nodeType": "ExpressionStatement",
                    "src": "11234:110:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4831,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4826,
                            "name": "ticketData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4255,
                            "src": "11355:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                              "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                            }
                          },
                          "id": 4828,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4827,
                            "name": "utxoPos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4755,
                            "src": "11366:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11355:19:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                            "typeString": "struct Quasar.Ticket storage ref"
                          }
                        },
                        "id": 4829,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "isClaimed",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4243,
                        "src": "11355:29:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 4830,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11387:4:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "src": "11355:36:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 4832,
                    "nodeType": "ExpressionStatement",
                    "src": "11355:36:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4845,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4833,
                          "name": "ifeClaimData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4259,
                          "src": "11401:12:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Claim_$4251_storage_$",
                            "typeString": "mapping(uint256 => struct Quasar.Claim storage ref)"
                          }
                        },
                        "id": 4835,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4834,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4755,
                          "src": "11414:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "11401:21:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Claim_$4251_storage",
                          "typeString": "struct Quasar.Claim storage ref"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4837,
                            "name": "inFlightClaimTx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4757,
                            "src": "11431:15:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4841,
                                "name": "IFE_CLAIM_WAITING_PERIOD",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4221,
                                "src": "11468:24:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4838,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21262,
                                  "src": "11448:5:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 4839,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "11448:15:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4840,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19026,
                              "src": "11448:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4842,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11448:45:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 4843,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11495:4:46",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 4836,
                          "name": "Claim",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4251,
                          "src": "11425:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_Claim_$4251_storage_ptr_$",
                            "typeString": "type(struct Quasar.Claim storage pointer)"
                          }
                        },
                        "id": 4844,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11425:75:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Claim_$4251_memory",
                          "typeString": "struct Quasar.Claim memory"
                        }
                      },
                      "src": "11401:99:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Claim_$4251_storage",
                        "typeString": "struct Quasar.Claim storage ref"
                      }
                    },
                    "id": 4846,
                    "nodeType": "ExpressionStatement",
                    "src": "11401:99:46"
                  },
                  {
                    "eventCall": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4848,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4755,
                          "src": "11533:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 4849,
                          "name": "exitId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4770,
                          "src": "11542:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        ],
                        "id": 4847,
                        "name": "IFEClaimSubmitted",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4269,
                        "src": "11515:17:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint160_$returns$__$",
                          "typeString": "function (uint256,uint160)"
                        }
                      },
                      "id": 4850,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11515:34:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4851,
                    "nodeType": "EmitStatement",
                    "src": "11510:39:46"
                  }
                ]
              },
              "documentation": "@dev Submit an IFE claim for claims without inclusion proof\n@param utxoPos pos of the output, which is the ticket identifier\n@param inFlightClaimTx in-flight tx that spends the output to quasar owner",
              "id": 4853,
              "implemented": true,
              "kind": "function",
              "modifiers": [],
              "name": "ifeClaim",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 4758,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 4755,
                    "name": "utxoPos",
                    "nodeType": "VariableDeclaration",
                    "scope": 4853,
                    "src": "10463:15:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4754,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "10463:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4757,
                    "name": "inFlightClaimTx",
                    "nodeType": "VariableDeclaration",
                    "scope": 4853,
                    "src": "10480:28:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 4756,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "10480:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "10462:47:46"
              },
              "returnParameters": {
                "id": 4759,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "10517:0:46"
              },
              "scope": 5441,
              "src": "10445:1111:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            {
              "body": {
                "id": 5010,
                "nodeType": "Block",
                "src": "12533:1522:46",
                "statements": [
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 4879,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4871,
                            "name": "senderData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4867,
                            "src": "12551:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4875,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21272,
                                      "src": "12592:3:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 4876,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12592:10:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4873,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21259,
                                    "src": "12575:3:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 4874,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "12575:16:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 4877,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12575:28:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 4872,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21266,
                              "src": "12565:9:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 4878,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12565:39:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "12551:53:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "496e636f72726563742053656e64657244617461",
                          "id": 4880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12606:22:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_f7fd820d072c70b8084abdcf533b9c0fe404753dd11ae685285513e198768fe2",
                            "typeString": "literal_string \"Incorrect SenderData\""
                          },
                          "value": "Incorrect SenderData"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_f7fd820d072c70b8084abdcf533b9c0fe404753dd11ae685285513e198768fe2",
                            "typeString": "literal_string \"Incorrect SenderData\""
                          }
                        ],
                        "id": 4870,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "12543:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4881,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12543:86:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4882,
                    "nodeType": "ExpressionStatement",
                    "src": "12543:86:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4884,
                                "name": "ticketData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4255,
                                "src": "12647:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                  "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                }
                              },
                              "id": 4886,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4885,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4855,
                                "src": "12658:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12647:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                "typeString": "struct Quasar.Ticket storage ref"
                              }
                            },
                            "id": 4887,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isClaimed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4243,
                            "src": "12647:29:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4888,
                                "name": "ifeClaimData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4259,
                                "src": "12680:12:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Claim_$4251_storage_$",
                                  "typeString": "mapping(uint256 => struct Quasar.Claim storage ref)"
                                }
                              },
                              "id": 4890,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4889,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4855,
                                "src": "12693:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12680:21:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Claim_$4251_storage",
                                "typeString": "struct Quasar.Claim storage ref"
                              }
                            },
                            "id": 4891,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isValid",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4250,
                            "src": "12680:29:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "12647:62:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "54686520636c61696d206973206e6f74206368616c6c656e676561626c65",
                          "id": 4893,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12711:32:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_85785d24f25d4cb709f189134c24ae813be5a78a0578599b77bed05c3145a963",
                            "typeString": "literal_string \"The claim is not challengeable\""
                          },
                          "value": "The claim is not challengeable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_85785d24f25d4cb709f189134c24ae813be5a78a0578599b77bed05c3145a963",
                            "typeString": "literal_string \"The claim is not challengeable\""
                          }
                        ],
                        "id": 4883,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "12639:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4894,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12639:105:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4895,
                    "nodeType": "ExpressionStatement",
                    "src": "12639:105:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4903,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4897,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21262,
                              "src": "12762:5:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 4898,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12762:15:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4899,
                                "name": "ifeClaimData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4259,
                                "src": "12781:12:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Claim_$4251_storage_$",
                                  "typeString": "mapping(uint256 => struct Quasar.Claim storage ref)"
                                }
                              },
                              "id": 4901,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4900,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4855,
                                "src": "12794:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12781:21:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Claim_$4251_storage",
                                "typeString": "struct Quasar.Claim storage ref"
                              }
                            },
                            "id": 4902,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "finalizationTimestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4248,
                            "src": "12781:43:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12762:62:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "546865206368616c6c656e676520706572696f64206973206f766572",
                          "id": 4904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12826:30:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_4390aa32b4a8858ea9ee9f8c5d232522e86f7698fb255a835a674073d68c8eda",
                            "typeString": "literal_string \"The challenge period is over\""
                          },
                          "value": "The challenge period is over"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_4390aa32b4a8858ea9ee9f8c5d232522e86f7698fb255a835a674073d68c8eda",
                            "typeString": "literal_string \"The challenge period is over\""
                          }
                        ],
                        "id": 4896,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "12754:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4905,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12754:103:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4906,
                    "nodeType": "ExpressionStatement",
                    "src": "12754:103:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 4917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4909,
                                    "name": "ifeClaimData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4259,
                                    "src": "12898:12:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Claim_$4251_storage_$",
                                      "typeString": "mapping(uint256 => struct Quasar.Claim storage ref)"
                                    }
                                  },
                                  "id": 4911,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 4910,
                                    "name": "utxoPos",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4855,
                                    "src": "12911:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12898:21:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Claim_$4251_storage",
                                    "typeString": "struct Quasar.Claim storage ref"
                                  }
                                },
                                "id": 4912,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rlpClaimTx",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4246,
                                "src": "12898:32:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              ],
                              "id": 4908,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21266,
                              "src": "12888:9:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 4913,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12888:43:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4915,
                                "name": "rlpChallengeTx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4857,
                                "src": "12945:14:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 4914,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21266,
                              "src": "12935:9:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 4916,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12935:25:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "12888:72:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "546865206368616c6c656e67696e67207472616e73616374696f6e206973207468652073616d652061732074686520636c61696d207472616e73616374696f6e",
                          "id": 4918,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12974:66:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_19dbc5f66c4534a024f1574337144a2aec9bed40081c4ae1551000c09bbe10f1",
                            "typeString": "literal_string \"The challenging transaction is the same as the claim transaction\""
                          },
                          "value": "The challenging transaction is the same as the claim transaction"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_19dbc5f66c4534a024f1574337144a2aec9bed40081c4ae1551000c09bbe10f1",
                            "typeString": "literal_string \"The challenging transaction is the same as the claim transaction\""
                          }
                        ],
                        "id": 4907,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "12867:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4919,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12867:183:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4920,
                    "nodeType": "ExpressionStatement",
                    "src": "12867:183:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4924,
                              "name": "plasmaFramework",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4202,
                              "src": "13121:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                                "typeString": "contract PlasmaFramework"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4925,
                              "name": "rlpChallengeTx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4857,
                              "src": "13150:14:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                                "typeString": "contract PlasmaFramework"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4922,
                              "name": "MoreVpFinalization",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13739,
                              "src": "13069:18:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MoreVpFinalization_$13739_$",
                                "typeString": "type(library MoreVpFinalization)"
                              }
                            },
                            "id": 4923,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isProtocolFinalized",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13738,
                            "src": "13069:38:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_contract$_PlasmaFramework_$14728_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                              "typeString": "function (contract PlasmaFramework,bytes memory) view returns (bool)"
                            }
                          },
                          "id": 4926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13069:105:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "546865206368616c6c656e67696e67207472616e73616374696f6e20697320696e76616c6964",
                          "id": 4927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13176:40:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_c368b48b689bce28da3ee6a42aecb448db000ad90ecd5ad8fc148a8e63a785bc",
                            "typeString": "literal_string \"The challenging transaction is invalid\""
                          },
                          "value": "The challenging transaction is invalid"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_c368b48b689bce28da3ee6a42aecb448db000ad90ecd5ad8fc148a8e63a785bc",
                            "typeString": "literal_string \"The challenging transaction is invalid\""
                          }
                        ],
                        "id": 4921,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "13061:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4928,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13061:156:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4929,
                    "nodeType": "ExpressionStatement",
                    "src": "13061:156:46"
                  },
                  {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4933,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4930,
                          "name": "otherInputCreationTx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4865,
                          "src": "13232:20:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 4931,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "13232:27:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4932,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13263:1:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "13232:32:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "id": 4971,
                      "nodeType": "Block",
                      "src": "13429:319:46",
                      "statements": [
                        {
                          "assignments": [
                            4949
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4949,
                              "name": "decodedTx",
                              "nodeType": "VariableDeclaration",
                              "scope": 4971,
                              "src": "13443:52:46",
                              "stateVariable": false,
                              "storageLocation": "memory",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Transaction_$16102_memory_ptr",
                                "typeString": "struct PaymentTransactionModel.Transaction"
                              },
                              "typeName": {
                                "contractScope": null,
                                "id": 4948,
                                "name": "PaymentTransactionModel.Transaction",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 16102,
                                "src": "13443:35:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Transaction_$16102_storage_ptr",
                                  "typeString": "struct PaymentTransactionModel.Transaction"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 4957,
                          "initialValue": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4952,
                                    "name": "ifeClaimData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4259,
                                    "src": "13541:12:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Claim_$4251_storage_$",
                                      "typeString": "mapping(uint256 => struct Quasar.Claim storage ref)"
                                    }
                                  },
                                  "id": 4954,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 4953,
                                    "name": "utxoPos",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4855,
                                    "src": "13554:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13541:21:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Claim_$4251_storage",
                                    "typeString": "struct Quasar.Claim storage ref"
                                  }
                                },
                                "id": 4955,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rlpClaimTx",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4246,
                                "src": "13541:32:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 4950,
                                "name": "PaymentTransactionModel",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16301,
                                "src": "13510:23:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_PaymentTransactionModel_$16301_$",
                                  "typeString": "type(library PaymentTransactionModel)"
                                }
                              },
                              "id": 4951,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16117,
                              "src": "13510:30:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_Transaction_$16102_memory_ptr_$",
                                "typeString": "function (bytes memory) pure returns (struct PaymentTransactionModel.Transaction memory)"
                              }
                            },
                            "id": 4956,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13510:64:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Transaction_$16102_memory_ptr",
                              "typeString": "struct PaymentTransactionModel.Transaction memory"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "13443:131:46"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 4960,
                                        "name": "decodedTx",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4949,
                                        "src": "13621:9:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Transaction_$16102_memory_ptr",
                                          "typeString": "struct PaymentTransactionModel.Transaction memory"
                                        }
                                      },
                                      "id": 4961,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "inputs",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 16094,
                                      "src": "13621:16:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                                        "typeString": "bytes32[] memory"
                                      }
                                    },
                                    "id": 4963,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 4962,
                                      "name": "otherInputIndex",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4863,
                                      "src": "13638:15:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "13621:33:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 4959,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13613:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint256"
                                },
                                "id": 4964,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13613:42:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 4965,
                                "name": "otherInputCreationTx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4865,
                                "src": "13657:20:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 4966,
                                "name": "rlpChallengeTx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4857,
                                "src": "13679:14:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 4967,
                                "name": "challengeTxInputIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4859,
                                "src": "13695:21:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 4968,
                                "name": "challengeTxWitness",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4861,
                                "src": "13718:18:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 4958,
                              "name": "verifySpendingCondition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5176,
                              "src": "13589:23:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint16_$_t_bytes_memory_ptr_$returns$__$",
                                "typeString": "function (uint256,bytes memory,bytes memory,uint16,bytes memory)"
                              }
                            },
                            "id": 4969,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13589:148:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 4970,
                          "nodeType": "ExpressionStatement",
                          "src": "13589:148:46"
                        }
                      ]
                    },
                    "id": 4972,
                    "nodeType": "IfStatement",
                    "src": "13228:520:46",
                    "trueBody": {
                      "id": 4945,
                      "nodeType": "Block",
                      "src": "13266:157:46",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4935,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4855,
                                "src": "13304:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4936,
                                    "name": "ticketData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4255,
                                    "src": "13313:10:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                      "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                    }
                                  },
                                  "id": 4938,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 4937,
                                    "name": "utxoPos",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4855,
                                    "src": "13324:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13313:19:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                    "typeString": "struct Quasar.Ticket storage ref"
                                  }
                                },
                                "id": 4939,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rlpOutputCreationTx",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4241,
                                "src": "13313:39:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 4940,
                                "name": "rlpChallengeTx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4857,
                                "src": "13354:14:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 4941,
                                "name": "challengeTxInputIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4859,
                                "src": "13370:21:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 4942,
                                "name": "challengeTxWitness",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4861,
                                "src": "13393:18:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 4934,
                              "name": "verifySpendingCondition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5176,
                              "src": "13280:23:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint16_$_t_bytes_memory_ptr_$returns$__$",
                                "typeString": "function (uint256,bytes memory,bytes memory,uint16,bytes memory)"
                              }
                            },
                            "id": 4943,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13280:132:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 4944,
                          "nodeType": "ExpressionStatement",
                          "src": "13280:132:46"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4978,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4973,
                            "name": "ifeClaimData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4259,
                            "src": "13758:12:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Claim_$4251_storage_$",
                              "typeString": "mapping(uint256 => struct Quasar.Claim storage ref)"
                            }
                          },
                          "id": 4975,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4974,
                            "name": "utxoPos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4855,
                            "src": "13771:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13758:21:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Claim_$4251_storage",
                            "typeString": "struct Quasar.Claim storage ref"
                          }
                        },
                        "id": 4976,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "isValid",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4250,
                        "src": "13758:29:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 4977,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13790:5:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      "src": "13758:37:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 4979,
                    "nodeType": "ExpressionStatement",
                    "src": "13758:37:46"
                  },
                  {
                    "assignments": [
                      4981
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4981,
                        "name": "ticket",
                        "nodeType": "VariableDeclaration",
                        "scope": 5010,
                        "src": "13805:20:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Ticket_$4244_memory_ptr",
                          "typeString": "struct Quasar.Ticket"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 4980,
                          "name": "Ticket",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4244,
                          "src": "13805:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Ticket_$4244_storage_ptr",
                            "typeString": "struct Quasar.Ticket"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4985,
                    "initialValue": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4982,
                        "name": "ticketData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4255,
                        "src": "13828:10:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                          "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                        }
                      },
                      "id": 4984,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4983,
                        "name": "utxoPos",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4855,
                        "src": "13839:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "13828:19:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                        "typeString": "struct Quasar.Ticket storage ref"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "13805:42:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4998,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4986,
                          "name": "tokenUsableCapacity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5497,
                          "src": "13857:19:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 4989,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4987,
                            "name": "ticket",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4981,
                            "src": "13877:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Ticket_$4244_memory_ptr",
                              "typeString": "struct Quasar.Ticket memory"
                            }
                          },
                          "id": 4988,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "token",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4237,
                          "src": "13877:12:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "13857:33:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4995,
                              "name": "ticket",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4981,
                              "src": "13931:6:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Ticket_$4244_memory_ptr",
                                "typeString": "struct Quasar.Ticket memory"
                              }
                            },
                            "id": 4996,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "reservedAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4235,
                            "src": "13931:21:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4990,
                              "name": "tokenUsableCapacity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5497,
                              "src": "13893:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 4993,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4991,
                                "name": "ticket",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4981,
                                "src": "13913:6:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Ticket_$4244_memory_ptr",
                                  "typeString": "struct Quasar.Ticket memory"
                                }
                              },
                              "id": 4992,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "token",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4237,
                              "src": "13913:12:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13893:33:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4994,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 19026,
                          "src": "13893:37:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 4997,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13893:60:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "13857:96:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4999,
                    "nodeType": "ExpressionStatement",
                    "src": "13857:96:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5003,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21272,
                            "src": "14001:3:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 5004,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "14001:10:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5005,
                            "name": "ticket",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4981,
                            "src": "14013:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Ticket_$4244_memory_ptr",
                              "typeString": "struct Quasar.Ticket memory"
                            }
                          },
                          "id": 5006,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "bondValue",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4239,
                          "src": "14013:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 5007,
                          "name": "SAFE_GAS_STIPEND",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5474,
                          "src": "14031:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5000,
                          "name": "SafeEthTransfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17707,
                          "src": "13963:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_SafeEthTransfer_$17707_$",
                            "typeString": "type(library SafeEthTransfer)"
                          }
                        },
                        "id": 5002,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "transferRevertOnError",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17679,
                        "src": "13963:37:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$_t_uint256_$returns$__$",
                          "typeString": "function (address payable,uint256,uint256)"
                        }
                      },
                      "id": 5008,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13963:85:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5009,
                    "nodeType": "ExpressionStatement",
                    "src": "13963:85:46"
                  }
                ]
              },
              "documentation": "@dev Challenge an IFE claim\n@notice A challenge is required if any of the claimTx's inputs are double spent\n@param utxoPos pos of the output, which is the ticket identifier\n@param rlpChallengeTx RLP-encoded challenge transaction\n@param challengeTxInputIndex index pos of the same utxo in the challenge transaction\n@param challengeTxWitness Witness for challenging transaction\n@param otherInputIndex (optional) index pos of another input from the claimTx that is spent\n@param otherInputCreationTx (optional) Transaction that created this shared input\n@param senderData A keccak256 hash of the sender's address",
              "id": 5011,
              "implemented": true,
              "kind": "function",
              "modifiers": [],
              "name": "challengeIfeClaim",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 4868,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 4855,
                    "name": "utxoPos",
                    "nodeType": "VariableDeclaration",
                    "scope": 5011,
                    "src": "12285:15:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4854,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "12285:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4857,
                    "name": "rlpChallengeTx",
                    "nodeType": "VariableDeclaration",
                    "scope": 5011,
                    "src": "12310:27:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 4856,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "12310:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4859,
                    "name": "challengeTxInputIndex",
                    "nodeType": "VariableDeclaration",
                    "scope": 5011,
                    "src": "12347:28:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    },
                    "typeName": {
                      "id": 4858,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "12347:6:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4861,
                    "name": "challengeTxWitness",
                    "nodeType": "VariableDeclaration",
                    "scope": 5011,
                    "src": "12385:31:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 4860,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "12385:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4863,
                    "name": "otherInputIndex",
                    "nodeType": "VariableDeclaration",
                    "scope": 5011,
                    "src": "12426:22:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    },
                    "typeName": {
                      "id": 4862,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "12426:6:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4865,
                    "name": "otherInputCreationTx",
                    "nodeType": "VariableDeclaration",
                    "scope": 5011,
                    "src": "12458:33:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 4864,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "12458:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4867,
                    "name": "senderData",
                    "nodeType": "VariableDeclaration",
                    "scope": 5011,
                    "src": "12501:18:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "typeName": {
                      "id": 4866,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "12501:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "12275:250:46"
              },
              "returnParameters": {
                "id": 4869,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "12533:0:46"
              },
              "scope": 5441,
              "src": "12249:1806:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            {
              "body": {
                "id": 5065,
                "nodeType": "Block",
                "src": "14251:435:46",
                "statements": [
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5017,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21262,
                              "src": "14269:5:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 5018,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "14269:15:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5019,
                                "name": "ifeClaimData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4259,
                                "src": "14287:12:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Claim_$4251_storage_$",
                                  "typeString": "mapping(uint256 => struct Quasar.Claim storage ref)"
                                }
                              },
                              "id": 5021,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 5020,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5013,
                                "src": "14300:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14287:21:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Claim_$4251_storage",
                                "typeString": "struct Quasar.Claim storage ref"
                              }
                            },
                            "id": 5022,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "finalizationTimestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4248,
                            "src": "14287:43:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14269:61:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "54686520636c61696d206973206e6f742066696e616c697a656420796574",
                          "id": 5024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "14332:32:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_28978c503024d7768d0d8a04b669daaee2a5baae7aaeaab0d95eb9095ab62e8c",
                            "typeString": "literal_string \"The claim is not finalized yet\""
                          },
                          "value": "The claim is not finalized yet"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_28978c503024d7768d0d8a04b669daaee2a5baae7aaeaab0d95eb9095ab62e8c",
                            "typeString": "literal_string \"The claim is not finalized yet\""
                          }
                        ],
                        "id": 5016,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "14261:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 5025,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14261:104:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5026,
                    "nodeType": "ExpressionStatement",
                    "src": "14261:104:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5028,
                              "name": "ifeClaimData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4259,
                              "src": "14383:12:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Claim_$4251_storage_$",
                                "typeString": "mapping(uint256 => struct Quasar.Claim storage ref)"
                              }
                            },
                            "id": 5030,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5029,
                              "name": "utxoPos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5013,
                              "src": "14396:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14383:21:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Claim_$4251_storage",
                              "typeString": "struct Quasar.Claim storage ref"
                            }
                          },
                          "id": 5031,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "isValid",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4250,
                          "src": "14383:29:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "54686520636c61696d2068617320616c7265616479206265656e20636c61696d6564206f72206368616c6c656e676564",
                          "id": 5032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "14414:50:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_b11e0a5c71b1dd1a7f3f14d7b527f87bff185063e15820706b99a4b0f43ef52f",
                            "typeString": "literal_string \"The claim has already been claimed or challenged\""
                          },
                          "value": "The claim has already been claimed or challenged"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_b11e0a5c71b1dd1a7f3f14d7b527f87bff185063e15820706b99a4b0f43ef52f",
                            "typeString": "literal_string \"The claim has already been claimed or challenged\""
                          }
                        ],
                        "id": 5027,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "14375:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 5033,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14375:90:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5034,
                    "nodeType": "ExpressionStatement",
                    "src": "14375:90:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 5040,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5035,
                            "name": "ifeClaimData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4259,
                            "src": "14475:12:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Claim_$4251_storage_$",
                              "typeString": "mapping(uint256 => struct Quasar.Claim storage ref)"
                            }
                          },
                          "id": 5037,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5036,
                            "name": "utxoPos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5013,
                            "src": "14488:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14475:21:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Claim_$4251_storage",
                            "typeString": "struct Quasar.Claim storage ref"
                          }
                        },
                        "id": 5038,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "isValid",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4250,
                        "src": "14475:29:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 5039,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14507:5:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      "src": "14475:37:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 5041,
                    "nodeType": "ExpressionStatement",
                    "src": "14475:37:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5043,
                              "name": "ticketData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4255,
                              "src": "14531:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                              }
                            },
                            "id": 5045,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5044,
                              "name": "utxoPos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5013,
                              "src": "14542:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14531:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                              "typeString": "struct Quasar.Ticket storage ref"
                            }
                          },
                          "id": 5046,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "token",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4237,
                          "src": "14531:25:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5047,
                              "name": "ticketData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4255,
                              "src": "14558:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                              }
                            },
                            "id": 5049,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5048,
                              "name": "utxoPos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5013,
                              "src": "14569:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14558:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                              "typeString": "struct Quasar.Ticket storage ref"
                            }
                          },
                          "id": 5050,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "outputValue",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4233,
                          "src": "14558:31:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 5042,
                        "name": "utilize",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5440,
                        "src": "14523:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                          "typeString": "function (address,uint256)"
                        }
                      },
                      "id": 5051,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14523:67:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5052,
                    "nodeType": "ExpressionStatement",
                    "src": "14523:67:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5054,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5013,
                          "src": "14611:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5055,
                              "name": "ticketData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4255,
                              "src": "14620:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                              }
                            },
                            "id": 5057,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5056,
                              "name": "utxoPos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5013,
                              "src": "14631:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14620:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                              "typeString": "struct Quasar.Ticket storage ref"
                            }
                          },
                          "id": 5058,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "outputOwner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4229,
                          "src": "14620:31:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5059,
                              "name": "ticketData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4255,
                              "src": "14653:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                              }
                            },
                            "id": 5061,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5060,
                              "name": "utxoPos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5013,
                              "src": "14664:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14653:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                              "typeString": "struct Quasar.Ticket storage ref"
                            }
                          },
                          "id": 5062,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "token",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4237,
                          "src": "14653:25:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 5053,
                        "name": "runPayout",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5351,
                        "src": "14601:9:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_payable_$_t_address_$returns$__$",
                          "typeString": "function (uint256,address payable,address)"
                        }
                      },
                      "id": 5063,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14601:78:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5064,
                    "nodeType": "ExpressionStatement",
                    "src": "14601:78:46"
                  }
                ]
              },
              "documentation": "@dev Process the IFE claim to get liquid funds\n@param utxoPos pos of the output, which is the ticket identifier",
              "id": 5066,
              "implemented": true,
              "kind": "function",
              "modifiers": [],
              "name": "processIfeClaim",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 5014,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 5013,
                    "name": "utxoPos",
                    "nodeType": "VariableDeclaration",
                    "scope": 5066,
                    "src": "14227:15:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 5012,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "14227:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "14226:17:46"
              },
              "returnParameters": {
                "id": 5015,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "14251:0:46"
              },
              "scope": 5441,
              "src": "14202:484:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            {
              "body": {
                "id": 5086,
                "nodeType": "Block",
                "src": "15096:136:46",
                "statements": [
                  {
                    "assignments": [
                      5076
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5076,
                        "name": "outputOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 5086,
                        "src": "15106:19:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5075,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15106:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5081,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5079,
                          "name": "output",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5068,
                          "src": "15167:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                            "typeString": "struct FungibleTokenOutputModel.Output memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                            "typeString": "struct FungibleTokenOutputModel.Output memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5077,
                          "name": "PaymentTransactionModel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16301,
                          "src": "15128:23:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_PaymentTransactionModel_$16301_$",
                            "typeString": "type(library PaymentTransactionModel)"
                          }
                        },
                        "id": 5078,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getOutputOwner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16276,
                        "src": "15128:38:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_Output_$15744_memory_ptr_$returns$_t_address_payable_$",
                          "typeString": "function (struct FungibleTokenOutputModel.Output memory) pure returns (address payable)"
                        }
                      },
                      "id": 5080,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15128:46:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "15106:68:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 5084,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 5082,
                        "name": "outputOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5076,
                        "src": "15191:11:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 5083,
                        "name": "expectedOutputOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5070,
                        "src": "15206:19:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "15191:34:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "functionReturnParameters": 5074,
                    "id": 5085,
                    "nodeType": "Return",
                    "src": "15184:41:46"
                  }
                ]
              },
              "documentation": "@dev Verify the owner of the output\n@param output Output Data\n@param expectedOutputOwner expected owner of the output",
              "id": 5087,
              "implemented": true,
              "kind": "function",
              "modifiers": [],
              "name": "verifyOwnership",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 5071,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 5068,
                    "name": "output",
                    "nodeType": "VariableDeclaration",
                    "scope": 5087,
                    "src": "14993:45:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                      "typeString": "struct FungibleTokenOutputModel.Output"
                    },
                    "typeName": {
                      "contractScope": null,
                      "id": 5067,
                      "name": "FungibleTokenOutputModel.Output",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 15744,
                      "src": "14993:31:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Output_$15744_storage_ptr",
                        "typeString": "struct FungibleTokenOutputModel.Output"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 5070,
                    "name": "expectedOutputOwner",
                    "nodeType": "VariableDeclaration",
                    "scope": 5087,
                    "src": "15040:27:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 5069,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "15040:7:46",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "14992:76:46"
              },
              "returnParameters": {
                "id": 5074,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 5073,
                    "name": "",
                    "nodeType": "VariableDeclaration",
                    "scope": 5087,
                    "src": "15090:4:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "typeName": {
                      "id": 5072,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "15090:4:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "15089:6:46"
              },
              "scope": 5441,
              "src": "14968:264:46",
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "private"
            },
            {
              "body": {
                "id": 5175,
                "nodeType": "Block",
                "src": "15824:902:46",
                "statements": [
                  {
                    "assignments": [
                      5103
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5103,
                        "name": "challengingTx",
                        "nodeType": "VariableDeclaration",
                        "scope": 5175,
                        "src": "15834:51:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Transaction_$15866_memory_ptr",
                          "typeString": "struct GenericTransaction.Transaction"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 5102,
                          "name": "GenericTransaction.Transaction",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15866,
                          "src": "15834:30:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Transaction_$15866_storage_ptr",
                            "typeString": "struct GenericTransaction.Transaction"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5108,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5106,
                          "name": "rlpChallengeTx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5093,
                          "src": "15914:14:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5104,
                          "name": "GenericTransaction",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16053,
                          "src": "15888:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_GenericTransaction_$16053_$",
                            "typeString": "type(library GenericTransaction)"
                          }
                        },
                        "id": 5105,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15980,
                        "src": "15888:25:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_Transaction_$15866_memory_ptr_$",
                          "typeString": "function (bytes memory) pure returns (struct GenericTransaction.Transaction memory)"
                        }
                      },
                      "id": 5107,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15888:41:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Transaction_$15866_memory_ptr",
                        "typeString": "struct GenericTransaction.Transaction memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "15834:95:46"
                  },
                  {
                    "assignments": [
                      5112
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5112,
                        "name": "inputTx",
                        "nodeType": "VariableDeclaration",
                        "scope": 5175,
                        "src": "15940:45:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Transaction_$15866_memory_ptr",
                          "typeString": "struct GenericTransaction.Transaction"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 5111,
                          "name": "GenericTransaction.Transaction",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15866,
                          "src": "15940:30:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Transaction_$15866_storage_ptr",
                            "typeString": "struct GenericTransaction.Transaction"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5117,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5115,
                          "name": "rlpOutputCreationTx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5091,
                          "src": "16014:19:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5113,
                          "name": "GenericTransaction",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16053,
                          "src": "15988:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_GenericTransaction_$16053_$",
                            "typeString": "type(library GenericTransaction)"
                          }
                        },
                        "id": 5114,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15980,
                        "src": "15988:25:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_Transaction_$15866_memory_ptr_$",
                          "typeString": "function (bytes memory) pure returns (struct GenericTransaction.Transaction memory)"
                        }
                      },
                      "id": 5116,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15988:46:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Transaction_$15866_memory_ptr",
                        "typeString": "struct GenericTransaction.Transaction memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "15940:94:46"
                  },
                  {
                    "assignments": [
                      5121
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5121,
                        "name": "utxoPosDecoded",
                        "nodeType": "VariableDeclaration",
                        "scope": 5175,
                        "src": "16044:37:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                          "typeString": "struct PosLib.Position"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 5120,
                          "name": "PosLib.Position",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 16894,
                          "src": "16044:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Position_$16894_storage_ptr",
                            "typeString": "struct PosLib.Position"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5126,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5124,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5089,
                          "src": "16098:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5122,
                          "name": "PosLib",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17051,
                          "src": "16084:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_PosLib_$17051_$",
                            "typeString": "type(library PosLib)"
                          }
                        },
                        "id": 5123,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17050,
                        "src": "16084:13:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Position_$16894_memory_ptr_$",
                          "typeString": "function (uint256) pure returns (struct PosLib.Position memory)"
                        }
                      },
                      "id": 5125,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16084:22:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                        "typeString": "struct PosLib.Position memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "16044:62:46"
                  },
                  {
                    "assignments": [
                      5130
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5130,
                        "name": "output",
                        "nodeType": "VariableDeclaration",
                        "scope": 5175,
                        "src": "16116:39:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Output_$15871_memory_ptr",
                          "typeString": "struct GenericTransaction.Output"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 5129,
                          "name": "GenericTransaction.Output",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15871,
                          "src": "16116:25:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Output_$15871_storage_ptr",
                            "typeString": "struct GenericTransaction.Output"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5137,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5133,
                          "name": "inputTx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5112,
                          "src": "16187:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Transaction_$15866_memory_ptr",
                            "typeString": "struct GenericTransaction.Transaction memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5134,
                            "name": "utxoPosDecoded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5121,
                            "src": "16196:14:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                              "typeString": "struct PosLib.Position memory"
                            }
                          },
                          "id": 5135,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "outputIndex",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16893,
                          "src": "16196:26:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Transaction_$15866_memory_ptr",
                            "typeString": "struct GenericTransaction.Transaction memory"
                          },
                          {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5131,
                          "name": "GenericTransaction",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16053,
                          "src": "16158:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_GenericTransaction_$16053_$",
                            "typeString": "type(library GenericTransaction)"
                          }
                        },
                        "id": 5132,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getOutput",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16004,
                        "src": "16158:28:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_Transaction_$15866_memory_ptr_$_t_uint16_$returns$_t_struct$_Output_$15871_memory_ptr_$",
                          "typeString": "function (struct GenericTransaction.Transaction memory,uint16) pure returns (struct GenericTransaction.Output memory)"
                        }
                      },
                      "id": 5136,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16158:65:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Output_$15871_memory_ptr",
                        "typeString": "struct GenericTransaction.Output memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "16116:107:46"
                  },
                  {
                    "assignments": [
                      5139
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5139,
                        "name": "condition",
                        "nodeType": "VariableDeclaration",
                        "scope": 5175,
                        "src": "16234:28:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ISpendingCondition_$6210",
                          "typeString": "contract ISpendingCondition"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 5138,
                          "name": "ISpendingCondition",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6210,
                          "src": "16234:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISpendingCondition_$6210",
                            "typeString": "contract ISpendingCondition"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5147,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5142,
                            "name": "output",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5130,
                            "src": "16323:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Output_$15871_memory_ptr",
                              "typeString": "struct GenericTransaction.Output memory"
                            }
                          },
                          "id": 5143,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "outputType",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15868,
                          "src": "16323:17:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5144,
                            "name": "challengingTx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5103,
                            "src": "16342:13:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Transaction_$15866_memory_ptr",
                              "typeString": "struct GenericTransaction.Transaction memory"
                            }
                          },
                          "id": 5145,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "txType",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15855,
                          "src": "16342:20:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5140,
                          "name": "spendingConditionRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4206,
                          "src": "16265:25:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_SpendingConditionRegistry_$13263",
                            "typeString": "contract SpendingConditionRegistry"
                          }
                        },
                        "id": 5141,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "spendingConditions",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13197,
                        "src": "16265:44:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_uint256_$_t_uint256_$returns$_t_contract$_ISpendingCondition_$6210_$",
                          "typeString": "function (uint256,uint256) view external returns (contract ISpendingCondition)"
                        }
                      },
                      "id": 5146,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16265:107:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ISpendingCondition_$6210",
                        "typeString": "contract ISpendingCondition"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "16234:138:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 5155,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5150,
                                "name": "condition",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5139,
                                "src": "16398:9:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ISpendingCondition_$6210",
                                  "typeString": "contract ISpendingCondition"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ISpendingCondition_$6210",
                                  "typeString": "contract ISpendingCondition"
                                }
                              ],
                              "id": 5149,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "16390:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 5151,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16390:18:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5153,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16420:1:46",
                                "subdenomination": null,
                                "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": 5152,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "16412:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 5154,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16412:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "16390:32:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "5370656e64696e6720636f6e646974696f6e20636f6e7472616374206e6f7420666f756e64",
                          "id": 5156,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16424:39:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_b4aa84575f85fd8ffa5a844bb84cfd83d563fdea54e239771e74bbe396bb8887",
                            "typeString": "literal_string \"Spending condition contract not found\""
                          },
                          "value": "Spending condition contract not found"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_b4aa84575f85fd8ffa5a844bb84cfd83d563fdea54e239771e74bbe396bb8887",
                            "typeString": "literal_string \"Spending condition contract not found\""
                          }
                        ],
                        "id": 5148,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "16382:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 5157,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16382:82:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5158,
                    "nodeType": "ExpressionStatement",
                    "src": "16382:82:46"
                  },
                  {
                    "assignments": [
                      5160
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5160,
                        "name": "isSpent",
                        "nodeType": "VariableDeclaration",
                        "scope": 5175,
                        "src": "16474:12:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5159,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "16474:4:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5169,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5163,
                          "name": "rlpOutputCreationTx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5091,
                          "src": "16519:19:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 5164,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5089,
                          "src": "16552:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 5165,
                          "name": "rlpChallengeTx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5093,
                          "src": "16573:14:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 5166,
                          "name": "challengeTxInputIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5095,
                          "src": "16601:21:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 5167,
                          "name": "challengeTxWitness",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5097,
                          "src": "16636:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          },
                          {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5161,
                          "name": "condition",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5139,
                          "src": "16489:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISpendingCondition_$6210",
                            "typeString": "contract ISpendingCondition"
                          }
                        },
                        "id": 5162,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "verify",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 6209,
                        "src": "16489:16:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint16_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (bytes memory,uint256,bytes memory,uint16,bytes memory) view external returns (bool)"
                        }
                      },
                      "id": 5168,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16489:175:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "16474:190:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5171,
                          "name": "isSpent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5160,
                          "src": "16682:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "5370656e64696e6720636f6e646974696f6e206661696c6564",
                          "id": 5172,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16691:27:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_5116ed6369ff40290f13c69820da691aaadc6a65d588a7285be98ccf11b518d6",
                            "typeString": "literal_string \"Spending condition failed\""
                          },
                          "value": "Spending condition failed"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_5116ed6369ff40290f13c69820da691aaadc6a65d588a7285be98ccf11b518d6",
                            "typeString": "literal_string \"Spending condition failed\""
                          }
                        ],
                        "id": 5170,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "16674:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 5173,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16674:45:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5174,
                    "nodeType": "ExpressionStatement",
                    "src": "16674:45:46"
                  }
                ]
              },
              "documentation": "@dev Verify the challengeTx spends the output\n@param utxoPos pos of the output\n@param rlpOutputCreationTx transaction that created the output\n@param rlpChallengeTx RLP-encoded challenge transaction\n@param challengeTxInputIndex index pos of the same utxo in the challenge transaction\n@param challengeTxWitness Witness for challenging transaction",
              "id": 5176,
              "implemented": true,
              "kind": "function",
              "modifiers": [],
              "name": "verifySpendingCondition",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 5098,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 5089,
                    "name": "utxoPos",
                    "nodeType": "VariableDeclaration",
                    "scope": 5176,
                    "src": "15673:15:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 5088,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "15673:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 5091,
                    "name": "rlpOutputCreationTx",
                    "nodeType": "VariableDeclaration",
                    "scope": 5176,
                    "src": "15690:32:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 5090,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "15690:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 5093,
                    "name": "rlpChallengeTx",
                    "nodeType": "VariableDeclaration",
                    "scope": 5176,
                    "src": "15724:27:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 5092,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "15724:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 5095,
                    "name": "challengeTxInputIndex",
                    "nodeType": "VariableDeclaration",
                    "scope": 5176,
                    "src": "15753:28:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    },
                    "typeName": {
                      "id": 5094,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "15753:6:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 5097,
                    "name": "challengeTxWitness",
                    "nodeType": "VariableDeclaration",
                    "scope": 5176,
                    "src": "15783:31:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 5096,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "15783:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "15672:143:46"
              },
              "returnParameters": {
                "id": 5099,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "15824:0:46"
              },
              "scope": 5441,
              "src": "15640:1086:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "private"
            },
            {
              "body": {
                "id": 5220,
                "nodeType": "Block",
                "src": "16928:346:46",
                "statements": [
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "16946:30:46",
                          "subExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5182,
                                "name": "ticketData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4255,
                                "src": "16947:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                  "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                }
                              },
                              "id": 5184,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 5183,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5178,
                                "src": "16958:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "16947:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                "typeString": "struct Quasar.Ticket storage ref"
                              }
                            },
                            "id": 5185,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isClaimed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4243,
                            "src": "16947:29:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "416c726561647920636c61696d6564",
                          "id": 5187,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16978:17:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_8d5f1075ee9cf123a11fed45e62459547c318d7703b4e3920694b01d6b8c6dcf",
                            "typeString": "literal_string \"Already claimed\""
                          },
                          "value": "Already claimed"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_8d5f1075ee9cf123a11fed45e62459547c318d7703b4e3920694b01d6b8c6dcf",
                            "typeString": "literal_string \"Already claimed\""
                          }
                        ],
                        "id": 5181,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "16938:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 5188,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16938:58:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5189,
                    "nodeType": "ExpressionStatement",
                    "src": "16938:58:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          "id": 5197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5191,
                                "name": "ticketData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4255,
                                "src": "17014:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                  "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                }
                              },
                              "id": 5193,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 5192,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5178,
                                "src": "17025:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "17014:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                "typeString": "struct Quasar.Ticket storage ref"
                              }
                            },
                            "id": 5194,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "outputOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4229,
                            "src": "17014:31:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5195,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21272,
                              "src": "17049:3:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5196,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "17049:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "17014:45:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "4e6f742063616c6c656420627920746865207469636b6574206f776e6572",
                          "id": 5198,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17061:32:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_06983273dd37bb6f71c22eed243cec456e431a6ed746718530dc2eae7f6f3f5c",
                            "typeString": "literal_string \"Not called by the ticket owner\""
                          },
                          "value": "Not called by the ticket owner"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_06983273dd37bb6f71c22eed243cec456e431a6ed746718530dc2eae7f6f3f5c",
                            "typeString": "literal_string \"Not called by the ticket owner\""
                          }
                        ],
                        "id": 5190,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "17006:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 5199,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17006:88:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5200,
                    "nodeType": "ExpressionStatement",
                    "src": "17006:88:46"
                  },
                  {
                    "assignments": [
                      5202
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5202,
                        "name": "expiryTimestamp",
                        "nodeType": "VariableDeclaration",
                        "scope": 5220,
                        "src": "17104:23:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5201,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17104:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5207,
                    "initialValue": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5203,
                          "name": "ticketData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4255,
                          "src": "17130:10:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                            "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                          }
                        },
                        "id": 5205,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5204,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5178,
                          "src": "17141:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "17130:19:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                          "typeString": "struct Quasar.Ticket storage ref"
                        }
                      },
                      "id": 5206,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "validityTimestamp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4231,
                      "src": "17130:37:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "17104:63:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5211,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5209,
                              "name": "expiryTimestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5202,
                              "src": "17185:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 5210,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17204:1:46",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "17185:20:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5215,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5212,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21262,
                                "src": "17209:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 5213,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "17209:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 5214,
                              "name": "expiryTimestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5202,
                              "src": "17228:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "17209:34:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "17185:58:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "5469636b6574206973206e6f742076616c6964",
                          "id": 5217,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17245:21:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_bc0c9fbcc9f2c8c89b400b3ed93bcbcf5269062a45d38dda5515585f601d4dae",
                            "typeString": "literal_string \"Ticket is not valid\""
                          },
                          "value": "Ticket is not valid"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_bc0c9fbcc9f2c8c89b400b3ed93bcbcf5269062a45d38dda5515585f601d4dae",
                            "typeString": "literal_string \"Ticket is not valid\""
                          }
                        ],
                        "id": 5208,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "17177:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 5218,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17177:90:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5219,
                    "nodeType": "ExpressionStatement",
                    "src": "17177:90:46"
                  }
                ]
              },
              "documentation": "@dev Verify the validity of the ticket\n@param utxoPos pos of the output, which is the ticket identifier",
              "id": 5221,
              "implemented": true,
              "kind": "function",
              "modifiers": [],
              "name": "verifyTicketValidityForClaim",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 5179,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 5178,
                    "name": "utxoPos",
                    "nodeType": "VariableDeclaration",
                    "scope": 5221,
                    "src": "16903:15:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 5177,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "16903:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "16902:17:46"
              },
              "returnParameters": {
                "id": 5180,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "16928:0:46"
              },
              "scope": 5441,
              "src": "16865:409:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "private"
            },
            {
              "body": {
                "id": 5289,
                "nodeType": "Block",
                "src": "17562:891:46",
                "statements": [
                  {
                    "assignments": [
                      5231
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5231,
                        "name": "decodedTx",
                        "nodeType": "VariableDeclaration",
                        "scope": 5289,
                        "src": "17572:52:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Transaction_$16102_memory_ptr",
                          "typeString": "struct PaymentTransactionModel.Transaction"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 5230,
                          "name": "PaymentTransactionModel.Transaction",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 16102,
                          "src": "17572:35:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Transaction_$16102_storage_ptr",
                            "typeString": "struct PaymentTransactionModel.Transaction"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5236,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5234,
                          "name": "claimTx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5225,
                          "src": "17666:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5232,
                          "name": "PaymentTransactionModel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16301,
                          "src": "17635:23:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_PaymentTransactionModel_$16301_$",
                            "typeString": "type(library PaymentTransactionModel)"
                          }
                        },
                        "id": 5233,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16117,
                        "src": "17635:30:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_Transaction_$16102_memory_ptr_$",
                          "typeString": "function (bytes memory) pure returns (struct PaymentTransactionModel.Transaction memory)"
                        }
                      },
                      "id": 5235,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17635:39:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Transaction_$16102_memory_ptr",
                        "typeString": "struct PaymentTransactionModel.Transaction memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "17572:102:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 5245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5238,
                                "name": "decodedTx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5231,
                                "src": "17766:9:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Transaction_$16102_memory_ptr",
                                  "typeString": "struct PaymentTransactionModel.Transaction memory"
                                }
                              },
                              "id": 5239,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "inputs",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16094,
                              "src": "17766:16:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 5241,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 5240,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17783:1:46",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "17766:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5243,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5223,
                                "src": "17797:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 5242,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17789:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": "bytes32"
                            },
                            "id": 5244,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17789:16:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "17766:39:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "54686520636c61696d207472616e73616374696f6e20646f6573206e6f74207370656e642074686520636f7272656374206f7574707574",
                          "id": 5246,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17807:57:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_ab7b322122809c384e2acaf43352ba2b07c6def6c5a7716838ac506e76810073",
                            "typeString": "literal_string \"The claim transaction does not spend the correct output\""
                          },
                          "value": "The claim transaction does not spend the correct output"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_ab7b322122809c384e2acaf43352ba2b07c6def6c5a7716838ac506e76810073",
                            "typeString": "literal_string \"The claim transaction does not spend the correct output\""
                          }
                        ],
                        "id": 5237,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "17758:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 5247,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17758:107:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5248,
                    "nodeType": "ExpressionStatement",
                    "src": "17758:107:46"
                  },
                  {
                    "assignments": [
                      5252
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5252,
                        "name": "outputData",
                        "nodeType": "VariableDeclaration",
                        "scope": 5289,
                        "src": "17936:49:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                          "typeString": "struct FungibleTokenOutputModel.Output"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 5251,
                          "name": "FungibleTokenOutputModel.Output",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15744,
                          "src": "17936:31:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Output_$15744_storage_ptr",
                            "typeString": "struct FungibleTokenOutputModel.Output"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5258,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5255,
                          "name": "decodedTx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5231,
                          "src": "18030:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Transaction_$16102_memory_ptr",
                            "typeString": "struct PaymentTransactionModel.Transaction memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5256,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "18041:1:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Transaction_$16102_memory_ptr",
                            "typeString": "struct PaymentTransactionModel.Transaction memory"
                          },
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5253,
                          "name": "PaymentTransactionModel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16301,
                          "src": "17996:23:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_PaymentTransactionModel_$16301_$",
                            "typeString": "type(library PaymentTransactionModel)"
                          }
                        },
                        "id": 5254,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getOutput",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16300,
                        "src": "17996:33:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_Transaction_$16102_memory_ptr_$_t_uint16_$returns$_t_struct$_Output_$15744_memory_ptr_$",
                          "typeString": "function (struct PaymentTransactionModel.Transaction memory,uint16) pure returns (struct FungibleTokenOutputModel.Output memory)"
                        }
                      },
                      "id": 5257,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17996:47:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                        "typeString": "struct FungibleTokenOutputModel.Output memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "17936:107:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5261,
                              "name": "outputData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5252,
                              "src": "18119:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                                "typeString": "struct FungibleTokenOutputModel.Output memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5262,
                              "name": "quasarOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4208,
                              "src": "18131:11:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                                "typeString": "struct FungibleTokenOutputModel.Output memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5260,
                            "name": "verifyOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5087,
                            "src": "18103:15:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_Output_$15744_memory_ptr_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (struct FungibleTokenOutputModel.Output memory,address) pure returns (bool)"
                            }
                          },
                          "id": 5263,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18103:40:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "546865206f7574707574206973206e6f74206f776e65642062792074686520717561736172206f776e6572",
                          "id": 5264,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "18145:45:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_429c1781148adc401e34cad2bb38e8f1e3f28c6a8dc1d8a6d94ddee8d796a5ab",
                            "typeString": "literal_string \"The output is not owned by the quasar owner\""
                          },
                          "value": "The output is not owned by the quasar owner"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_429c1781148adc401e34cad2bb38e8f1e3f28c6a8dc1d8a6d94ddee8d796a5ab",
                            "typeString": "literal_string \"The output is not owned by the quasar owner\""
                          }
                        ],
                        "id": 5259,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "18095:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 5265,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18095:96:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5266,
                    "nodeType": "ExpressionStatement",
                    "src": "18095:96:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5268,
                                "name": "ticketData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4255,
                                "src": "18256:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                  "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                }
                              },
                              "id": 5270,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 5269,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5223,
                                "src": "18267:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "18256:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                "typeString": "struct Quasar.Ticket storage ref"
                              }
                            },
                            "id": 5271,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "outputValue",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4233,
                            "src": "18256:31:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5272,
                              "name": "outputData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5252,
                              "src": "18291:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                                "typeString": "struct FungibleTokenOutputModel.Output memory"
                              }
                            },
                            "id": 5273,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15743,
                            "src": "18291:17:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18256:52:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "57726f6e6720616d6f756e742073656e7420746f20717561736172206f776e6572",
                          "id": 5275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "18310:35:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_018c8acb65627762d1bf430b914e98cbabd7845cb0bf72817cb201968d9f24ee",
                            "typeString": "literal_string \"Wrong amount sent to quasar owner\""
                          },
                          "value": "Wrong amount sent to quasar owner"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_018c8acb65627762d1bf430b914e98cbabd7845cb0bf72817cb201968d9f24ee",
                            "typeString": "literal_string \"Wrong amount sent to quasar owner\""
                          }
                        ],
                        "id": 5267,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "18248:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 5276,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18248:98:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5277,
                    "nodeType": "ExpressionStatement",
                    "src": "18248:98:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 5285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5279,
                                "name": "ticketData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4255,
                                "src": "18364:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                  "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                }
                              },
                              "id": 5281,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 5280,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5223,
                                "src": "18375:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "18364:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                "typeString": "struct Quasar.Ticket storage ref"
                              }
                            },
                            "id": 5282,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "token",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4237,
                            "src": "18364:25:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5283,
                              "name": "outputData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5252,
                              "src": "18393:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                                "typeString": "struct FungibleTokenOutputModel.Output memory"
                              }
                            },
                            "id": 5284,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "token",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15741,
                            "src": "18393:16:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "18364:45:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "57726f6e6720746f6b656e2073656e7420746f20717561736172206f776e6572",
                          "id": 5286,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "18411:34:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_bf44cd705eb4612fac6e81ccb247c85bfc6f571f41fc6e54e3f635ae405e4084",
                            "typeString": "literal_string \"Wrong token sent to quasar owner\""
                          },
                          "value": "Wrong token sent to quasar owner"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_bf44cd705eb4612fac6e81ccb247c85bfc6f571f41fc6e54e3f635ae405e4084",
                            "typeString": "literal_string \"Wrong token sent to quasar owner\""
                          }
                        ],
                        "id": 5278,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "18356:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 5287,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18356:90:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5288,
                    "nodeType": "ExpressionStatement",
                    "src": "18356:90:46"
                  }
                ]
              },
              "documentation": "@dev Verify the claim Tx is properly formed\n@param utxoPos pos of the output, which is the ticket identifier\n@param claimTx the Claim Tx to the quasar owner",
              "id": 5290,
              "implemented": true,
              "kind": "function",
              "modifiers": [],
              "name": "verifyClaimTxCorrectlyFormed",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 5226,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 5223,
                    "name": "utxoPos",
                    "nodeType": "VariableDeclaration",
                    "scope": 5290,
                    "src": "17515:15:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 5222,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "17515:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 5225,
                    "name": "claimTx",
                    "nodeType": "VariableDeclaration",
                    "scope": 5290,
                    "src": "17532:20:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 5224,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "17532:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "17514:39:46"
              },
              "returnParameters": {
                "id": 5227,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "17562:0:46"
              },
              "scope": 5441,
              "src": "17477:976:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "private"
            },
            {
              "body": {
                "id": 5350,
                "nodeType": "Block",
                "src": "18759:471:46",
                "statements": [
                  {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 5303,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 5299,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5296,
                        "src": "18773:5:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5301,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18790:1:46",
                            "subdenomination": null,
                            "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": 5300,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "18782:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 5302,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18782:10:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "18773:19:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "id": 5348,
                      "nodeType": "Block",
                      "src": "19011:213:46",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5330,
                                "name": "outputOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5294,
                                "src": "19052:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 5331,
                                    "name": "ticketData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4255,
                                    "src": "19065:10:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                      "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                    }
                                  },
                                  "id": 5333,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 5332,
                                    "name": "utxoPos",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5292,
                                    "src": "19076:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "19065:19:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                    "typeString": "struct Quasar.Ticket storage ref"
                                  }
                                },
                                "id": 5334,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "reservedAmount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4235,
                                "src": "19065:34:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5327,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5296,
                                    "src": "19032:5:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 5326,
                                  "name": "IERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19795,
                                  "src": "19025:6:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$19795_$",
                                    "typeString": "type(contract IERC20)"
                                  }
                                },
                                "id": 5328,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19025:13:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$19795",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 5329,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "safeTransfer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19828,
                              "src": "19025:26:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$19795_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$19795_$",
                                "typeString": "function (contract IERC20,address,uint256)"
                              }
                            },
                            "id": 5335,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19025:75:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 5336,
                          "nodeType": "ExpressionStatement",
                          "src": "19025:75:46"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5340,
                                "name": "outputOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5294,
                                "src": "19152:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 5341,
                                    "name": "ticketData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4255,
                                    "src": "19165:10:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                      "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                    }
                                  },
                                  "id": 5343,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 5342,
                                    "name": "utxoPos",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5292,
                                    "src": "19176:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "19165:19:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                    "typeString": "struct Quasar.Ticket storage ref"
                                  }
                                },
                                "id": 5344,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "bondValue",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4239,
                                "src": "19165:29:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 5345,
                                "name": "SAFE_GAS_STIPEND",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5474,
                                "src": "19196:16:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 5337,
                                "name": "SafeEthTransfer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17707,
                                "src": "19114:15:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_SafeEthTransfer_$17707_$",
                                  "typeString": "type(library SafeEthTransfer)"
                                }
                              },
                              "id": 5339,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "transferRevertOnError",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17679,
                              "src": "19114:37:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$_t_uint256_$returns$__$",
                                "typeString": "function (address payable,uint256,uint256)"
                              }
                            },
                            "id": 5346,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19114:99:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 5347,
                          "nodeType": "ExpressionStatement",
                          "src": "19114:99:46"
                        }
                      ]
                    },
                    "id": 5349,
                    "nodeType": "IfStatement",
                    "src": "18769:455:46",
                    "trueBody": {
                      "id": 5325,
                      "nodeType": "Block",
                      "src": "18794:211:46",
                      "statements": [
                        {
                          "assignments": [
                            5305
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 5305,
                              "name": "totalAmount",
                              "nodeType": "VariableDeclaration",
                              "scope": 5325,
                              "src": "18808:19:46",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 5304,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "18808:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 5316,
                          "initialValue": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 5311,
                                    "name": "ticketData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4255,
                                    "src": "18869:10:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                      "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                    }
                                  },
                                  "id": 5313,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 5312,
                                    "name": "utxoPos",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5292,
                                    "src": "18880:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18869:19:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                    "typeString": "struct Quasar.Ticket storage ref"
                                  }
                                },
                                "id": 5314,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "bondValue",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4239,
                                "src": "18869:29:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 5306,
                                    "name": "ticketData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4255,
                                    "src": "18830:10:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                      "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                    }
                                  },
                                  "id": 5308,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 5307,
                                    "name": "utxoPos",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5292,
                                    "src": "18841:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18830:19:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                    "typeString": "struct Quasar.Ticket storage ref"
                                  }
                                },
                                "id": 5309,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "reservedAmount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4235,
                                "src": "18830:34:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5310,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19026,
                              "src": "18830:38:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 5315,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18830:69:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "18808:91:46"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5320,
                                "name": "outputOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5294,
                                "src": "18951:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 5321,
                                "name": "totalAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5305,
                                "src": "18964:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 5322,
                                "name": "SAFE_GAS_STIPEND",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5474,
                                "src": "18977:16:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 5317,
                                "name": "SafeEthTransfer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17707,
                                "src": "18913:15:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_SafeEthTransfer_$17707_$",
                                  "typeString": "type(library SafeEthTransfer)"
                                }
                              },
                              "id": 5319,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "transferRevertOnError",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17679,
                              "src": "18913:37:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$_t_uint256_$returns$__$",
                                "typeString": "function (address payable,uint256,uint256)"
                              }
                            },
                            "id": 5323,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18913:81:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 5324,
                          "nodeType": "ExpressionStatement",
                          "src": "18913:81:46"
                        }
                      ]
                    }
                  }
                ]
              },
              "documentation": "@dev Payout liquid funds\n@param utxoPos pos of the output, which is the ticket identifier\n@param outputOwner the recipient of the funds\n@param token the token to payout",
              "id": 5351,
              "implemented": true,
              "kind": "function",
              "modifiers": [],
              "name": "runPayout",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 5297,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 5292,
                    "name": "utxoPos",
                    "nodeType": "VariableDeclaration",
                    "scope": 5351,
                    "src": "18690:15:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 5291,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "18690:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 5294,
                    "name": "outputOwner",
                    "nodeType": "VariableDeclaration",
                    "scope": 5351,
                    "src": "18707:27:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    },
                    "typeName": {
                      "id": 5293,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "18707:15:46",
                      "stateMutability": "payable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 5296,
                    "name": "token",
                    "nodeType": "VariableDeclaration",
                    "scope": 5351,
                    "src": "18736:13:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 5295,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "18736:7:46",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "18689:61:46"
              },
              "returnParameters": {
                "id": 5298,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "18759:0:46"
              },
              "scope": 5441,
              "src": "18671:559:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "private"
            },
            {
              "body": {
                "id": 5439,
                "nodeType": "Block",
                "src": "19463:931:46",
                "statements": [
                  {
                    "assignments": [
                      5359
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5359,
                        "name": "qTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 5439,
                        "src": "19473:21:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5358,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19473:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5364,
                    "initialValue": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5360,
                          "name": "tokenData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5493,
                          "src": "19497:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Token_$5469_storage_$",
                            "typeString": "mapping(address => struct QuasarPool.Token storage ref)"
                          }
                        },
                        "id": 5362,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5361,
                          "name": "token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5353,
                          "src": "19507:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "19497:16:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Token_$5469_storage",
                          "typeString": "struct QuasarPool.Token storage ref"
                        }
                      },
                      "id": 5363,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "qTokenAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5460,
                      "src": "19497:30:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "19473:54:46"
                  },
                  {
                    "assignments": [
                      5366
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5366,
                        "name": "totalQTokenSupply",
                        "nodeType": "VariableDeclaration",
                        "scope": 5439,
                        "src": "19537:25:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5365,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19537:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5372,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5368,
                              "name": "qTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5359,
                              "src": "19572:13:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5367,
                            "name": "IERC20",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19795,
                            "src": "19565:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IERC20_$19795_$",
                              "typeString": "type(contract IERC20)"
                            }
                          },
                          "id": 5369,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19565:21:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$19795",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 5370,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "totalSupply",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 19733,
                        "src": "19565:33:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                          "typeString": "function () view external returns (uint256)"
                        }
                      },
                      "id": 5371,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19565:35:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "19537:63:46"
                  },
                  {
                    "assignments": [
                      5374
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5374,
                        "name": "quasarFee",
                        "nodeType": "VariableDeclaration",
                        "scope": 5439,
                        "src": "19610:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5373,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19610:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5379,
                    "initialValue": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5375,
                          "name": "tokenData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5493,
                          "src": "19630:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Token_$5469_storage_$",
                            "typeString": "mapping(address => struct QuasarPool.Token storage ref)"
                          }
                        },
                        "id": 5377,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5376,
                          "name": "token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5353,
                          "src": "19640:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "19630:16:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Token_$5469_storage",
                          "typeString": "struct QuasarPool.Token storage ref"
                        }
                      },
                      "id": 5378,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "quasarFee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5468,
                      "src": "19630:26:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "19610:46:46"
                  },
                  {
                    "assignments": [
                      5381
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5381,
                        "name": "numerator",
                        "nodeType": "VariableDeclaration",
                        "scope": 5439,
                        "src": "19933:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5380,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19933:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5389,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5384,
                              "name": "tokenData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5493,
                              "src": "19967:9:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Token_$5469_storage_$",
                                "typeString": "mapping(address => struct QuasarPool.Token storage ref)"
                              }
                            },
                            "id": 5386,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5385,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5353,
                              "src": "19977:5:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "19967:16:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Token_$5469_storage",
                              "typeString": "struct QuasarPool.Token storage ref"
                            }
                          },
                          "id": 5387,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "poolSupply",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5466,
                          "src": "19967:27:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5382,
                          "name": "quasarFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5374,
                          "src": "19953:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5383,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 19026,
                        "src": "19953:13:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 5388,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19953:42:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "19933:62:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5391,
                            "name": "numerator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5381,
                            "src": "20013:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5392,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20026:1:46",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "20013:14:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "49737375652077697468207570646174696e672045786368616e6765205261746520",
                          "id": 5394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "20029:36:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_d394ab141884a768e2e3703d548ea4892ae0a12cc3ae9fcfb73b7c8ba3516353",
                            "typeString": "literal_string \"Issue with updating Exchange Rate \""
                          },
                          "value": "Issue with updating Exchange Rate "
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_d394ab141884a768e2e3703d548ea4892ae0a12cc3ae9fcfb73b7c8ba3516353",
                            "typeString": "literal_string \"Issue with updating Exchange Rate \""
                          }
                        ],
                        "id": 5390,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "20005:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 5395,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20005:61:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5396,
                    "nodeType": "ExpressionStatement",
                    "src": "20005:61:46"
                  },
                  {
                    "assignments": [
                      5398
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5398,
                        "name": "exchangeRateScaled",
                        "nodeType": "VariableDeclaration",
                        "scope": 5439,
                        "src": "20076:29:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Exp_$5859_memory_ptr",
                          "typeString": "struct Exponential.Exp"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 5397,
                          "name": "Exp",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5859,
                          "src": "20076:3:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Exp_$5859_storage_ptr",
                            "typeString": "struct Exponential.Exp"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5404,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5401,
                          "name": "numerator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5381,
                          "src": "20127:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 5402,
                          "name": "totalQTokenSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5366,
                          "src": "20138:17:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5399,
                          "name": "Exponential",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5992,
                          "src": "20108:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Exponential_$5992_$",
                            "typeString": "type(contract Exponential)"
                          }
                        },
                        "id": 5400,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getExp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5888,
                        "src": "20108:18:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_struct$_Exp_$5859_memory_ptr_$",
                          "typeString": "function (uint256,uint256) pure returns (struct Exponential.Exp memory)"
                        }
                      },
                      "id": 5403,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20108:48:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Exp_$5859_memory_ptr",
                        "typeString": "struct Exponential.Exp memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "20076:80:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 5416,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5405,
                            "name": "tokenData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5493,
                            "src": "20167:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Token_$5469_storage_$",
                              "typeString": "mapping(address => struct QuasarPool.Token storage ref)"
                            }
                          },
                          "id": 5407,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5406,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5353,
                            "src": "20177:5:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "20167:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Token_$5469_storage",
                            "typeString": "struct QuasarPool.Token storage ref"
                          }
                        },
                        "id": 5408,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "owedAmount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5464,
                        "src": "20167:27:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5414,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5355,
                            "src": "20229:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5409,
                                "name": "tokenData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5493,
                                "src": "20197:9:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Token_$5469_storage_$",
                                  "typeString": "mapping(address => struct QuasarPool.Token storage ref)"
                                }
                              },
                              "id": 5411,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 5410,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5353,
                                "src": "20207:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "20197:16:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Token_$5469_storage",
                                "typeString": "struct QuasarPool.Token storage ref"
                              }
                            },
                            "id": 5412,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owedAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5464,
                            "src": "20197:27:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5413,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 19026,
                          "src": "20197:31:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 5415,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20197:39:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "20167:69:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 5417,
                    "nodeType": "ExpressionStatement",
                    "src": "20167:69:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 5424,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5418,
                            "name": "tokenData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5493,
                            "src": "20246:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Token_$5469_storage_$",
                              "typeString": "mapping(address => struct QuasarPool.Token storage ref)"
                            }
                          },
                          "id": 5420,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5419,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5353,
                            "src": "20256:5:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "20246:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Token_$5469_storage",
                            "typeString": "struct QuasarPool.Token storage ref"
                          }
                        },
                        "id": 5421,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "exchangeRate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5462,
                        "src": "20246:29:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5422,
                          "name": "exchangeRateScaled",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5398,
                          "src": "20278:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Exp_$5859_memory_ptr",
                            "typeString": "struct Exponential.Exp memory"
                          }
                        },
                        "id": 5423,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "mantissa",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5858,
                        "src": "20278:27:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "20246:59:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 5425,
                    "nodeType": "ExpressionStatement",
                    "src": "20246:59:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 5437,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5426,
                            "name": "tokenData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5493,
                            "src": "20315:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Token_$5469_storage_$",
                              "typeString": "mapping(address => struct QuasarPool.Token storage ref)"
                            }
                          },
                          "id": 5428,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5427,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5353,
                            "src": "20325:5:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "20315:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Token_$5469_storage",
                            "typeString": "struct QuasarPool.Token storage ref"
                          }
                        },
                        "id": 5429,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "poolSupply",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5466,
                        "src": "20315:27:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5435,
                            "name": "quasarFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5374,
                            "src": "20377:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5430,
                                "name": "tokenData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5493,
                                "src": "20345:9:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Token_$5469_storage_$",
                                  "typeString": "mapping(address => struct QuasarPool.Token storage ref)"
                                }
                              },
                              "id": 5432,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 5431,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5353,
                                "src": "20355:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "20345:16:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Token_$5469_storage",
                                "typeString": "struct QuasarPool.Token storage ref"
                              }
                            },
                            "id": 5433,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "poolSupply",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5466,
                            "src": "20345:27:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5434,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 19026,
                          "src": "20345:31:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 5436,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20345:42:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "20315:72:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 5438,
                    "nodeType": "ExpressionStatement",
                    "src": "20315:72:46"
                  }
                ]
              },
              "documentation": "@dev Utilize funds from the pool, update exchange rate\n@param token the token to payout\n@param amount the value of the output claimed",
              "id": 5440,
              "implemented": true,
              "kind": "function",
              "modifiers": [],
              "name": "utilize",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 5356,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 5353,
                    "name": "token",
                    "nodeType": "VariableDeclaration",
                    "scope": 5440,
                    "src": "19423:13:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 5352,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "19423:7:46",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 5355,
                    "name": "amount",
                    "nodeType": "VariableDeclaration",
                    "scope": 5440,
                    "src": "19438:14:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 5354,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "19438:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "19422:31:46"
              },
              "returnParameters": {
                "id": 5357,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "19463:0:46"
              },
              "scope": 5441,
              "src": "19406:988:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "internal"
            }
          ],
          "scope": 5442,
          "src": "1065:19331:46"
        }
      ],
      "src": "0:20397:46"
    },
    "legacyAST": {
      "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/poc/fast_exits/Quasar.sol",
      "exportedSymbols": {
        "Quasar": [
          5441
        ]
      },
      "id": 5442,
      "nodeType": "SourceUnit",
      "nodes": [
        {
          "id": 4169,
          "literals": [
            "solidity",
            "0.5",
            ".11"
          ],
          "nodeType": "PragmaDirective",
          "src": "0:23:46"
        },
        {
          "id": 4170,
          "literals": [
            "experimental",
            "ABIEncoderV2"
          ],
          "nodeType": "PragmaDirective",
          "src": "24:33:46"
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/poc/fast_exits/QuasarPool.sol",
          "file": "./QuasarPool.sol",
          "id": 4171,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 5831,
          "src": "59:26:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/framework/PlasmaFramework.sol",
          "file": "../../src/framework/PlasmaFramework.sol",
          "id": 4172,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 14729,
          "src": "86:49:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/payment/PaymentExitGame.sol",
          "file": "../../src/exits/payment/PaymentExitGame.sol",
          "id": 4173,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 6422,
          "src": "136:53:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/utils/PosLib.sol",
          "file": "../../src/utils/PosLib.sol",
          "id": 4174,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 17052,
          "src": "190:36:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/utils/Merkle.sol",
          "file": "../../src/utils/Merkle.sol",
          "id": 4175,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 16851,
          "src": "227:36:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/utils/ExitId.sol",
          "file": "../../src/exits/utils/ExitId.sol",
          "id": 4176,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 13555,
          "src": "264:42:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/payment/routers/PaymentInFlightExitRouter.sol",
          "file": "../../src/exits/payment/routers/PaymentInFlightExitRouter.sol",
          "id": 4177,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 12574,
          "src": "307:71:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/utils/SafeEthTransfer.sol",
          "file": "../../src/utils/SafeEthTransfer.sol",
          "id": 4178,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 17708,
          "src": "379:45:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/transactions/PaymentTransactionModel.sol",
          "file": "../../src/transactions/PaymentTransactionModel.sol",
          "id": 4179,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 16302,
          "src": "425:60:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/transactions/GenericTransaction.sol",
          "file": "../../src/transactions/GenericTransaction.sol",
          "id": 4180,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 16054,
          "src": "486:55:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/utils/MoreVpFinalization.sol",
          "file": "../../src/exits/utils/MoreVpFinalization.sol",
          "id": 4181,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 13740,
          "src": "542:54:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/interfaces/ISpendingCondition.sol",
          "file": "../../src/exits/interfaces/ISpendingCondition.sol",
          "id": 4182,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 6211,
          "src": "597:59:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "/Users/souradeep/Downloads/plasma-contracts/plasma_framework/contracts/src/exits/registries/SpendingConditionRegistry.sol",
          "file": "../../src/exits/registries/SpendingConditionRegistry.sol",
          "id": 4183,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 13264,
          "src": "657:66:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
          "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
          "id": 4184,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 19133,
          "src": "724:59:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
          "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
          "id": 4185,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 19796,
          "src": "784:64:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol",
          "file": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol",
          "id": 4186,
          "nodeType": "ImportDirective",
          "scope": 5442,
          "sourceUnit": 20015,
          "src": "849:67:46",
          "symbolAliases": [],
          "unitAlias": ""
        },
        {
          "baseContracts": [
            {
              "arguments": null,
              "baseName": {
                "contractScope": null,
                "id": 4187,
                "name": "QuasarPool",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 5830,
                "src": "1084:10:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_QuasarPool_$5830",
                  "typeString": "contract QuasarPool"
                }
              },
              "id": 4188,
              "nodeType": "InheritanceSpecifier",
              "src": "1084:10:46"
            }
          ],
          "contractDependencies": [
            5830,
            5992
          ],
          "contractKind": "contract",
          "documentation": "@title Quasar Contract\nImplementation Doc - https://github.com/omgnetwork/research-workshop/blob/master/Incognito_fast_withdrawals.md",
          "fullyImplemented": true,
          "id": 5441,
          "linearizedBaseContracts": [
            5441,
            5830,
            5992
          ],
          "name": "Quasar",
          "nodeType": "ContractDefinition",
          "nodes": [
            {
              "id": 4191,
              "libraryName": {
                "contractScope": null,
                "id": 4189,
                "name": "SafeERC20",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 20014,
                "src": "1107:9:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_SafeERC20_$20014",
                  "typeString": "library SafeERC20"
                }
              },
              "nodeType": "UsingForDirective",
              "src": "1101:27:46",
              "typeName": {
                "contractScope": null,
                "id": 4190,
                "name": "IERC20",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 19795,
                "src": "1121:6:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IERC20_$19795",
                  "typeString": "contract IERC20"
                }
              }
            },
            {
              "id": 4194,
              "libraryName": {
                "contractScope": null,
                "id": 4192,
                "name": "SafeMath",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 19132,
                "src": "1139:8:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_SafeMath_$19132",
                  "typeString": "library SafeMath"
                }
              },
              "nodeType": "UsingForDirective",
              "src": "1133:27:46",
              "typeName": {
                "id": 4193,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1152:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            {
              "id": 4197,
              "libraryName": {
                "contractScope": null,
                "id": 4195,
                "name": "SafeMath",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 19132,
                "src": "1171:8:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_SafeMath_$19132",
                  "typeString": "library SafeMath"
                }
              },
              "nodeType": "UsingForDirective",
              "src": "1165:26:46",
              "typeName": {
                "id": 4196,
                "name": "uint64",
                "nodeType": "ElementaryTypeName",
                "src": "1184:6:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                }
              }
            },
            {
              "id": 4200,
              "libraryName": {
                "contractScope": null,
                "id": 4198,
                "name": "PosLib",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 17051,
                "src": "1202:6:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_PosLib_$17051",
                  "typeString": "library PosLib"
                }
              },
              "nodeType": "UsingForDirective",
              "src": "1196:33:46",
              "typeName": {
                "contractScope": null,
                "id": 4199,
                "name": "PosLib.Position",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 16894,
                "src": "1213:15:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Position_$16894_storage_ptr",
                  "typeString": "struct PosLib.Position"
                }
              }
            },
            {
              "constant": false,
              "id": 4202,
              "name": "plasmaFramework",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "1235:38:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                "typeString": "contract PlasmaFramework"
              },
              "typeName": {
                "contractScope": null,
                "id": 4201,
                "name": "PlasmaFramework",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 14728,
                "src": "1235:15:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                  "typeString": "contract PlasmaFramework"
                }
              },
              "value": null,
              "visibility": "public"
            },
            {
              "constant": false,
              "id": 4204,
              "name": "paymentExitGame",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "1461:38:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_PaymentExitGame_$6421",
                "typeString": "contract PaymentExitGame"
              },
              "typeName": {
                "contractScope": null,
                "id": 4203,
                "name": "PaymentExitGame",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 6421,
                "src": "1461:15:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_PaymentExitGame_$6421",
                  "typeString": "contract PaymentExitGame"
                }
              },
              "value": null,
              "visibility": "public"
            },
            {
              "constant": false,
              "id": 4206,
              "name": "spendingConditionRegistry",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "1505:58:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SpendingConditionRegistry_$13263",
                "typeString": "contract SpendingConditionRegistry"
              },
              "typeName": {
                "contractScope": null,
                "id": 4205,
                "name": "SpendingConditionRegistry",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 13263,
                "src": "1505:25:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_SpendingConditionRegistry_$13263",
                  "typeString": "contract SpendingConditionRegistry"
                }
              },
              "value": null,
              "visibility": "public"
            },
            {
              "constant": false,
              "id": 4208,
              "name": "quasarOwner",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "1570:26:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              },
              "typeName": {
                "id": 4207,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1570:7:46",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "value": null,
              "visibility": "public"
            },
            {
              "constant": false,
              "id": 4210,
              "name": "safeBlockMargin",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "1602:30:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 4209,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1602:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": null,
              "visibility": "public"
            },
            {
              "constant": false,
              "id": 4212,
              "name": "waitingPeriod",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "1638:28:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 4211,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1638:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": null,
              "visibility": "public"
            },
            {
              "constant": true,
              "id": 4215,
              "name": "TICKET_VALIDITY_PERIOD",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "1672:54:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 4213,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1672:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "argumentTypes": null,
                "hexValue": "3134343030",
                "id": 4214,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1721:5:46",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_14400_by_1",
                  "typeString": "int_const 14400"
                },
                "value": "14400"
              },
              "visibility": "public"
            },
            {
              "constant": true,
              "id": 4218,
              "name": "IFE_CLAIM_MARGIN",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "1732:48:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 4216,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1732:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "argumentTypes": null,
                "hexValue": "3238383030",
                "id": 4217,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1775:5:46",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_28800_by_1",
                  "typeString": "int_const 28800"
                },
                "value": "28800"
              },
              "visibility": "public"
            },
            {
              "constant": true,
              "id": 4221,
              "name": "IFE_CLAIM_WAITING_PERIOD",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "1832:57:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 4219,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1832:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "argumentTypes": null,
                "hexValue": "363931323030",
                "id": 4220,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1883:6:46",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_691200_by_1",
                  "typeString": "int_const 691200"
                },
                "value": "691200"
              },
              "visibility": "public"
            },
            {
              "constant": false,
              "id": 4223,
              "name": "bondValue",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "1895:24:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 4222,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1895:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": null,
              "visibility": "public"
            },
            {
              "constant": false,
              "id": 4225,
              "name": "unclaimedBonds",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "2027:29:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 4224,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2027:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": null,
              "visibility": "public"
            },
            {
              "constant": false,
              "id": 4227,
              "name": "isPaused",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "2062:20:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "typeName": {
                "id": 4226,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "2062:4:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "value": null,
              "visibility": "public"
            },
            {
              "canonicalName": "Quasar.Ticket",
              "id": 4244,
              "members": [
                {
                  "constant": false,
                  "id": 4229,
                  "name": "outputOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 4244,
                  "src": "2213:27:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 4228,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2213:15:46",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4231,
                  "name": "validityTimestamp",
                  "nodeType": "VariableDeclaration",
                  "scope": 4244,
                  "src": "2250:25:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4230,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2250:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4233,
                  "name": "outputValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 4244,
                  "src": "2285:19:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4232,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2285:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4235,
                  "name": "reservedAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4244,
                  "src": "2314:22:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4234,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2314:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4237,
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "scope": 4244,
                  "src": "2346:13:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4236,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2346:7:46",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4239,
                  "name": "bondValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 4244,
                  "src": "2369:17:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4238,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2369:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4241,
                  "name": "rlpOutputCreationTx",
                  "nodeType": "VariableDeclaration",
                  "scope": 4244,
                  "src": "2396:25:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 4240,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2396:5:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4243,
                  "name": "isClaimed",
                  "nodeType": "VariableDeclaration",
                  "scope": 4244,
                  "src": "2431:14:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4242,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2431:4:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "name": "Ticket",
              "nodeType": "StructDefinition",
              "scope": 5441,
              "src": "2189:263:46",
              "visibility": "public"
            },
            {
              "canonicalName": "Quasar.Claim",
              "id": 4251,
              "members": [
                {
                  "constant": false,
                  "id": 4246,
                  "name": "rlpClaimTx",
                  "nodeType": "VariableDeclaration",
                  "scope": 4251,
                  "src": "2481:16:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 4245,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2481:5:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4248,
                  "name": "finalizationTimestamp",
                  "nodeType": "VariableDeclaration",
                  "scope": 4251,
                  "src": "2507:29:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4247,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2507:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4250,
                  "name": "isValid",
                  "nodeType": "VariableDeclaration",
                  "scope": 4251,
                  "src": "2546:12:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4249,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2546:4:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "name": "Claim",
              "nodeType": "StructDefinition",
              "scope": 5441,
              "src": "2458:107:46",
              "visibility": "public"
            },
            {
              "constant": false,
              "id": 4255,
              "name": "ticketData",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "2571:45:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                "typeString": "mapping(uint256 => struct Quasar.Ticket)"
              },
              "typeName": {
                "id": 4254,
                "keyType": {
                  "id": 4252,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2580:7:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "Mapping",
                "src": "2571:27:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                  "typeString": "mapping(uint256 => struct Quasar.Ticket)"
                },
                "valueType": {
                  "contractScope": null,
                  "id": 4253,
                  "name": "Ticket",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 4244,
                  "src": "2591:6:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Ticket_$4244_storage_ptr",
                    "typeString": "struct Quasar.Ticket"
                  }
                }
              },
              "value": null,
              "visibility": "public"
            },
            {
              "constant": false,
              "id": 4259,
              "name": "ifeClaimData",
              "nodeType": "VariableDeclaration",
              "scope": 5441,
              "src": "2622:46:46",
              "stateVariable": true,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Claim_$4251_storage_$",
                "typeString": "mapping(uint256 => struct Quasar.Claim)"
              },
              "typeName": {
                "id": 4258,
                "keyType": {
                  "id": 4256,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2631:7:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "Mapping",
                "src": "2622:26:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Claim_$4251_storage_$",
                  "typeString": "mapping(uint256 => struct Quasar.Claim)"
                },
                "valueType": {
                  "contractScope": null,
                  "id": 4257,
                  "name": "Claim",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 4251,
                  "src": "2642:5:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Claim_$4251_storage_ptr",
                    "typeString": "struct Quasar.Claim"
                  }
                }
              },
              "value": null,
              "visibility": "public"
            },
            {
              "anonymous": false,
              "documentation": null,
              "id": 4263,
              "name": "NewTicketObtained",
              "nodeType": "EventDefinition",
              "parameters": {
                "id": 4262,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 4261,
                    "indexed": false,
                    "name": "utxoPos",
                    "nodeType": "VariableDeclaration",
                    "scope": 4263,
                    "src": "2699:15:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4260,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2699:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "2698:17:46"
              },
              "src": "2675:41:46"
            },
            {
              "anonymous": false,
              "documentation": null,
              "id": 4269,
              "name": "IFEClaimSubmitted",
              "nodeType": "EventDefinition",
              "parameters": {
                "id": 4268,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 4265,
                    "indexed": false,
                    "name": "utxoPos",
                    "nodeType": "VariableDeclaration",
                    "scope": 4269,
                    "src": "2745:15:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4264,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2745:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4267,
                    "indexed": false,
                    "name": "exitId",
                    "nodeType": "VariableDeclaration",
                    "scope": 4269,
                    "src": "2762:14:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    },
                    "typeName": {
                      "id": 4266,
                      "name": "uint160",
                      "nodeType": "ElementaryTypeName",
                      "src": "2762:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "2744:33:46"
              },
              "src": "2721:57:46"
            },
            {
              "body": {
                "id": 4278,
                "nodeType": "Block",
                "src": "2813:79:46",
                "statements": [
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4273,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "2831:9:46",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 4272,
                            "name": "isPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4227,
                            "src": "2832:8:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "5468652051756173617220636f6e747261637420697320706175736564",
                          "id": 4274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2842:31:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_c022614e427defec54a8c498339c48fd938f0f97501055547dda4acf50b402e6",
                            "typeString": "literal_string \"The Quasar contract is paused\""
                          },
                          "value": "The Quasar contract is paused"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_c022614e427defec54a8c498339c48fd938f0f97501055547dda4acf50b402e6",
                            "typeString": "literal_string \"The Quasar contract is paused\""
                          }
                        ],
                        "id": 4271,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "2823:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4275,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2823:51:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4276,
                    "nodeType": "ExpressionStatement",
                    "src": "2823:51:46"
                  },
                  {
                    "id": 4277,
                    "nodeType": "PlaceholderStatement",
                    "src": "2884:1:46"
                  }
                ]
              },
              "documentation": null,
              "id": 4279,
              "name": "onlyWhenNotPaused",
              "nodeType": "ModifierDefinition",
              "parameters": {
                "id": 4270,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "2810:2:46"
              },
              "src": "2784:108:46",
              "visibility": "internal"
            },
            {
              "body": {
                "id": 4340,
                "nodeType": "Block",
                "src": "3621:465:46",
                "statements": [
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4298,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4294,
                        "name": "plasmaFramework",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4202,
                        "src": "3631:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                          "typeString": "contract PlasmaFramework"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4296,
                            "name": "plasmaFrameworkContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4281,
                            "src": "3665:23:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 4295,
                          "name": "PlasmaFramework",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14728,
                          "src": "3649:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_PlasmaFramework_$14728_$",
                            "typeString": "type(contract PlasmaFramework)"
                          }
                        },
                        "id": 4297,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3649:40:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                          "typeString": "contract PlasmaFramework"
                        }
                      },
                      "src": "3631:58:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                        "typeString": "contract PlasmaFramework"
                      }
                    },
                    "id": 4299,
                    "nodeType": "ExpressionStatement",
                    "src": "3631:58:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4307,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4300,
                        "name": "paymentExitGame",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4204,
                        "src": "3699:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PaymentExitGame_$6421",
                          "typeString": "contract PaymentExitGame"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 4304,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3759:1:46",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 4302,
                                "name": "plasmaFramework",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4202,
                                "src": "3733:15:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                                  "typeString": "contract PlasmaFramework"
                                }
                              },
                              "id": 4303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "exitGames",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15004,
                              "src": "3733:25:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$",
                                "typeString": "function (uint256) view external returns (address)"
                              }
                            },
                            "id": 4305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3733:28:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 4301,
                          "name": "PaymentExitGame",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6421,
                          "src": "3717:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_PaymentExitGame_$6421_$",
                            "typeString": "type(contract PaymentExitGame)"
                          }
                        },
                        "id": 4306,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3717:45:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_PaymentExitGame_$6421",
                          "typeString": "contract PaymentExitGame"
                        }
                      },
                      "src": "3699:63:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_PaymentExitGame_$6421",
                        "typeString": "contract PaymentExitGame"
                      }
                    },
                    "id": 4308,
                    "nodeType": "ExpressionStatement",
                    "src": "3699:63:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4313,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4309,
                        "name": "spendingConditionRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4206,
                        "src": "3772:25:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_SpendingConditionRegistry_$13263",
                          "typeString": "contract SpendingConditionRegistry"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4311,
                            "name": "spendingConditionRegistryContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4283,
                            "src": "3826:33:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 4310,
                          "name": "SpendingConditionRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13263,
                          "src": "3800:25:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_SpendingConditionRegistry_$13263_$",
                            "typeString": "type(contract SpendingConditionRegistry)"
                          }
                        },
                        "id": 4312,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3800:60:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_SpendingConditionRegistry_$13263",
                          "typeString": "contract SpendingConditionRegistry"
                        }
                      },
                      "src": "3772:88:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SpendingConditionRegistry_$13263",
                        "typeString": "contract SpendingConditionRegistry"
                      }
                    },
                    "id": 4314,
                    "nodeType": "ExpressionStatement",
                    "src": "3772:88:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4317,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4315,
                        "name": "quasarOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4208,
                        "src": "3870:11:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "id": 4316,
                        "name": "_quasarOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4285,
                        "src": "3884:12:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "3870:26:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 4318,
                    "nodeType": "ExpressionStatement",
                    "src": "3870:26:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4322,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4319,
                        "name": "quasarMaintainer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5471,
                        "src": "3906:16:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4320,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21272,
                          "src": "3925:3:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 4321,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3925:10:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "3906:29:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 4323,
                    "nodeType": "ExpressionStatement",
                    "src": "3906:29:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4326,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4324,
                        "name": "safeBlockMargin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4210,
                        "src": "3945:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "id": 4325,
                        "name": "_safeBlockMargin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4287,
                        "src": "3963:16:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "3945:34:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4327,
                    "nodeType": "ExpressionStatement",
                    "src": "3945:34:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4330,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4328,
                        "name": "waitingPeriod",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4212,
                        "src": "3989:13:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "id": 4329,
                        "name": "_waitingPeriod",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4289,
                        "src": "4005:14:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "3989:30:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4331,
                    "nodeType": "ExpressionStatement",
                    "src": "3989:30:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4334,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4332,
                        "name": "bondValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4223,
                        "src": "4029:9:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "id": 4333,
                        "name": "_bondValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4291,
                        "src": "4041:10:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "4029:22:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4335,
                    "nodeType": "ExpressionStatement",
                    "src": "4029:22:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4338,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4336,
                        "name": "unclaimedBonds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4225,
                        "src": "4061:14:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4337,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4078:1:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "4061:18:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4339,
                    "nodeType": "ExpressionStatement",
                    "src": "4061:18:46"
                  }
                ]
              },
              "documentation": "@dev Constructor, takes params to set up quasar contract\n@param plasmaFrameworkContract Plasma Framework contract address\n@param _quasarOwner Receiver address on Plasma\n@param _safeBlockMargin The Quasar will not accept exits for outputs younger than the current plasma block minus the safe block margin \n@param _waitingPeriod Waiting period from submission to processing claim\n@param _bondValue bond to obtain tickets",
              "id": 4341,
              "implemented": true,
              "kind": "constructor",
              "modifiers": [],
              "name": "",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 4292,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 4281,
                    "name": "plasmaFrameworkContract",
                    "nodeType": "VariableDeclaration",
                    "scope": 4341,
                    "src": "3396:31:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 4280,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3396:7:46",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4283,
                    "name": "spendingConditionRegistryContract",
                    "nodeType": "VariableDeclaration",
                    "scope": 4341,
                    "src": "3438:41:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 4282,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3438:7:46",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4285,
                    "name": "_quasarOwner",
                    "nodeType": "VariableDeclaration",
                    "scope": 4341,
                    "src": "3490:20:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 4284,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3490:7:46",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4287,
                    "name": "_safeBlockMargin",
                    "nodeType": "VariableDeclaration",
                    "scope": 4341,
                    "src": "3521:24:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4286,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3521:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4289,
                    "name": "_waitingPeriod",
                    "nodeType": "VariableDeclaration",
                    "scope": 4341,
                    "src": "3556:22:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4288,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3556:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4291,
                    "name": "_bondValue",
                    "nodeType": "VariableDeclaration",
                    "scope": 4341,
                    "src": "3589:18:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4290,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3589:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "3386:227:46"
              },
              "returnParameters": {
                "id": 4293,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "3621:0:46"
              },
              "scope": 5441,
              "src": "3374:712:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            {
              "body": {
                "id": 4369,
                "nodeType": "Block",
                "src": "4211:254:46",
                "statements": [
                  {
                    "assignments": [
                      4347
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4347,
                        "name": "childBlockInterval",
                        "nodeType": "VariableDeclaration",
                        "scope": 4369,
                        "src": "4221:26:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4346,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4221:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4351,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4348,
                          "name": "plasmaFramework",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4202,
                          "src": "4250:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                            "typeString": "contract PlasmaFramework"
                          }
                        },
                        "id": 4349,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "childBlockInterval",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13794,
                        "src": "4250:34:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                          "typeString": "function () view external returns (uint256)"
                        }
                      },
                      "id": 4350,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4250:36:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4221:65:46"
                  },
                  {
                    "assignments": [
                      4353
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4353,
                        "name": "currentPlasmaBlock",
                        "nodeType": "VariableDeclaration",
                        "scope": 4369,
                        "src": "4296:23:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4352,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "4296:4:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4360,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4358,
                          "name": "childBlockInterval",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4347,
                          "src": "4359:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4354,
                              "name": "plasmaFramework",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4202,
                              "src": "4322:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                                "typeString": "contract PlasmaFramework"
                              }
                            },
                            "id": 4355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "nextChildBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13796,
                            "src": "4322:30:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 4356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4322:32:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4357,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 19051,
                        "src": "4322:36:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 4359,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4322:56:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4296:82:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4365,
                              "name": "childBlockInterval",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4347,
                              "src": "4438:18:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4363,
                              "name": "safeBlockMargin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4210,
                              "src": "4418:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4364,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 19085,
                            "src": "4418:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 4366,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4418:39:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4361,
                          "name": "currentPlasmaBlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4353,
                          "src": "4395:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4362,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 19051,
                        "src": "4395:22:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 4367,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4395:63:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "functionReturnParameters": 4345,
                    "id": 4368,
                    "nodeType": "Return",
                    "src": "4388:70:46"
                  }
                ]
              },
              "documentation": "@return  The latest safe block number",
              "id": 4370,
              "implemented": true,
              "kind": "function",
              "modifiers": [],
              "name": "getLatestSafeBlock",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 4342,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "4179:2:46"
              },
              "returnParameters": {
                "id": 4345,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 4344,
                    "name": "",
                    "nodeType": "VariableDeclaration",
                    "scope": 4370,
                    "src": "4202:7:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4343,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4202:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "4201:9:46"
              },
              "scope": 5441,
              "src": "4152:313:46",
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            {
              "body": {
                "id": 4381,
                "nodeType": "Block",
                "src": "4774:41:46",
                "statements": [
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4379,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4377,
                        "name": "safeBlockMargin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4210,
                        "src": "4784:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "id": 4378,
                        "name": "margin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4372,
                        "src": "4802:6:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "4784:24:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4380,
                    "nodeType": "ExpressionStatement",
                    "src": "4784:24:46"
                  }
                ]
              },
              "documentation": "@dev Set the safe block margin.\n@param margin the new safe block margin",
              "id": 4382,
              "implemented": true,
              "kind": "function",
              "modifiers": [
                {
                  "arguments": [],
                  "id": 4375,
                  "modifierName": {
                    "argumentTypes": null,
                    "id": 4374,
                    "name": "onlyQuasarMaintainer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5489,
                    "src": "4751:20:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_modifier$__$",
                      "typeString": "modifier ()"
                    }
                  },
                  "nodeType": "ModifierInvocation",
                  "src": "4751:22:46"
                }
              ],
              "name": "setSafeBlockMargin",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 4373,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 4372,
                    "name": "margin",
                    "nodeType": "VariableDeclaration",
                    "scope": 4382,
                    "src": "4728:14:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4371,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4728:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "4727:16:46"
              },
              "returnParameters": {
                "id": 4376,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "4774:0:46"
              },
              "scope": 5441,
              "src": "4699:116:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            {
              "body": {
                "id": 4463,
                "nodeType": "Block",
                "src": "5117:646:46",
                "statements": [
                  {
                    "assignments": [
                      4388
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4388,
                        "name": "expiryTimestamp",
                        "nodeType": "VariableDeclaration",
                        "scope": 4463,
                        "src": "5127:23:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4387,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5127:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4393,
                    "initialValue": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4389,
                          "name": "ticketData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4255,
                          "src": "5153:10:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                            "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                          }
                        },
                        "id": 4391,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4390,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4384,
                          "src": "5164:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5153:19:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                          "typeString": "struct Quasar.Ticket storage ref"
                        }
                      },
                      "id": 4392,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "validityTimestamp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4231,
                      "src": "5153:37:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5127:63:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4399,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "5208:30:46",
                          "subExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4395,
                                "name": "ticketData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4255,
                                "src": "5209:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                  "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                }
                              },
                              "id": 4397,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4396,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4384,
                                "src": "5220:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5209:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                "typeString": "struct Quasar.Ticket storage ref"
                              }
                            },
                            "id": 4398,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isClaimed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4243,
                            "src": "5209:29:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "546865205554584f2068617320616c7265616479206265656e20636c61696d6564",
                          "id": 4400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5240:35:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_42fd0d0be5a327d37eed70d846e1fbf1842b1c07eb7f4ec3b0755cee6e0a4359",
                            "typeString": "literal_string \"The UTXO has already been claimed\""
                          },
                          "value": "The UTXO has already been claimed"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_42fd0d0be5a327d37eed70d846e1fbf1842b1c07eb7f4ec3b0755cee6e0a4359",
                            "typeString": "literal_string \"The UTXO has already been claimed\""
                          }
                        ],
                        "id": 4394,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "5200:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4401,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5200:76:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4402,
                    "nodeType": "ExpressionStatement",
                    "src": "5200:76:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4411,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4407,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4404,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21262,
                                "src": "5294:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 4405,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5294:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 4406,
                              "name": "expiryTimestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4388,
                              "src": "5312:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5294:33:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4410,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 4408,
                              "name": "expiryTimestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4388,
                              "src": "5331:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4409,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5350:1:46",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5331:20:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5294:57:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "5469636b6574207374696c6c2076616c6964206f7220646f65736e2774206578697374",
                          "id": 4412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5353:37:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_c6c6629c23761081bda94e8bcd51eee30e7fca8f00fb8fe135630aeaa4c3cc18",
                            "typeString": "literal_string \"Ticket still valid or doesn't exist\""
                          },
                          "value": "Ticket still valid or doesn't exist"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_c6c6629c23761081bda94e8bcd51eee30e7fca8f00fb8fe135630aeaa4c3cc18",
                            "typeString": "literal_string \"Ticket still valid or doesn't exist\""
                          }
                        ],
                        "id": 4403,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "5286:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4413,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5286:105:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4414,
                    "nodeType": "ExpressionStatement",
                    "src": "5286:105:46"
                  },
                  {
                    "assignments": [
                      4416
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4416,
                        "name": "tokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 4463,
                        "src": "5402:19:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4415,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5402:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4421,
                    "initialValue": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4417,
                          "name": "ticketData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4255,
                          "src": "5424:10:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                            "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                          }
                        },
                        "id": 4419,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4418,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4384,
                          "src": "5435:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5424:19:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                          "typeString": "struct Quasar.Ticket storage ref"
                        }
                      },
                      "id": 4420,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "reservedAmount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4235,
                      "src": "5424:34:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5402:56:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4427,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4422,
                            "name": "ticketData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4255,
                            "src": "5468:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                              "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                            }
                          },
                          "id": 4424,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4423,
                            "name": "utxoPos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4384,
                            "src": "5479:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5468:19:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                            "typeString": "struct Quasar.Ticket storage ref"
                          }
                        },
                        "id": 4425,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "reservedAmount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4235,
                        "src": "5468:34:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4426,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5505:1:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "5468:38:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4428,
                    "nodeType": "ExpressionStatement",
                    "src": "5468:38:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4434,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4429,
                            "name": "ticketData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4255,
                            "src": "5516:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                              "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                            }
                          },
                          "id": 4431,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4430,
                            "name": "utxoPos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4384,
                            "src": "5527:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5516:19:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                            "typeString": "struct Quasar.Ticket storage ref"
                          }
                        },
                        "id": 4432,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "validityTimestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4231,
                        "src": "5516:37:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4433,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5556:1:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "5516:41:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4435,
                    "nodeType": "ExpressionStatement",
                    "src": "5516:41:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4451,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4436,
                          "name": "tokenUsableCapacity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5497,
                          "src": "5567:19:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 4441,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4437,
                              "name": "ticketData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4255,
                              "src": "5587:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                              }
                            },
                            "id": 4439,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4438,
                              "name": "utxoPos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4384,
                              "src": "5598:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5587:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                              "typeString": "struct Quasar.Ticket storage ref"
                            }
                          },
                          "id": 4440,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "token",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4237,
                          "src": "5587:25:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "5567:46:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4449,
                            "name": "tokenAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4416,
                            "src": "5667:11:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4442,
                              "name": "tokenUsableCapacity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5497,
                              "src": "5616:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 4447,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4443,
                                  "name": "ticketData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4255,
                                  "src": "5636:10:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                    "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                  }
                                },
                                "id": 4445,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 4444,
                                  "name": "utxoPos",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4384,
                                  "src": "5647:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5636:19:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                  "typeString": "struct Quasar.Ticket storage ref"
                                }
                              },
                              "id": 4446,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "token",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4237,
                              "src": "5636:25:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5616:46:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 19026,
                          "src": "5616:50:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 4450,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5616:63:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "5567:112:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4452,
                    "nodeType": "ExpressionStatement",
                    "src": "5567:112:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4461,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4453,
                        "name": "unclaimedBonds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4225,
                        "src": "5689:14:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4456,
                                "name": "ticketData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4255,
                                "src": "5725:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                  "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                }
                              },
                              "id": 4458,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4457,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4384,
                                "src": "5736:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5725:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                "typeString": "struct Quasar.Ticket storage ref"
                              }
                            },
                            "id": 4459,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "bondValue",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4239,
                            "src": "5725:29:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4454,
                            "name": "unclaimedBonds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4225,
                            "src": "5706:14:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 19026,
                          "src": "5706:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 4460,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5706:49:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "5689:66:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4462,
                    "nodeType": "ExpressionStatement",
                    "src": "5689:66:46"
                  }
                ]
              },
              "documentation": "@dev Flush an expired ticket to free up reserved funds\n@notice Only an unclaimed ticket can be flushed, bond amount is added to unclaimedBonds\n@param utxoPos pos of the output, which is the ticket identifier",
              "id": 4464,
              "implemented": true,
              "kind": "function",
              "modifiers": [],
              "name": "flushExpiredTicket",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 4385,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 4384,
                    "name": "utxoPos",
                    "nodeType": "VariableDeclaration",
                    "scope": 4464,
                    "src": "5093:15:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4383,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "5093:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "5092:17:46"
              },
              "returnParameters": {
                "id": 4386,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "5117:0:46"
              },
              "scope": 5441,
              "src": "5065:698:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            {
              "body": {
                "id": 4473,
                "nodeType": "Block",
                "src": "5885:32:46",
                "statements": [
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4471,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4469,
                        "name": "isPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4227,
                        "src": "5895:8:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 4470,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5906:4:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "src": "5895:15:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 4472,
                    "nodeType": "ExpressionStatement",
                    "src": "5895:15:46"
                  }
                ]
              },
              "documentation": "@dev Pause contract in a byzantine state",
              "id": 4474,
              "implemented": true,
              "kind": "function",
              "modifiers": [
                {
                  "arguments": [],
                  "id": 4467,
                  "modifierName": {
                    "argumentTypes": null,
                    "id": 4466,
                    "name": "onlyQuasarMaintainer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5489,
                    "src": "5862:20:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_modifier$__$",
                      "typeString": "modifier ()"
                    }
                  },
                  "nodeType": "ModifierInvocation",
                  "src": "5862:22:46"
                }
              ],
              "name": "pauseQuasar",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 4465,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "5852:2:46"
              },
              "returnParameters": {
                "id": 4468,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "5885:0:46"
              },
              "scope": 5441,
              "src": "5832:85:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            {
              "body": {
                "id": 4483,
                "nodeType": "Block",
                "src": "6039:33:46",
                "statements": [
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4481,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4479,
                        "name": "isPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4227,
                        "src": "6049:8:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 4480,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6060:5:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      "src": "6049:16:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 4482,
                    "nodeType": "ExpressionStatement",
                    "src": "6049:16:46"
                  }
                ]
              },
              "documentation": "@dev Unpause contract and allow tickets",
              "id": 4484,
              "implemented": true,
              "kind": "function",
              "modifiers": [
                {
                  "arguments": [],
                  "id": 4477,
                  "modifierName": {
                    "argumentTypes": null,
                    "id": 4476,
                    "name": "onlyQuasarMaintainer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5489,
                    "src": "6016:20:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_modifier$__$",
                      "typeString": "modifier ()"
                    }
                  },
                  "nodeType": "ModifierInvocation",
                  "src": "6016:22:46"
                }
              ],
              "name": "resumeQuasar",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 4475,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "6006:2:46"
              },
              "returnParameters": {
                "id": 4478,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "6039:0:46"
              },
              "scope": 5441,
              "src": "5985:87:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            {
              "body": {
                "id": 4506,
                "nodeType": "Block",
                "src": "6212:161:46",
                "statements": [
                  {
                    "assignments": [
                      4490
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4490,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 4506,
                        "src": "6222:14:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4489,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6222:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4492,
                    "initialValue": {
                      "argumentTypes": null,
                      "id": 4491,
                      "name": "unclaimedBonds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4225,
                      "src": "6239:14:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6222:31:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4495,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4493,
                        "name": "unclaimedBonds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4225,
                        "src": "6263:14:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4494,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6280:1:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "6263:18:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4496,
                    "nodeType": "ExpressionStatement",
                    "src": "6263:18:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4500,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21272,
                            "src": "6329:3:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4501,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6329:10:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 4502,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4490,
                          "src": "6341:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 4503,
                          "name": "SAFE_GAS_STIPEND",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5474,
                          "src": "6349:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4497,
                          "name": "SafeEthTransfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17707,
                          "src": "6291:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_SafeEthTransfer_$17707_$",
                            "typeString": "type(library SafeEthTransfer)"
                          }
                        },
                        "id": 4499,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "transferRevertOnError",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17679,
                        "src": "6291:37:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$_t_uint256_$returns$__$",
                          "typeString": "function (address payable,uint256,uint256)"
                        }
                      },
                      "id": 4504,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6291:75:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4505,
                    "nodeType": "ExpressionStatement",
                    "src": "6291:75:46"
                  }
                ]
              },
              "documentation": "@dev Withdraw Unclaimed bonds from the contract",
              "id": 4507,
              "implemented": true,
              "kind": "function",
              "modifiers": [
                {
                  "arguments": [],
                  "id": 4487,
                  "modifierName": {
                    "argumentTypes": null,
                    "id": 4486,
                    "name": "onlyQuasarMaintainer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5489,
                    "src": "6189:20:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_modifier$__$",
                      "typeString": "modifier ()"
                    }
                  },
                  "nodeType": "ModifierInvocation",
                  "src": "6189:22:46"
                }
              ],
              "name": "withdrawUnclaimedBonds",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 4485,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "6179:2:46"
              },
              "returnParameters": {
                "id": 4488,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "6212:0:46"
              },
              "scope": 5441,
              "src": "6148:225:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            {
              "body": {
                "id": 4679,
                "nodeType": "Block",
                "src": "7044:1813:46",
                "statements": [
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4519,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21272,
                              "src": "7062:3:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4520,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7062:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4521,
                            "name": "bondValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4223,
                            "src": "7075:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7062:22:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "426f6e642056616c756520696e636f7272656374",
                          "id": 4523,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7086:22:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_236842436f0a77d5978d9fd3a8a06773df98941f1d1d303463ead4aea5aa1ec3",
                            "typeString": "literal_string \"Bond Value incorrect\""
                          },
                          "value": "Bond Value incorrect"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_236842436f0a77d5978d9fd3a8a06773df98941f1d1d303463ead4aea5aa1ec3",
                            "typeString": "literal_string \"Bond Value incorrect\""
                          }
                        ],
                        "id": 4518,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "7054:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4524,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7054:55:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4525,
                    "nodeType": "ExpressionStatement",
                    "src": "7054:55:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4531,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "7127:30:46",
                          "subExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4527,
                                "name": "ticketData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4255,
                                "src": "7128:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                  "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                }
                              },
                              "id": 4529,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4528,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4509,
                                "src": "7139:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7128:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                "typeString": "struct Quasar.Ticket storage ref"
                              }
                            },
                            "id": 4530,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isClaimed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4243,
                            "src": "7128:29:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "546865205554584f2068617320616c7265616479206265656e20636c61696d6564",
                          "id": 4532,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7159:35:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_42fd0d0be5a327d37eed70d846e1fbf1842b1c07eb7f4ec3b0755cee6e0a4359",
                            "typeString": "literal_string \"The UTXO has already been claimed\""
                          },
                          "value": "The UTXO has already been claimed"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_42fd0d0be5a327d37eed70d846e1fbf1842b1c07eb7f4ec3b0755cee6e0a4359",
                            "typeString": "literal_string \"The UTXO has already been claimed\""
                          }
                        ],
                        "id": 4526,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "7119:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4533,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7119:76:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4534,
                    "nodeType": "ExpressionStatement",
                    "src": "7119:76:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4541,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4536,
                                "name": "ticketData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4255,
                                "src": "7213:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                  "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                }
                              },
                              "id": 4538,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4537,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4509,
                                "src": "7224:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7213:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                "typeString": "struct Quasar.Ticket storage ref"
                              }
                            },
                            "id": 4539,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "validityTimestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4231,
                            "src": "7213:37:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4540,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7254:1:46",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7213:42:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "54686973205554584f20616c7265616479206861732061207469636b6574",
                          "id": 4542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7257:32:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_d75e1bb4ac0e9c16bb363f99e6c4008940bad86e6e0053761d1305d5448f347a",
                            "typeString": "literal_string \"This UTXO already has a ticket\""
                          },
                          "value": "This UTXO already has a ticket"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_d75e1bb4ac0e9c16bb363f99e6c4008940bad86e6e0053761d1305d5448f347a",
                            "typeString": "literal_string \"This UTXO already has a ticket\""
                          }
                        ],
                        "id": 4535,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "7205:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4543,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7205:85:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4544,
                    "nodeType": "ExpressionStatement",
                    "src": "7205:85:46"
                  },
                  {
                    "assignments": [
                      4548
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4548,
                        "name": "utxoPosDecoded",
                        "nodeType": "VariableDeclaration",
                        "scope": 4679,
                        "src": "7301:37:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                          "typeString": "struct PosLib.Position"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 4547,
                          "name": "PosLib.Position",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 16894,
                          "src": "7301:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Position_$16894_storage_ptr",
                            "typeString": "struct PosLib.Position"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4553,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4551,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4509,
                          "src": "7355:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4549,
                          "name": "PosLib",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17051,
                          "src": "7341:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_PosLib_$17051_$",
                            "typeString": "type(library PosLib)"
                          }
                        },
                        "id": 4550,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17050,
                        "src": "7341:13:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Position_$16894_memory_ptr_$",
                          "typeString": "function (uint256) pure returns (struct PosLib.Position memory)"
                        }
                      },
                      "id": 4552,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7341:22:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                        "typeString": "struct PosLib.Position memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "7301:62:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4559,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4555,
                              "name": "utxoPosDecoded",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4548,
                              "src": "7382:14:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                                "typeString": "struct PosLib.Position memory"
                              }
                            },
                            "id": 4556,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "blockNum",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16889,
                            "src": "7382:23:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 4557,
                              "name": "getLatestSafeBlock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4370,
                              "src": "7409:18:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 4558,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7409:20:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7382:47:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "546865205554584f2069732066726f6d206120626c6f636b206c61746572207468616e207468652073616665206c696d6974",
                          "id": 4560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7431:52:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_f048e877b5442d9dd919a4d58a5fa33b577f5829e3c77a4d14bb5d8479920b0d",
                            "typeString": "literal_string \"The UTXO is from a block later than the safe limit\""
                          },
                          "value": "The UTXO is from a block later than the safe limit"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_f048e877b5442d9dd919a4d58a5fa33b577f5829e3c77a4d14bb5d8479920b0d",
                            "typeString": "literal_string \"The UTXO is from a block later than the safe limit\""
                          }
                        ],
                        "id": 4554,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "7374:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4561,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7374:110:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4562,
                    "nodeType": "ExpressionStatement",
                    "src": "7374:110:46"
                  },
                  {
                    "assignments": [
                      4566
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4566,
                        "name": "decodedTx",
                        "nodeType": "VariableDeclaration",
                        "scope": 4679,
                        "src": "7495:52:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Transaction_$16102_memory_ptr",
                          "typeString": "struct PaymentTransactionModel.Transaction"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 4565,
                          "name": "PaymentTransactionModel.Transaction",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 16102,
                          "src": "7495:35:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Transaction_$16102_storage_ptr",
                            "typeString": "struct PaymentTransactionModel.Transaction"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4571,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4569,
                          "name": "rlpOutputCreationTx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4511,
                          "src": "7589:19:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4567,
                          "name": "PaymentTransactionModel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16301,
                          "src": "7558:23:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_PaymentTransactionModel_$16301_$",
                            "typeString": "type(library PaymentTransactionModel)"
                          }
                        },
                        "id": 4568,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16117,
                        "src": "7558:30:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_Transaction_$16102_memory_ptr_$",
                          "typeString": "function (bytes memory) pure returns (struct PaymentTransactionModel.Transaction memory)"
                        }
                      },
                      "id": 4570,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7558:51:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Transaction_$16102_memory_ptr",
                        "typeString": "struct PaymentTransactionModel.Transaction memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "7495:114:46"
                  },
                  {
                    "assignments": [
                      4575
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4575,
                        "name": "outputData",
                        "nodeType": "VariableDeclaration",
                        "scope": 4679,
                        "src": "7620:49:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                          "typeString": "struct FungibleTokenOutputModel.Output"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 4574,
                          "name": "FungibleTokenOutputModel.Output",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15744,
                          "src": "7620:31:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Output_$15744_storage_ptr",
                            "typeString": "struct FungibleTokenOutputModel.Output"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4582,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4578,
                          "name": "decodedTx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4566,
                          "src": "7714:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Transaction_$16102_memory_ptr",
                            "typeString": "struct PaymentTransactionModel.Transaction memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4579,
                            "name": "utxoPosDecoded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4548,
                            "src": "7725:14:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                              "typeString": "struct PosLib.Position memory"
                            }
                          },
                          "id": 4580,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "outputIndex",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16893,
                          "src": "7725:26:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Transaction_$16102_memory_ptr",
                            "typeString": "struct PaymentTransactionModel.Transaction memory"
                          },
                          {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4576,
                          "name": "PaymentTransactionModel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16301,
                          "src": "7680:23:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_PaymentTransactionModel_$16301_$",
                            "typeString": "type(library PaymentTransactionModel)"
                          }
                        },
                        "id": 4577,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getOutput",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16300,
                        "src": "7680:33:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_Transaction_$16102_memory_ptr_$_t_uint16_$returns$_t_struct$_Output_$15744_memory_ptr_$",
                          "typeString": "function (struct PaymentTransactionModel.Transaction memory,uint16) pure returns (struct FungibleTokenOutputModel.Output memory)"
                        }
                      },
                      "id": 4581,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7680:72:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                        "typeString": "struct FungibleTokenOutputModel.Output memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "7620:132:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4585,
                              "name": "outputData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4575,
                              "src": "7857:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                                "typeString": "struct FungibleTokenOutputModel.Output memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4586,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21272,
                                "src": "7869:3:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4587,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7869:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                                "typeString": "struct FungibleTokenOutputModel.Output memory"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 4584,
                            "name": "verifyOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5087,
                            "src": "7841:15:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_Output_$15744_memory_ptr_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (struct FungibleTokenOutputModel.Output memory,address) pure returns (bool)"
                            }
                          },
                          "id": 4588,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7841:39:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "576173206e6f742063616c6c656420627920746865204f7574707574206f776e6572",
                          "id": 4589,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7882:36:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_58631758b7ab4cbf5ca368a4a661f2b094c684caf3741f3c63a5c15e640e0a06",
                            "typeString": "literal_string \"Was not called by the Output owner\""
                          },
                          "value": "Was not called by the Output owner"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_58631758b7ab4cbf5ca368a4a661f2b094c684caf3741f3c63a5c15e640e0a06",
                            "typeString": "literal_string \"Was not called by the Output owner\""
                          }
                        ],
                        "id": 4583,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "7833:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4590,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7833:86:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4591,
                    "nodeType": "ExpressionStatement",
                    "src": "7833:86:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4595,
                              "name": "plasmaFramework",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4202,
                              "src": "7990:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                                "typeString": "contract PlasmaFramework"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4596,
                              "name": "rlpOutputCreationTx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4511,
                              "src": "8019:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4597,
                                  "name": "utxoPosDecoded",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4548,
                                  "src": "8052:14:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                                    "typeString": "struct PosLib.Position memory"
                                  }
                                },
                                "id": 4598,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "toStrictTxPos",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 16944,
                                "src": "8052:28:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_struct$_Position_$16894_memory_ptr_$returns$_t_struct$_Position_$16894_memory_ptr_$bound_to$_t_struct$_Position_$16894_memory_ptr_$",
                                  "typeString": "function (struct PosLib.Position memory) pure returns (struct PosLib.Position memory)"
                                }
                              },
                              "id": 4599,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8052:30:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                                "typeString": "struct PosLib.Position memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4600,
                              "name": "outputCreationTxInclusionProof",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4513,
                              "src": "8096:30:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                                "typeString": "contract PlasmaFramework"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                                "typeString": "struct PosLib.Position memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4593,
                              "name": "MoreVpFinalization",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13739,
                              "src": "7938:18:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MoreVpFinalization_$13739_$",
                                "typeString": "type(library MoreVpFinalization)"
                              }
                            },
                            "id": 4594,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isStandardFinalized",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13692,
                            "src": "7938:38:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_contract$_PlasmaFramework_$14728_$_t_bytes_memory_ptr_$_t_struct$_Position_$16894_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                              "typeString": "function (contract PlasmaFramework,bytes memory,struct PosLib.Position memory,bytes memory) view returns (bool)"
                            }
                          },
                          "id": 4601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7938:198:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "50726f766964656420547820646f65736e2774206578697374",
                          "id": 4602,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8138:27:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_810f45ff6bdd5e24d9726e09bbe8c7a76a1905c31f032f32fc245486dbadb351",
                            "typeString": "literal_string \"Provided Tx doesn't exist\""
                          },
                          "value": "Provided Tx doesn't exist"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_810f45ff6bdd5e24d9726e09bbe8c7a76a1905c31f032f32fc245486dbadb351",
                            "typeString": "literal_string \"Provided Tx doesn't exist\""
                          }
                        ],
                        "id": 4592,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "7930:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4603,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7930:236:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4604,
                    "nodeType": "ExpressionStatement",
                    "src": "7930:236:46"
                  },
                  {
                    "assignments": [
                      4606
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4606,
                        "name": "quasarFee",
                        "nodeType": "VariableDeclaration",
                        "scope": 4679,
                        "src": "8177:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4605,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8177:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4612,
                    "initialValue": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4607,
                          "name": "tokenData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5493,
                          "src": "8197:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Token_$5469_storage_$",
                            "typeString": "mapping(address => struct QuasarPool.Token storage ref)"
                          }
                        },
                        "id": 4610,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4608,
                            "name": "outputData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4575,
                            "src": "8207:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                              "typeString": "struct FungibleTokenOutputModel.Output memory"
                            }
                          },
                          "id": 4609,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "token",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15741,
                          "src": "8207:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8197:27:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Token_$5469_storage",
                          "typeString": "struct QuasarPool.Token storage ref"
                        }
                      },
                      "id": 4611,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "quasarFee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5468,
                      "src": "8197:37:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "8177:57:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4614,
                              "name": "outputData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4575,
                              "src": "8253:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                                "typeString": "struct FungibleTokenOutputModel.Output memory"
                              }
                            },
                            "id": 4615,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15743,
                            "src": "8253:17:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4616,
                            "name": "quasarFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4606,
                            "src": "8273:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8253:29:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "546865205554584f2069736e277420656e6f75676820746f20636f7665722074686520666565",
                          "id": 4618,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8284:40:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_48799fec64dcf34ceb3f806336e269d7d6fd610d050a9f6512604507900c3e7f",
                            "typeString": "literal_string \"The UTXO isn't enough to cover the fee\""
                          },
                          "value": "The UTXO isn't enough to cover the fee"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_48799fec64dcf34ceb3f806336e269d7d6fd610d050a9f6512604507900c3e7f",
                            "typeString": "literal_string \"The UTXO isn't enough to cover the fee\""
                          }
                        ],
                        "id": 4613,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "8245:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4619,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8245:80:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4620,
                    "nodeType": "ExpressionStatement",
                    "src": "8245:80:46"
                  },
                  {
                    "assignments": [
                      4622
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4622,
                        "name": "reservedAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 4679,
                        "src": "8335:22:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4621,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8335:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4628,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4626,
                          "name": "quasarFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4606,
                          "src": "8382:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4623,
                            "name": "outputData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4575,
                            "src": "8360:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                              "typeString": "struct FungibleTokenOutputModel.Output memory"
                            }
                          },
                          "id": 4624,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "amount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15743,
                          "src": "8360:17:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4625,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 19051,
                        "src": "8360:21:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 4627,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8360:32:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "8335:57:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4635,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4630,
                            "name": "reservedAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4622,
                            "src": "8410:14:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4631,
                              "name": "tokenUsableCapacity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5497,
                              "src": "8428:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 4634,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4632,
                                "name": "outputData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4575,
                                "src": "8448:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                                  "typeString": "struct FungibleTokenOutputModel.Output memory"
                                }
                              },
                              "id": 4633,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "token",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15741,
                              "src": "8448:16:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8428:37:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8410:55:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "52657175657374656420616d6f756e7420657863656564732074686520557361626c65204c69717564697479",
                          "id": 4636,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8467:46:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_1f702080734505012f640a87ef972cb9bb21bb5c450967c090841c0a04641dd4",
                            "typeString": "literal_string \"Requested amount exceeds the Usable Liqudity\""
                          },
                          "value": "Requested amount exceeds the Usable Liqudity"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_1f702080734505012f640a87ef972cb9bb21bb5c450967c090841c0a04641dd4",
                            "typeString": "literal_string \"Requested amount exceeds the Usable Liqudity\""
                          }
                        ],
                        "id": 4629,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "8402:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4637,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8402:112:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4638,
                    "nodeType": "ExpressionStatement",
                    "src": "8402:112:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4650,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4639,
                          "name": "tokenUsableCapacity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5497,
                          "src": "8525:19:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 4642,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4640,
                            "name": "outputData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4575,
                            "src": "8545:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                              "typeString": "struct FungibleTokenOutputModel.Output memory"
                            }
                          },
                          "id": 4641,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "token",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15741,
                          "src": "8545:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "8525:37:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4648,
                            "name": "reservedAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4622,
                            "src": "8607:14:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4643,
                              "name": "tokenUsableCapacity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5497,
                              "src": "8565:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 4646,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4644,
                                "name": "outputData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4575,
                                "src": "8585:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                                  "typeString": "struct FungibleTokenOutputModel.Output memory"
                                }
                              },
                              "id": 4645,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "token",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15741,
                              "src": "8585:16:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8565:37:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4647,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 19051,
                          "src": "8565:41:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 4649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8565:57:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "8525:97:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4651,
                    "nodeType": "ExpressionStatement",
                    "src": "8525:97:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4673,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4652,
                          "name": "ticketData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4255,
                          "src": "8632:10:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                            "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                          }
                        },
                        "id": 4654,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4653,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4509,
                          "src": "8643:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "8632:19:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                          "typeString": "struct Quasar.Ticket storage ref"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4656,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21272,
                              "src": "8661:3:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4657,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8661:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4661,
                                "name": "TICKET_VALIDITY_PERIOD",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4215,
                                "src": "8693:22:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4658,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21262,
                                  "src": "8673:5:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 4659,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "8673:15:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4660,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19026,
                              "src": "8673:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4662,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8673:43:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4663,
                              "name": "outputData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4575,
                              "src": "8718:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                                "typeString": "struct FungibleTokenOutputModel.Output memory"
                              }
                            },
                            "id": 4664,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15743,
                            "src": "8718:17:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4665,
                            "name": "reservedAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4622,
                            "src": "8737:14:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4666,
                              "name": "outputData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4575,
                              "src": "8753:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                                "typeString": "struct FungibleTokenOutputModel.Output memory"
                              }
                            },
                            "id": 4667,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "token",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15741,
                            "src": "8753:16:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4668,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21272,
                              "src": "8771:3:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4669,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8771:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4670,
                            "name": "rlpOutputCreationTx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4511,
                            "src": "8782:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 4671,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8803:5:46",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 4655,
                          "name": "Ticket",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4244,
                          "src": "8654:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_Ticket_$4244_storage_ptr_$",
                            "typeString": "type(struct Quasar.Ticket storage pointer)"
                          }
                        },
                        "id": 4672,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8654:155:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Ticket_$4244_memory",
                          "typeString": "struct Quasar.Ticket memory"
                        }
                      },
                      "src": "8632:177:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                        "typeString": "struct Quasar.Ticket storage ref"
                      }
                    },
                    "id": 4674,
                    "nodeType": "ExpressionStatement",
                    "src": "8632:177:46"
                  },
                  {
                    "eventCall": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4676,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4509,
                          "src": "8842:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 4675,
                        "name": "NewTicketObtained",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4263,
                        "src": "8824:17:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                          "typeString": "function (uint256)"
                        }
                      },
                      "id": 4677,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8824:26:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4678,
                    "nodeType": "EmitStatement",
                    "src": "8819:31:46"
                  }
                ]
              },
              "documentation": "@dev Obtain a ticket from the Quasar\n@notice Ticket is valid for four hours, pay bond here for obtaining ticket\n@param utxoPos Output that will be spent to the quasar later, is the ticket identifier\n@param rlpOutputCreationTx RLP-encoded transaction that created the output\n@param outputCreationTxInclusionProof Transaction inclusion proof",
              "id": 4680,
              "implemented": true,
              "kind": "function",
              "modifiers": [
                {
                  "arguments": [],
                  "id": 4516,
                  "modifierName": {
                    "argumentTypes": null,
                    "id": 4515,
                    "name": "onlyWhenNotPaused",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4279,
                    "src": "7024:17:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_modifier$__$",
                      "typeString": "modifier ()"
                    }
                  },
                  "nodeType": "ModifierInvocation",
                  "src": "7024:19:46"
                }
              ],
              "name": "obtainTicket",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 4514,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 4509,
                    "name": "utxoPos",
                    "nodeType": "VariableDeclaration",
                    "scope": 4680,
                    "src": "6913:15:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4508,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "6913:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4511,
                    "name": "rlpOutputCreationTx",
                    "nodeType": "VariableDeclaration",
                    "scope": 4680,
                    "src": "6930:32:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 4510,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "6930:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4513,
                    "name": "outputCreationTxInclusionProof",
                    "nodeType": "VariableDeclaration",
                    "scope": 4680,
                    "src": "6964:43:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 4512,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "6964:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "6912:96:46"
              },
              "returnParameters": {
                "id": 4517,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "7044:0:46"
              },
              "scope": 5441,
              "src": "6891:1966:46",
              "stateMutability": "payable",
              "superFunction": null,
              "visibility": "public"
            },
            {
              "body": {
                "id": 4752,
                "nodeType": "Block",
                "src": "9515:688:46",
                "statements": [
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4692,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4682,
                          "src": "9554:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 4691,
                        "name": "verifyTicketValidityForClaim",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5221,
                        "src": "9525:28:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                          "typeString": "function (uint256)"
                        }
                      },
                      "id": 4693,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9525:37:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4694,
                    "nodeType": "ExpressionStatement",
                    "src": "9525:37:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4696,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4682,
                          "src": "9602:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 4697,
                          "name": "rlpTxToQuasarOwner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4686,
                          "src": "9611:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 4695,
                        "name": "verifyClaimTxCorrectlyFormed",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5290,
                        "src": "9573:28:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                          "typeString": "function (uint256,bytes memory)"
                        }
                      },
                      "id": 4698,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9573:57:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4699,
                    "nodeType": "ExpressionStatement",
                    "src": "9573:57:46"
                  },
                  {
                    "assignments": [
                      4703
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4703,
                        "name": "utxoQuasarOwnerDecoded",
                        "nodeType": "VariableDeclaration",
                        "scope": 4752,
                        "src": "9641:45:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                          "typeString": "struct PosLib.Position"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 4702,
                          "name": "PosLib.Position",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 16894,
                          "src": "9641:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Position_$16894_storage_ptr",
                            "typeString": "struct PosLib.Position"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4708,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4706,
                          "name": "utxoPosQuasarOwner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4684,
                          "src": "9703:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4704,
                          "name": "PosLib",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17051,
                          "src": "9689:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_PosLib_$17051_$",
                            "typeString": "type(library PosLib)"
                          }
                        },
                        "id": 4705,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17050,
                        "src": "9689:13:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Position_$16894_memory_ptr_$",
                          "typeString": "function (uint256) pure returns (struct PosLib.Position memory)"
                        }
                      },
                      "id": 4707,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9689:33:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                        "typeString": "struct PosLib.Position memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "9641:81:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4712,
                              "name": "plasmaFramework",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4202,
                              "src": "9792:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                                "typeString": "contract PlasmaFramework"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4713,
                              "name": "rlpTxToQuasarOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4686,
                              "src": "9821:18:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4714,
                                  "name": "utxoQuasarOwnerDecoded",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4703,
                                  "src": "9853:22:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                                    "typeString": "struct PosLib.Position memory"
                                  }
                                },
                                "id": 4715,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "toStrictTxPos",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 16944,
                                "src": "9853:36:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_struct$_Position_$16894_memory_ptr_$returns$_t_struct$_Position_$16894_memory_ptr_$bound_to$_t_struct$_Position_$16894_memory_ptr_$",
                                  "typeString": "function (struct PosLib.Position memory) pure returns (struct PosLib.Position memory)"
                                }
                              },
                              "id": 4716,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9853:38:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                                "typeString": "struct PosLib.Position memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4717,
                              "name": "txToQuasarOwnerInclusionProof",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4688,
                              "src": "9905:29:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                                "typeString": "contract PlasmaFramework"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                                "typeString": "struct PosLib.Position memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4710,
                              "name": "MoreVpFinalization",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13739,
                              "src": "9740:18:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MoreVpFinalization_$13739_$",
                                "typeString": "type(library MoreVpFinalization)"
                              }
                            },
                            "id": 4711,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isStandardFinalized",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13692,
                            "src": "9740:38:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_contract$_PlasmaFramework_$14728_$_t_bytes_memory_ptr_$_t_struct$_Position_$16894_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                              "typeString": "function (contract PlasmaFramework,bytes memory,struct PosLib.Position memory,bytes memory) view returns (bool)"
                            }
                          },
                          "id": 4718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9740:204:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "50726f766964656420547820646f65736e2774206578697374",
                          "id": 4719,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9946:27:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_810f45ff6bdd5e24d9726e09bbe8c7a76a1905c31f032f32fc245486dbadb351",
                            "typeString": "literal_string \"Provided Tx doesn't exist\""
                          },
                          "value": "Provided Tx doesn't exist"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_810f45ff6bdd5e24d9726e09bbe8c7a76a1905c31f032f32fc245486dbadb351",
                            "typeString": "literal_string \"Provided Tx doesn't exist\""
                          }
                        ],
                        "id": 4709,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "9732:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4720,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9732:242:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4721,
                    "nodeType": "ExpressionStatement",
                    "src": "9732:242:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4727,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4722,
                            "name": "ticketData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4255,
                            "src": "9985:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                              "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                            }
                          },
                          "id": 4724,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4723,
                            "name": "utxoPos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4682,
                            "src": "9996:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9985:19:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                            "typeString": "struct Quasar.Ticket storage ref"
                          }
                        },
                        "id": 4725,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "isClaimed",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4243,
                        "src": "9985:29:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 4726,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10017:4:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "src": "9985:36:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 4728,
                    "nodeType": "ExpressionStatement",
                    "src": "9985:36:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4730,
                              "name": "ticketData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4255,
                              "src": "10040:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                              }
                            },
                            "id": 4732,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4731,
                              "name": "utxoPos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4682,
                              "src": "10051:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10040:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                              "typeString": "struct Quasar.Ticket storage ref"
                            }
                          },
                          "id": 4733,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "token",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4237,
                          "src": "10040:25:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4734,
                              "name": "ticketData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4255,
                              "src": "10067:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                              }
                            },
                            "id": 4736,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4735,
                              "name": "utxoPos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4682,
                              "src": "10078:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10067:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                              "typeString": "struct Quasar.Ticket storage ref"
                            }
                          },
                          "id": 4737,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "outputValue",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4233,
                          "src": "10067:31:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 4729,
                        "name": "utilize",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5440,
                        "src": "10032:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                          "typeString": "function (address,uint256)"
                        }
                      },
                      "id": 4738,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10032:67:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4739,
                    "nodeType": "ExpressionStatement",
                    "src": "10032:67:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4741,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4682,
                          "src": "10128:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4742,
                              "name": "ticketData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4255,
                              "src": "10137:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                              }
                            },
                            "id": 4744,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4743,
                              "name": "utxoPos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4682,
                              "src": "10148:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10137:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                              "typeString": "struct Quasar.Ticket storage ref"
                            }
                          },
                          "id": 4745,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "outputOwner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4229,
                          "src": "10137:31:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4746,
                              "name": "ticketData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4255,
                              "src": "10170:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                              }
                            },
                            "id": 4748,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4747,
                              "name": "utxoPos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4682,
                              "src": "10181:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10170:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                              "typeString": "struct Quasar.Ticket storage ref"
                            }
                          },
                          "id": 4749,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "token",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4237,
                          "src": "10170:25:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 4740,
                        "name": "runPayout",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5351,
                        "src": "10118:9:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_payable_$_t_address_$returns$__$",
                          "typeString": "function (uint256,address payable,address)"
                        }
                      },
                      "id": 4750,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10118:78:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4751,
                    "nodeType": "ExpressionStatement",
                    "src": "10118:78:46"
                  }
                ]
              },
              "documentation": "@dev Submit claim after spending the output to the quasar owner\n@param utxoPos pos of the output, which is the ticket identifier\n@param utxoPosQuasarOwner pos of the quasar owner's output\n@param rlpTxToQuasarOwner RLP-encoded transaction that spends the output to quasar owner\n@param txToQuasarOwnerInclusionProof Transaction Inclusion proof",
              "id": 4753,
              "implemented": true,
              "kind": "function",
              "modifiers": [],
              "name": "claim",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 4689,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 4682,
                    "name": "utxoPos",
                    "nodeType": "VariableDeclaration",
                    "scope": 4753,
                    "src": "9357:15:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4681,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "9357:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4684,
                    "name": "utxoPosQuasarOwner",
                    "nodeType": "VariableDeclaration",
                    "scope": 4753,
                    "src": "9382:26:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4683,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "9382:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4686,
                    "name": "rlpTxToQuasarOwner",
                    "nodeType": "VariableDeclaration",
                    "scope": 4753,
                    "src": "9418:31:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 4685,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "9418:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4688,
                    "name": "txToQuasarOwnerInclusionProof",
                    "nodeType": "VariableDeclaration",
                    "scope": 4753,
                    "src": "9459:42:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 4687,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "9459:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "9347:160:46"
              },
              "returnParameters": {
                "id": 4690,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "9515:0:46"
              },
              "scope": 5441,
              "src": "9333:870:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            {
              "body": {
                "id": 4852,
                "nodeType": "Block",
                "src": "10517:1039:46",
                "statements": [
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4761,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4755,
                          "src": "10556:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 4760,
                        "name": "verifyTicketValidityForClaim",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5221,
                        "src": "10527:28:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                          "typeString": "function (uint256)"
                        }
                      },
                      "id": 4762,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10527:37:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4763,
                    "nodeType": "ExpressionStatement",
                    "src": "10527:37:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4765,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4755,
                          "src": "10604:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 4766,
                          "name": "inFlightClaimTx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4757,
                          "src": "10613:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 4764,
                        "name": "verifyClaimTxCorrectlyFormed",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5290,
                        "src": "10575:28:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                          "typeString": "function (uint256,bytes memory)"
                        }
                      },
                      "id": 4767,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10575:54:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4768,
                    "nodeType": "ExpressionStatement",
                    "src": "10575:54:46"
                  },
                  {
                    "assignments": [
                      4770
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4770,
                        "name": "exitId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4852,
                        "src": "10669:14:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        "typeName": {
                          "id": 4769,
                          "name": "uint160",
                          "nodeType": "ElementaryTypeName",
                          "src": "10669:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4775,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4773,
                          "name": "inFlightClaimTx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4757,
                          "src": "10711:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4771,
                          "name": "ExitId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13554,
                          "src": "10686:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ExitId_$13554_$",
                            "typeString": "type(library ExitId)"
                          }
                        },
                        "id": 4772,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getInFlightExitId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13510,
                        "src": "10686:24:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint160_$",
                          "typeString": "function (bytes memory) pure returns (uint160)"
                        }
                      },
                      "id": 4774,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10686:41:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "10669:58:46"
                  },
                  {
                    "assignments": [
                      4779
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4779,
                        "name": "exitIdArr",
                        "nodeType": "VariableDeclaration",
                        "scope": 4852,
                        "src": "10737:26:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint160_$dyn_memory_ptr",
                          "typeString": "uint160[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4777,
                            "name": "uint160",
                            "nodeType": "ElementaryTypeName",
                            "src": "10737:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "id": 4778,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "10737:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint160_$dyn_storage_ptr",
                            "typeString": "uint160[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4785,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 4783,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10780:1:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "id": 4782,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "10766:13:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint160_$dyn_memory_$",
                          "typeString": "function (uint256) pure returns (uint160[] memory)"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4780,
                            "name": "uint160",
                            "nodeType": "ElementaryTypeName",
                            "src": "10770:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "id": 4781,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "10770:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint160_$dyn_storage_ptr",
                            "typeString": "uint160[]"
                          }
                        }
                      },
                      "id": 4784,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10766:16:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint160_$dyn_memory",
                        "typeString": "uint160[] memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "10737:45:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4790,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4786,
                          "name": "exitIdArr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4779,
                          "src": "10792:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint160_$dyn_memory_ptr",
                            "typeString": "uint160[] memory"
                          }
                        },
                        "id": 4788,
                        "indexExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4787,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10802:1:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "10792:12:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "id": 4789,
                        "name": "exitId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4770,
                        "src": "10807:6:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      "src": "10792:21:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "id": 4791,
                    "nodeType": "ExpressionStatement",
                    "src": "10792:21:46"
                  },
                  {
                    "assignments": [
                      4796
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4796,
                        "name": "ifeData",
                        "nodeType": "VariableDeclaration",
                        "scope": 4852,
                        "src": "10823:50:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_InFlightExit_$6287_memory_$dyn_memory_ptr",
                          "typeString": "struct PaymentExitDataModel.InFlightExit[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 4794,
                            "name": "PaymentExitDataModel.InFlightExit",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 6287,
                            "src": "10823:33:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_InFlightExit_$6287_storage_ptr",
                              "typeString": "struct PaymentExitDataModel.InFlightExit"
                            }
                          },
                          "id": 4795,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "10823:35:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_InFlightExit_$6287_storage_$dyn_storage_ptr",
                            "typeString": "struct PaymentExitDataModel.InFlightExit[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4801,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4799,
                          "name": "exitIdArr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4779,
                          "src": "10906:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint160_$dyn_memory_ptr",
                            "typeString": "uint160[] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_array$_t_uint160_$dyn_memory_ptr",
                            "typeString": "uint160[] memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 4797,
                          "name": "paymentExitGame",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4204,
                          "src": "10876:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_PaymentExitGame_$6421",
                            "typeString": "contract PaymentExitGame"
                          }
                        },
                        "id": 4798,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "inFlightExits",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12348,
                        "src": "10876:29:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_array$_t_uint160_$dyn_memory_ptr_$returns$_t_array$_t_struct$_InFlightExit_$6287_memory_$dyn_memory_ptr_$",
                          "typeString": "function (uint160[] memory) view external returns (struct PaymentExitDataModel.InFlightExit memory[] memory)"
                        }
                      },
                      "id": 4800,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10876:40:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_InFlightExit_$6287_memory_$dyn_memory_ptr",
                        "typeString": "struct PaymentExitDataModel.InFlightExit memory[] memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "10823:93:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          "id": 4808,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4803,
                                "name": "ifeData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4796,
                                "src": "10934:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_InFlightExit_$6287_memory_$dyn_memory_ptr",
                                  "typeString": "struct PaymentExitDataModel.InFlightExit memory[] memory"
                                }
                              },
                              "id": 4805,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4804,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10942:1:46",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10934:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_InFlightExit_$6287_memory",
                                "typeString": "struct PaymentExitDataModel.InFlightExit memory"
                              }
                            },
                            "id": 4806,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "exitStartTimestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6268,
                            "src": "10934:29:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4807,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10967:1:46",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10934:34:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "49464520686173206e6f74206265656e2073746172746564",
                          "id": 4809,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10970:26:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_a05bec7b3022c73c65bbb742f5834fa393690c2d699ab472ae2c8884b194a5fb",
                            "typeString": "literal_string \"IFE has not been started\""
                          },
                          "value": "IFE has not been started"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_a05bec7b3022c73c65bbb742f5834fa393690c2d699ab472ae2c8884b194a5fb",
                            "typeString": "literal_string \"IFE has not been started\""
                          }
                        ],
                        "id": 4802,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "10926:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4810,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10926:71:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4811,
                    "nodeType": "ExpressionStatement",
                    "src": "10926:71:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4813,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21262,
                              "src": "11242:5:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 4814,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "11242:15:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4820,
                                "name": "IFE_CLAIM_MARGIN",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4218,
                                "src": "11295:16:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4815,
                                    "name": "ifeData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4796,
                                    "src": "11261:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_InFlightExit_$6287_memory_$dyn_memory_ptr",
                                      "typeString": "struct PaymentExitDataModel.InFlightExit memory[] memory"
                                    }
                                  },
                                  "id": 4817,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 4816,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11269:1:46",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "11261:10:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_InFlightExit_$6287_memory",
                                    "typeString": "struct PaymentExitDataModel.InFlightExit memory"
                                  }
                                },
                                "id": 4818,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "exitStartTimestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6268,
                                "src": "11261:29:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "id": 4819,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19026,
                              "src": "11261:33:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4821,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11261:51:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11242:70:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "49464520436c61696d20706572696f642068617320706173736564",
                          "id": 4823,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11314:29:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_7e5335f5d5298bc6cffb8a9fb8fe939521c0f6b222b0cc986462393510b1df5b",
                            "typeString": "literal_string \"IFE Claim period has passed\""
                          },
                          "value": "IFE Claim period has passed"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_7e5335f5d5298bc6cffb8a9fb8fe939521c0f6b222b0cc986462393510b1df5b",
                            "typeString": "literal_string \"IFE Claim period has passed\""
                          }
                        ],
                        "id": 4812,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "11234:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4824,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11234:110:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4825,
                    "nodeType": "ExpressionStatement",
                    "src": "11234:110:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4831,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4826,
                            "name": "ticketData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4255,
                            "src": "11355:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                              "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                            }
                          },
                          "id": 4828,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4827,
                            "name": "utxoPos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4755,
                            "src": "11366:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11355:19:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                            "typeString": "struct Quasar.Ticket storage ref"
                          }
                        },
                        "id": 4829,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "isClaimed",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4243,
                        "src": "11355:29:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 4830,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11387:4:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "src": "11355:36:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 4832,
                    "nodeType": "ExpressionStatement",
                    "src": "11355:36:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4845,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4833,
                          "name": "ifeClaimData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4259,
                          "src": "11401:12:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Claim_$4251_storage_$",
                            "typeString": "mapping(uint256 => struct Quasar.Claim storage ref)"
                          }
                        },
                        "id": 4835,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4834,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4755,
                          "src": "11414:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "11401:21:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Claim_$4251_storage",
                          "typeString": "struct Quasar.Claim storage ref"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4837,
                            "name": "inFlightClaimTx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4757,
                            "src": "11431:15:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4841,
                                "name": "IFE_CLAIM_WAITING_PERIOD",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4221,
                                "src": "11468:24:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4838,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21262,
                                  "src": "11448:5:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 4839,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "11448:15:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4840,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19026,
                              "src": "11448:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4842,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11448:45:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 4843,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11495:4:46",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 4836,
                          "name": "Claim",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4251,
                          "src": "11425:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_Claim_$4251_storage_ptr_$",
                            "typeString": "type(struct Quasar.Claim storage pointer)"
                          }
                        },
                        "id": 4844,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11425:75:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Claim_$4251_memory",
                          "typeString": "struct Quasar.Claim memory"
                        }
                      },
                      "src": "11401:99:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Claim_$4251_storage",
                        "typeString": "struct Quasar.Claim storage ref"
                      }
                    },
                    "id": 4846,
                    "nodeType": "ExpressionStatement",
                    "src": "11401:99:46"
                  },
                  {
                    "eventCall": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4848,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4755,
                          "src": "11533:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 4849,
                          "name": "exitId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4770,
                          "src": "11542:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        ],
                        "id": 4847,
                        "name": "IFEClaimSubmitted",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4269,
                        "src": "11515:17:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint160_$returns$__$",
                          "typeString": "function (uint256,uint160)"
                        }
                      },
                      "id": 4850,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11515:34:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4851,
                    "nodeType": "EmitStatement",
                    "src": "11510:39:46"
                  }
                ]
              },
              "documentation": "@dev Submit an IFE claim for claims without inclusion proof\n@param utxoPos pos of the output, which is the ticket identifier\n@param inFlightClaimTx in-flight tx that spends the output to quasar owner",
              "id": 4853,
              "implemented": true,
              "kind": "function",
              "modifiers": [],
              "name": "ifeClaim",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 4758,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 4755,
                    "name": "utxoPos",
                    "nodeType": "VariableDeclaration",
                    "scope": 4853,
                    "src": "10463:15:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4754,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "10463:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4757,
                    "name": "inFlightClaimTx",
                    "nodeType": "VariableDeclaration",
                    "scope": 4853,
                    "src": "10480:28:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 4756,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "10480:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "10462:47:46"
              },
              "returnParameters": {
                "id": 4759,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "10517:0:46"
              },
              "scope": 5441,
              "src": "10445:1111:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            {
              "body": {
                "id": 5010,
                "nodeType": "Block",
                "src": "12533:1522:46",
                "statements": [
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 4879,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4871,
                            "name": "senderData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4867,
                            "src": "12551:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4875,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21272,
                                      "src": "12592:3:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 4876,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12592:10:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4873,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21259,
                                    "src": "12575:3:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 4874,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "12575:16:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 4877,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12575:28:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 4872,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21266,
                              "src": "12565:9:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 4878,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12565:39:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "12551:53:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "496e636f72726563742053656e64657244617461",
                          "id": 4880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12606:22:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_f7fd820d072c70b8084abdcf533b9c0fe404753dd11ae685285513e198768fe2",
                            "typeString": "literal_string \"Incorrect SenderData\""
                          },
                          "value": "Incorrect SenderData"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_f7fd820d072c70b8084abdcf533b9c0fe404753dd11ae685285513e198768fe2",
                            "typeString": "literal_string \"Incorrect SenderData\""
                          }
                        ],
                        "id": 4870,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "12543:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4881,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12543:86:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4882,
                    "nodeType": "ExpressionStatement",
                    "src": "12543:86:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4884,
                                "name": "ticketData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4255,
                                "src": "12647:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                  "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                }
                              },
                              "id": 4886,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4885,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4855,
                                "src": "12658:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12647:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                "typeString": "struct Quasar.Ticket storage ref"
                              }
                            },
                            "id": 4887,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isClaimed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4243,
                            "src": "12647:29:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4888,
                                "name": "ifeClaimData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4259,
                                "src": "12680:12:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Claim_$4251_storage_$",
                                  "typeString": "mapping(uint256 => struct Quasar.Claim storage ref)"
                                }
                              },
                              "id": 4890,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4889,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4855,
                                "src": "12693:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12680:21:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Claim_$4251_storage",
                                "typeString": "struct Quasar.Claim storage ref"
                              }
                            },
                            "id": 4891,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isValid",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4250,
                            "src": "12680:29:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "12647:62:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "54686520636c61696d206973206e6f74206368616c6c656e676561626c65",
                          "id": 4893,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12711:32:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_85785d24f25d4cb709f189134c24ae813be5a78a0578599b77bed05c3145a963",
                            "typeString": "literal_string \"The claim is not challengeable\""
                          },
                          "value": "The claim is not challengeable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_85785d24f25d4cb709f189134c24ae813be5a78a0578599b77bed05c3145a963",
                            "typeString": "literal_string \"The claim is not challengeable\""
                          }
                        ],
                        "id": 4883,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "12639:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4894,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12639:105:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4895,
                    "nodeType": "ExpressionStatement",
                    "src": "12639:105:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4903,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4897,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21262,
                              "src": "12762:5:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 4898,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12762:15:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4899,
                                "name": "ifeClaimData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4259,
                                "src": "12781:12:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Claim_$4251_storage_$",
                                  "typeString": "mapping(uint256 => struct Quasar.Claim storage ref)"
                                }
                              },
                              "id": 4901,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4900,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4855,
                                "src": "12794:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12781:21:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Claim_$4251_storage",
                                "typeString": "struct Quasar.Claim storage ref"
                              }
                            },
                            "id": 4902,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "finalizationTimestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4248,
                            "src": "12781:43:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12762:62:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "546865206368616c6c656e676520706572696f64206973206f766572",
                          "id": 4904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12826:30:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_4390aa32b4a8858ea9ee9f8c5d232522e86f7698fb255a835a674073d68c8eda",
                            "typeString": "literal_string \"The challenge period is over\""
                          },
                          "value": "The challenge period is over"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_4390aa32b4a8858ea9ee9f8c5d232522e86f7698fb255a835a674073d68c8eda",
                            "typeString": "literal_string \"The challenge period is over\""
                          }
                        ],
                        "id": 4896,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "12754:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4905,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12754:103:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4906,
                    "nodeType": "ExpressionStatement",
                    "src": "12754:103:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 4917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4909,
                                    "name": "ifeClaimData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4259,
                                    "src": "12898:12:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Claim_$4251_storage_$",
                                      "typeString": "mapping(uint256 => struct Quasar.Claim storage ref)"
                                    }
                                  },
                                  "id": 4911,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 4910,
                                    "name": "utxoPos",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4855,
                                    "src": "12911:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12898:21:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Claim_$4251_storage",
                                    "typeString": "struct Quasar.Claim storage ref"
                                  }
                                },
                                "id": 4912,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rlpClaimTx",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4246,
                                "src": "12898:32:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              ],
                              "id": 4908,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21266,
                              "src": "12888:9:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 4913,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12888:43:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4915,
                                "name": "rlpChallengeTx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4857,
                                "src": "12945:14:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 4914,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21266,
                              "src": "12935:9:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 4916,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12935:25:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "12888:72:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "546865206368616c6c656e67696e67207472616e73616374696f6e206973207468652073616d652061732074686520636c61696d207472616e73616374696f6e",
                          "id": 4918,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12974:66:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_19dbc5f66c4534a024f1574337144a2aec9bed40081c4ae1551000c09bbe10f1",
                            "typeString": "literal_string \"The challenging transaction is the same as the claim transaction\""
                          },
                          "value": "The challenging transaction is the same as the claim transaction"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_19dbc5f66c4534a024f1574337144a2aec9bed40081c4ae1551000c09bbe10f1",
                            "typeString": "literal_string \"The challenging transaction is the same as the claim transaction\""
                          }
                        ],
                        "id": 4907,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "12867:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4919,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12867:183:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4920,
                    "nodeType": "ExpressionStatement",
                    "src": "12867:183:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4924,
                              "name": "plasmaFramework",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4202,
                              "src": "13121:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                                "typeString": "contract PlasmaFramework"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4925,
                              "name": "rlpChallengeTx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4857,
                              "src": "13150:14:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_PlasmaFramework_$14728",
                                "typeString": "contract PlasmaFramework"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4922,
                              "name": "MoreVpFinalization",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13739,
                              "src": "13069:18:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MoreVpFinalization_$13739_$",
                                "typeString": "type(library MoreVpFinalization)"
                              }
                            },
                            "id": 4923,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isProtocolFinalized",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13738,
                            "src": "13069:38:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_contract$_PlasmaFramework_$14728_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                              "typeString": "function (contract PlasmaFramework,bytes memory) view returns (bool)"
                            }
                          },
                          "id": 4926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13069:105:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "546865206368616c6c656e67696e67207472616e73616374696f6e20697320696e76616c6964",
                          "id": 4927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13176:40:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_c368b48b689bce28da3ee6a42aecb448db000ad90ecd5ad8fc148a8e63a785bc",
                            "typeString": "literal_string \"The challenging transaction is invalid\""
                          },
                          "value": "The challenging transaction is invalid"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_c368b48b689bce28da3ee6a42aecb448db000ad90ecd5ad8fc148a8e63a785bc",
                            "typeString": "literal_string \"The challenging transaction is invalid\""
                          }
                        ],
                        "id": 4921,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "13061:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 4928,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13061:156:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4929,
                    "nodeType": "ExpressionStatement",
                    "src": "13061:156:46"
                  },
                  {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4933,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4930,
                          "name": "otherInputCreationTx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4865,
                          "src": "13232:20:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 4931,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "13232:27:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4932,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13263:1:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "13232:32:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "id": 4971,
                      "nodeType": "Block",
                      "src": "13429:319:46",
                      "statements": [
                        {
                          "assignments": [
                            4949
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4949,
                              "name": "decodedTx",
                              "nodeType": "VariableDeclaration",
                              "scope": 4971,
                              "src": "13443:52:46",
                              "stateVariable": false,
                              "storageLocation": "memory",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Transaction_$16102_memory_ptr",
                                "typeString": "struct PaymentTransactionModel.Transaction"
                              },
                              "typeName": {
                                "contractScope": null,
                                "id": 4948,
                                "name": "PaymentTransactionModel.Transaction",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 16102,
                                "src": "13443:35:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Transaction_$16102_storage_ptr",
                                  "typeString": "struct PaymentTransactionModel.Transaction"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 4957,
                          "initialValue": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4952,
                                    "name": "ifeClaimData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4259,
                                    "src": "13541:12:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Claim_$4251_storage_$",
                                      "typeString": "mapping(uint256 => struct Quasar.Claim storage ref)"
                                    }
                                  },
                                  "id": 4954,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 4953,
                                    "name": "utxoPos",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4855,
                                    "src": "13554:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13541:21:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Claim_$4251_storage",
                                    "typeString": "struct Quasar.Claim storage ref"
                                  }
                                },
                                "id": 4955,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rlpClaimTx",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4246,
                                "src": "13541:32:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 4950,
                                "name": "PaymentTransactionModel",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16301,
                                "src": "13510:23:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_PaymentTransactionModel_$16301_$",
                                  "typeString": "type(library PaymentTransactionModel)"
                                }
                              },
                              "id": 4951,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16117,
                              "src": "13510:30:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_Transaction_$16102_memory_ptr_$",
                                "typeString": "function (bytes memory) pure returns (struct PaymentTransactionModel.Transaction memory)"
                              }
                            },
                            "id": 4956,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13510:64:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Transaction_$16102_memory_ptr",
                              "typeString": "struct PaymentTransactionModel.Transaction memory"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "13443:131:46"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 4960,
                                        "name": "decodedTx",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4949,
                                        "src": "13621:9:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Transaction_$16102_memory_ptr",
                                          "typeString": "struct PaymentTransactionModel.Transaction memory"
                                        }
                                      },
                                      "id": 4961,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "inputs",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 16094,
                                      "src": "13621:16:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                                        "typeString": "bytes32[] memory"
                                      }
                                    },
                                    "id": 4963,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 4962,
                                      "name": "otherInputIndex",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4863,
                                      "src": "13638:15:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "13621:33:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 4959,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13613:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint256"
                                },
                                "id": 4964,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13613:42:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 4965,
                                "name": "otherInputCreationTx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4865,
                                "src": "13657:20:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 4966,
                                "name": "rlpChallengeTx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4857,
                                "src": "13679:14:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 4967,
                                "name": "challengeTxInputIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4859,
                                "src": "13695:21:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 4968,
                                "name": "challengeTxWitness",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4861,
                                "src": "13718:18:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 4958,
                              "name": "verifySpendingCondition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5176,
                              "src": "13589:23:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint16_$_t_bytes_memory_ptr_$returns$__$",
                                "typeString": "function (uint256,bytes memory,bytes memory,uint16,bytes memory)"
                              }
                            },
                            "id": 4969,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13589:148:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 4970,
                          "nodeType": "ExpressionStatement",
                          "src": "13589:148:46"
                        }
                      ]
                    },
                    "id": 4972,
                    "nodeType": "IfStatement",
                    "src": "13228:520:46",
                    "trueBody": {
                      "id": 4945,
                      "nodeType": "Block",
                      "src": "13266:157:46",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4935,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4855,
                                "src": "13304:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4936,
                                    "name": "ticketData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4255,
                                    "src": "13313:10:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                      "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                    }
                                  },
                                  "id": 4938,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 4937,
                                    "name": "utxoPos",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4855,
                                    "src": "13324:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13313:19:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                    "typeString": "struct Quasar.Ticket storage ref"
                                  }
                                },
                                "id": 4939,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rlpOutputCreationTx",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4241,
                                "src": "13313:39:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 4940,
                                "name": "rlpChallengeTx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4857,
                                "src": "13354:14:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 4941,
                                "name": "challengeTxInputIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4859,
                                "src": "13370:21:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 4942,
                                "name": "challengeTxWitness",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4861,
                                "src": "13393:18:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 4934,
                              "name": "verifySpendingCondition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5176,
                              "src": "13280:23:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint16_$_t_bytes_memory_ptr_$returns$__$",
                                "typeString": "function (uint256,bytes memory,bytes memory,uint16,bytes memory)"
                              }
                            },
                            "id": 4943,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13280:132:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 4944,
                          "nodeType": "ExpressionStatement",
                          "src": "13280:132:46"
                        }
                      ]
                    }
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4978,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4973,
                            "name": "ifeClaimData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4259,
                            "src": "13758:12:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Claim_$4251_storage_$",
                              "typeString": "mapping(uint256 => struct Quasar.Claim storage ref)"
                            }
                          },
                          "id": 4975,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4974,
                            "name": "utxoPos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4855,
                            "src": "13771:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13758:21:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Claim_$4251_storage",
                            "typeString": "struct Quasar.Claim storage ref"
                          }
                        },
                        "id": 4976,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "isValid",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4250,
                        "src": "13758:29:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 4977,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13790:5:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      "src": "13758:37:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 4979,
                    "nodeType": "ExpressionStatement",
                    "src": "13758:37:46"
                  },
                  {
                    "assignments": [
                      4981
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4981,
                        "name": "ticket",
                        "nodeType": "VariableDeclaration",
                        "scope": 5010,
                        "src": "13805:20:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Ticket_$4244_memory_ptr",
                          "typeString": "struct Quasar.Ticket"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 4980,
                          "name": "Ticket",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4244,
                          "src": "13805:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Ticket_$4244_storage_ptr",
                            "typeString": "struct Quasar.Ticket"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4985,
                    "initialValue": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4982,
                        "name": "ticketData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4255,
                        "src": "13828:10:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                          "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                        }
                      },
                      "id": 4984,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4983,
                        "name": "utxoPos",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4855,
                        "src": "13839:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "13828:19:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                        "typeString": "struct Quasar.Ticket storage ref"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "13805:42:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4998,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4986,
                          "name": "tokenUsableCapacity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5497,
                          "src": "13857:19:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 4989,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4987,
                            "name": "ticket",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4981,
                            "src": "13877:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Ticket_$4244_memory_ptr",
                              "typeString": "struct Quasar.Ticket memory"
                            }
                          },
                          "id": 4988,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "token",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4237,
                          "src": "13877:12:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "13857:33:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4995,
                              "name": "ticket",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4981,
                              "src": "13931:6:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Ticket_$4244_memory_ptr",
                                "typeString": "struct Quasar.Ticket memory"
                              }
                            },
                            "id": 4996,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "reservedAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4235,
                            "src": "13931:21:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4990,
                              "name": "tokenUsableCapacity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5497,
                              "src": "13893:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 4993,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4991,
                                "name": "ticket",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4981,
                                "src": "13913:6:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Ticket_$4244_memory_ptr",
                                  "typeString": "struct Quasar.Ticket memory"
                                }
                              },
                              "id": 4992,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "token",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4237,
                              "src": "13913:12:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13893:33:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4994,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 19026,
                          "src": "13893:37:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 4997,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13893:60:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "13857:96:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4999,
                    "nodeType": "ExpressionStatement",
                    "src": "13857:96:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5003,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21272,
                            "src": "14001:3:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 5004,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "14001:10:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5005,
                            "name": "ticket",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4981,
                            "src": "14013:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Ticket_$4244_memory_ptr",
                              "typeString": "struct Quasar.Ticket memory"
                            }
                          },
                          "id": 5006,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "bondValue",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4239,
                          "src": "14013:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 5007,
                          "name": "SAFE_GAS_STIPEND",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5474,
                          "src": "14031:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5000,
                          "name": "SafeEthTransfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17707,
                          "src": "13963:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_SafeEthTransfer_$17707_$",
                            "typeString": "type(library SafeEthTransfer)"
                          }
                        },
                        "id": 5002,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "transferRevertOnError",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17679,
                        "src": "13963:37:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$_t_uint256_$returns$__$",
                          "typeString": "function (address payable,uint256,uint256)"
                        }
                      },
                      "id": 5008,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13963:85:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5009,
                    "nodeType": "ExpressionStatement",
                    "src": "13963:85:46"
                  }
                ]
              },
              "documentation": "@dev Challenge an IFE claim\n@notice A challenge is required if any of the claimTx's inputs are double spent\n@param utxoPos pos of the output, which is the ticket identifier\n@param rlpChallengeTx RLP-encoded challenge transaction\n@param challengeTxInputIndex index pos of the same utxo in the challenge transaction\n@param challengeTxWitness Witness for challenging transaction\n@param otherInputIndex (optional) index pos of another input from the claimTx that is spent\n@param otherInputCreationTx (optional) Transaction that created this shared input\n@param senderData A keccak256 hash of the sender's address",
              "id": 5011,
              "implemented": true,
              "kind": "function",
              "modifiers": [],
              "name": "challengeIfeClaim",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 4868,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 4855,
                    "name": "utxoPos",
                    "nodeType": "VariableDeclaration",
                    "scope": 5011,
                    "src": "12285:15:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 4854,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "12285:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4857,
                    "name": "rlpChallengeTx",
                    "nodeType": "VariableDeclaration",
                    "scope": 5011,
                    "src": "12310:27:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 4856,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "12310:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4859,
                    "name": "challengeTxInputIndex",
                    "nodeType": "VariableDeclaration",
                    "scope": 5011,
                    "src": "12347:28:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    },
                    "typeName": {
                      "id": 4858,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "12347:6:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4861,
                    "name": "challengeTxWitness",
                    "nodeType": "VariableDeclaration",
                    "scope": 5011,
                    "src": "12385:31:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 4860,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "12385:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4863,
                    "name": "otherInputIndex",
                    "nodeType": "VariableDeclaration",
                    "scope": 5011,
                    "src": "12426:22:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    },
                    "typeName": {
                      "id": 4862,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "12426:6:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4865,
                    "name": "otherInputCreationTx",
                    "nodeType": "VariableDeclaration",
                    "scope": 5011,
                    "src": "12458:33:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 4864,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "12458:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 4867,
                    "name": "senderData",
                    "nodeType": "VariableDeclaration",
                    "scope": 5011,
                    "src": "12501:18:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "typeName": {
                      "id": 4866,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "12501:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "12275:250:46"
              },
              "returnParameters": {
                "id": 4869,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "12533:0:46"
              },
              "scope": 5441,
              "src": "12249:1806:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            {
              "body": {
                "id": 5065,
                "nodeType": "Block",
                "src": "14251:435:46",
                "statements": [
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5017,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21262,
                              "src": "14269:5:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 5018,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "14269:15:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5019,
                                "name": "ifeClaimData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4259,
                                "src": "14287:12:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Claim_$4251_storage_$",
                                  "typeString": "mapping(uint256 => struct Quasar.Claim storage ref)"
                                }
                              },
                              "id": 5021,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 5020,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5013,
                                "src": "14300:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14287:21:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Claim_$4251_storage",
                                "typeString": "struct Quasar.Claim storage ref"
                              }
                            },
                            "id": 5022,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "finalizationTimestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4248,
                            "src": "14287:43:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14269:61:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "54686520636c61696d206973206e6f742066696e616c697a656420796574",
                          "id": 5024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "14332:32:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_28978c503024d7768d0d8a04b669daaee2a5baae7aaeaab0d95eb9095ab62e8c",
                            "typeString": "literal_string \"The claim is not finalized yet\""
                          },
                          "value": "The claim is not finalized yet"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_28978c503024d7768d0d8a04b669daaee2a5baae7aaeaab0d95eb9095ab62e8c",
                            "typeString": "literal_string \"The claim is not finalized yet\""
                          }
                        ],
                        "id": 5016,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "14261:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 5025,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14261:104:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5026,
                    "nodeType": "ExpressionStatement",
                    "src": "14261:104:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5028,
                              "name": "ifeClaimData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4259,
                              "src": "14383:12:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Claim_$4251_storage_$",
                                "typeString": "mapping(uint256 => struct Quasar.Claim storage ref)"
                              }
                            },
                            "id": 5030,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5029,
                              "name": "utxoPos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5013,
                              "src": "14396:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14383:21:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Claim_$4251_storage",
                              "typeString": "struct Quasar.Claim storage ref"
                            }
                          },
                          "id": 5031,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "isValid",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4250,
                          "src": "14383:29:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "54686520636c61696d2068617320616c7265616479206265656e20636c61696d6564206f72206368616c6c656e676564",
                          "id": 5032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "14414:50:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_b11e0a5c71b1dd1a7f3f14d7b527f87bff185063e15820706b99a4b0f43ef52f",
                            "typeString": "literal_string \"The claim has already been claimed or challenged\""
                          },
                          "value": "The claim has already been claimed or challenged"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_b11e0a5c71b1dd1a7f3f14d7b527f87bff185063e15820706b99a4b0f43ef52f",
                            "typeString": "literal_string \"The claim has already been claimed or challenged\""
                          }
                        ],
                        "id": 5027,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "14375:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 5033,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14375:90:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5034,
                    "nodeType": "ExpressionStatement",
                    "src": "14375:90:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 5040,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5035,
                            "name": "ifeClaimData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4259,
                            "src": "14475:12:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Claim_$4251_storage_$",
                              "typeString": "mapping(uint256 => struct Quasar.Claim storage ref)"
                            }
                          },
                          "id": 5037,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5036,
                            "name": "utxoPos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5013,
                            "src": "14488:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14475:21:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Claim_$4251_storage",
                            "typeString": "struct Quasar.Claim storage ref"
                          }
                        },
                        "id": 5038,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "isValid",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4250,
                        "src": "14475:29:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 5039,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14507:5:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      "src": "14475:37:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 5041,
                    "nodeType": "ExpressionStatement",
                    "src": "14475:37:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5043,
                              "name": "ticketData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4255,
                              "src": "14531:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                              }
                            },
                            "id": 5045,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5044,
                              "name": "utxoPos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5013,
                              "src": "14542:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14531:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                              "typeString": "struct Quasar.Ticket storage ref"
                            }
                          },
                          "id": 5046,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "token",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4237,
                          "src": "14531:25:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5047,
                              "name": "ticketData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4255,
                              "src": "14558:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                              }
                            },
                            "id": 5049,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5048,
                              "name": "utxoPos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5013,
                              "src": "14569:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14558:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                              "typeString": "struct Quasar.Ticket storage ref"
                            }
                          },
                          "id": 5050,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "outputValue",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4233,
                          "src": "14558:31:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 5042,
                        "name": "utilize",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5440,
                        "src": "14523:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                          "typeString": "function (address,uint256)"
                        }
                      },
                      "id": 5051,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14523:67:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5052,
                    "nodeType": "ExpressionStatement",
                    "src": "14523:67:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5054,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5013,
                          "src": "14611:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5055,
                              "name": "ticketData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4255,
                              "src": "14620:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                              }
                            },
                            "id": 5057,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5056,
                              "name": "utxoPos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5013,
                              "src": "14631:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14620:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                              "typeString": "struct Quasar.Ticket storage ref"
                            }
                          },
                          "id": 5058,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "outputOwner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4229,
                          "src": "14620:31:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5059,
                              "name": "ticketData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4255,
                              "src": "14653:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                              }
                            },
                            "id": 5061,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5060,
                              "name": "utxoPos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5013,
                              "src": "14664:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14653:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                              "typeString": "struct Quasar.Ticket storage ref"
                            }
                          },
                          "id": 5062,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "token",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4237,
                          "src": "14653:25:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 5053,
                        "name": "runPayout",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5351,
                        "src": "14601:9:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_payable_$_t_address_$returns$__$",
                          "typeString": "function (uint256,address payable,address)"
                        }
                      },
                      "id": 5063,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14601:78:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5064,
                    "nodeType": "ExpressionStatement",
                    "src": "14601:78:46"
                  }
                ]
              },
              "documentation": "@dev Process the IFE claim to get liquid funds\n@param utxoPos pos of the output, which is the ticket identifier",
              "id": 5066,
              "implemented": true,
              "kind": "function",
              "modifiers": [],
              "name": "processIfeClaim",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 5014,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 5013,
                    "name": "utxoPos",
                    "nodeType": "VariableDeclaration",
                    "scope": 5066,
                    "src": "14227:15:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 5012,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "14227:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "14226:17:46"
              },
              "returnParameters": {
                "id": 5015,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "14251:0:46"
              },
              "scope": 5441,
              "src": "14202:484:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            {
              "body": {
                "id": 5086,
                "nodeType": "Block",
                "src": "15096:136:46",
                "statements": [
                  {
                    "assignments": [
                      5076
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5076,
                        "name": "outputOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 5086,
                        "src": "15106:19:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5075,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15106:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5081,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5079,
                          "name": "output",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5068,
                          "src": "15167:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                            "typeString": "struct FungibleTokenOutputModel.Output memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                            "typeString": "struct FungibleTokenOutputModel.Output memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5077,
                          "name": "PaymentTransactionModel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16301,
                          "src": "15128:23:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_PaymentTransactionModel_$16301_$",
                            "typeString": "type(library PaymentTransactionModel)"
                          }
                        },
                        "id": 5078,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getOutputOwner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16276,
                        "src": "15128:38:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_Output_$15744_memory_ptr_$returns$_t_address_payable_$",
                          "typeString": "function (struct FungibleTokenOutputModel.Output memory) pure returns (address payable)"
                        }
                      },
                      "id": 5080,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15128:46:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "15106:68:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 5084,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 5082,
                        "name": "outputOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5076,
                        "src": "15191:11:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 5083,
                        "name": "expectedOutputOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5070,
                        "src": "15206:19:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "15191:34:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "functionReturnParameters": 5074,
                    "id": 5085,
                    "nodeType": "Return",
                    "src": "15184:41:46"
                  }
                ]
              },
              "documentation": "@dev Verify the owner of the output\n@param output Output Data\n@param expectedOutputOwner expected owner of the output",
              "id": 5087,
              "implemented": true,
              "kind": "function",
              "modifiers": [],
              "name": "verifyOwnership",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 5071,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 5068,
                    "name": "output",
                    "nodeType": "VariableDeclaration",
                    "scope": 5087,
                    "src": "14993:45:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                      "typeString": "struct FungibleTokenOutputModel.Output"
                    },
                    "typeName": {
                      "contractScope": null,
                      "id": 5067,
                      "name": "FungibleTokenOutputModel.Output",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 15744,
                      "src": "14993:31:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Output_$15744_storage_ptr",
                        "typeString": "struct FungibleTokenOutputModel.Output"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 5070,
                    "name": "expectedOutputOwner",
                    "nodeType": "VariableDeclaration",
                    "scope": 5087,
                    "src": "15040:27:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 5069,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "15040:7:46",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "14992:76:46"
              },
              "returnParameters": {
                "id": 5074,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 5073,
                    "name": "",
                    "nodeType": "VariableDeclaration",
                    "scope": 5087,
                    "src": "15090:4:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "typeName": {
                      "id": 5072,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "15090:4:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "15089:6:46"
              },
              "scope": 5441,
              "src": "14968:264:46",
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "private"
            },
            {
              "body": {
                "id": 5175,
                "nodeType": "Block",
                "src": "15824:902:46",
                "statements": [
                  {
                    "assignments": [
                      5103
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5103,
                        "name": "challengingTx",
                        "nodeType": "VariableDeclaration",
                        "scope": 5175,
                        "src": "15834:51:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Transaction_$15866_memory_ptr",
                          "typeString": "struct GenericTransaction.Transaction"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 5102,
                          "name": "GenericTransaction.Transaction",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15866,
                          "src": "15834:30:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Transaction_$15866_storage_ptr",
                            "typeString": "struct GenericTransaction.Transaction"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5108,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5106,
                          "name": "rlpChallengeTx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5093,
                          "src": "15914:14:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5104,
                          "name": "GenericTransaction",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16053,
                          "src": "15888:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_GenericTransaction_$16053_$",
                            "typeString": "type(library GenericTransaction)"
                          }
                        },
                        "id": 5105,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15980,
                        "src": "15888:25:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_Transaction_$15866_memory_ptr_$",
                          "typeString": "function (bytes memory) pure returns (struct GenericTransaction.Transaction memory)"
                        }
                      },
                      "id": 5107,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15888:41:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Transaction_$15866_memory_ptr",
                        "typeString": "struct GenericTransaction.Transaction memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "15834:95:46"
                  },
                  {
                    "assignments": [
                      5112
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5112,
                        "name": "inputTx",
                        "nodeType": "VariableDeclaration",
                        "scope": 5175,
                        "src": "15940:45:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Transaction_$15866_memory_ptr",
                          "typeString": "struct GenericTransaction.Transaction"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 5111,
                          "name": "GenericTransaction.Transaction",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15866,
                          "src": "15940:30:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Transaction_$15866_storage_ptr",
                            "typeString": "struct GenericTransaction.Transaction"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5117,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5115,
                          "name": "rlpOutputCreationTx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5091,
                          "src": "16014:19:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5113,
                          "name": "GenericTransaction",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16053,
                          "src": "15988:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_GenericTransaction_$16053_$",
                            "typeString": "type(library GenericTransaction)"
                          }
                        },
                        "id": 5114,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15980,
                        "src": "15988:25:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_Transaction_$15866_memory_ptr_$",
                          "typeString": "function (bytes memory) pure returns (struct GenericTransaction.Transaction memory)"
                        }
                      },
                      "id": 5116,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15988:46:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Transaction_$15866_memory_ptr",
                        "typeString": "struct GenericTransaction.Transaction memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "15940:94:46"
                  },
                  {
                    "assignments": [
                      5121
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5121,
                        "name": "utxoPosDecoded",
                        "nodeType": "VariableDeclaration",
                        "scope": 5175,
                        "src": "16044:37:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                          "typeString": "struct PosLib.Position"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 5120,
                          "name": "PosLib.Position",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 16894,
                          "src": "16044:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Position_$16894_storage_ptr",
                            "typeString": "struct PosLib.Position"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5126,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5124,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5089,
                          "src": "16098:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5122,
                          "name": "PosLib",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17051,
                          "src": "16084:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_PosLib_$17051_$",
                            "typeString": "type(library PosLib)"
                          }
                        },
                        "id": 5123,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17050,
                        "src": "16084:13:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Position_$16894_memory_ptr_$",
                          "typeString": "function (uint256) pure returns (struct PosLib.Position memory)"
                        }
                      },
                      "id": 5125,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16084:22:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                        "typeString": "struct PosLib.Position memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "16044:62:46"
                  },
                  {
                    "assignments": [
                      5130
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5130,
                        "name": "output",
                        "nodeType": "VariableDeclaration",
                        "scope": 5175,
                        "src": "16116:39:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Output_$15871_memory_ptr",
                          "typeString": "struct GenericTransaction.Output"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 5129,
                          "name": "GenericTransaction.Output",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15871,
                          "src": "16116:25:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Output_$15871_storage_ptr",
                            "typeString": "struct GenericTransaction.Output"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5137,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5133,
                          "name": "inputTx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5112,
                          "src": "16187:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Transaction_$15866_memory_ptr",
                            "typeString": "struct GenericTransaction.Transaction memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5134,
                            "name": "utxoPosDecoded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5121,
                            "src": "16196:14:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Position_$16894_memory_ptr",
                              "typeString": "struct PosLib.Position memory"
                            }
                          },
                          "id": 5135,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "outputIndex",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16893,
                          "src": "16196:26:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Transaction_$15866_memory_ptr",
                            "typeString": "struct GenericTransaction.Transaction memory"
                          },
                          {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5131,
                          "name": "GenericTransaction",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16053,
                          "src": "16158:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_GenericTransaction_$16053_$",
                            "typeString": "type(library GenericTransaction)"
                          }
                        },
                        "id": 5132,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getOutput",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16004,
                        "src": "16158:28:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_Transaction_$15866_memory_ptr_$_t_uint16_$returns$_t_struct$_Output_$15871_memory_ptr_$",
                          "typeString": "function (struct GenericTransaction.Transaction memory,uint16) pure returns (struct GenericTransaction.Output memory)"
                        }
                      },
                      "id": 5136,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16158:65:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Output_$15871_memory_ptr",
                        "typeString": "struct GenericTransaction.Output memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "16116:107:46"
                  },
                  {
                    "assignments": [
                      5139
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5139,
                        "name": "condition",
                        "nodeType": "VariableDeclaration",
                        "scope": 5175,
                        "src": "16234:28:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ISpendingCondition_$6210",
                          "typeString": "contract ISpendingCondition"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 5138,
                          "name": "ISpendingCondition",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6210,
                          "src": "16234:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISpendingCondition_$6210",
                            "typeString": "contract ISpendingCondition"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5147,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5142,
                            "name": "output",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5130,
                            "src": "16323:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Output_$15871_memory_ptr",
                              "typeString": "struct GenericTransaction.Output memory"
                            }
                          },
                          "id": 5143,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "outputType",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15868,
                          "src": "16323:17:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5144,
                            "name": "challengingTx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5103,
                            "src": "16342:13:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Transaction_$15866_memory_ptr",
                              "typeString": "struct GenericTransaction.Transaction memory"
                            }
                          },
                          "id": 5145,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "txType",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15855,
                          "src": "16342:20:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5140,
                          "name": "spendingConditionRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4206,
                          "src": "16265:25:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_SpendingConditionRegistry_$13263",
                            "typeString": "contract SpendingConditionRegistry"
                          }
                        },
                        "id": 5141,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "spendingConditions",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13197,
                        "src": "16265:44:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_uint256_$_t_uint256_$returns$_t_contract$_ISpendingCondition_$6210_$",
                          "typeString": "function (uint256,uint256) view external returns (contract ISpendingCondition)"
                        }
                      },
                      "id": 5146,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16265:107:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ISpendingCondition_$6210",
                        "typeString": "contract ISpendingCondition"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "16234:138:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 5155,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5150,
                                "name": "condition",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5139,
                                "src": "16398:9:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ISpendingCondition_$6210",
                                  "typeString": "contract ISpendingCondition"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ISpendingCondition_$6210",
                                  "typeString": "contract ISpendingCondition"
                                }
                              ],
                              "id": 5149,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "16390:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 5151,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16390:18:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5153,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16420:1:46",
                                "subdenomination": null,
                                "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": 5152,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "16412:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 5154,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16412:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "16390:32:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "5370656e64696e6720636f6e646974696f6e20636f6e7472616374206e6f7420666f756e64",
                          "id": 5156,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16424:39:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_b4aa84575f85fd8ffa5a844bb84cfd83d563fdea54e239771e74bbe396bb8887",
                            "typeString": "literal_string \"Spending condition contract not found\""
                          },
                          "value": "Spending condition contract not found"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_b4aa84575f85fd8ffa5a844bb84cfd83d563fdea54e239771e74bbe396bb8887",
                            "typeString": "literal_string \"Spending condition contract not found\""
                          }
                        ],
                        "id": 5148,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "16382:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 5157,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16382:82:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5158,
                    "nodeType": "ExpressionStatement",
                    "src": "16382:82:46"
                  },
                  {
                    "assignments": [
                      5160
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5160,
                        "name": "isSpent",
                        "nodeType": "VariableDeclaration",
                        "scope": 5175,
                        "src": "16474:12:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5159,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "16474:4:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5169,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5163,
                          "name": "rlpOutputCreationTx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5091,
                          "src": "16519:19:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 5164,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5089,
                          "src": "16552:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 5165,
                          "name": "rlpChallengeTx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5093,
                          "src": "16573:14:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 5166,
                          "name": "challengeTxInputIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5095,
                          "src": "16601:21:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 5167,
                          "name": "challengeTxWitness",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5097,
                          "src": "16636:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          },
                          {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5161,
                          "name": "condition",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5139,
                          "src": "16489:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISpendingCondition_$6210",
                            "typeString": "contract ISpendingCondition"
                          }
                        },
                        "id": 5162,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "verify",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 6209,
                        "src": "16489:16:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint16_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (bytes memory,uint256,bytes memory,uint16,bytes memory) view external returns (bool)"
                        }
                      },
                      "id": 5168,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16489:175:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "16474:190:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5171,
                          "name": "isSpent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5160,
                          "src": "16682:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "5370656e64696e6720636f6e646974696f6e206661696c6564",
                          "id": 5172,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16691:27:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_5116ed6369ff40290f13c69820da691aaadc6a65d588a7285be98ccf11b518d6",
                            "typeString": "literal_string \"Spending condition failed\""
                          },
                          "value": "Spending condition failed"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_5116ed6369ff40290f13c69820da691aaadc6a65d588a7285be98ccf11b518d6",
                            "typeString": "literal_string \"Spending condition failed\""
                          }
                        ],
                        "id": 5170,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "16674:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 5173,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16674:45:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5174,
                    "nodeType": "ExpressionStatement",
                    "src": "16674:45:46"
                  }
                ]
              },
              "documentation": "@dev Verify the challengeTx spends the output\n@param utxoPos pos of the output\n@param rlpOutputCreationTx transaction that created the output\n@param rlpChallengeTx RLP-encoded challenge transaction\n@param challengeTxInputIndex index pos of the same utxo in the challenge transaction\n@param challengeTxWitness Witness for challenging transaction",
              "id": 5176,
              "implemented": true,
              "kind": "function",
              "modifiers": [],
              "name": "verifySpendingCondition",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 5098,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 5089,
                    "name": "utxoPos",
                    "nodeType": "VariableDeclaration",
                    "scope": 5176,
                    "src": "15673:15:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 5088,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "15673:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 5091,
                    "name": "rlpOutputCreationTx",
                    "nodeType": "VariableDeclaration",
                    "scope": 5176,
                    "src": "15690:32:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 5090,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "15690:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 5093,
                    "name": "rlpChallengeTx",
                    "nodeType": "VariableDeclaration",
                    "scope": 5176,
                    "src": "15724:27:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 5092,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "15724:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 5095,
                    "name": "challengeTxInputIndex",
                    "nodeType": "VariableDeclaration",
                    "scope": 5176,
                    "src": "15753:28:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    },
                    "typeName": {
                      "id": 5094,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "15753:6:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 5097,
                    "name": "challengeTxWitness",
                    "nodeType": "VariableDeclaration",
                    "scope": 5176,
                    "src": "15783:31:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 5096,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "15783:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "15672:143:46"
              },
              "returnParameters": {
                "id": 5099,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "15824:0:46"
              },
              "scope": 5441,
              "src": "15640:1086:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "private"
            },
            {
              "body": {
                "id": 5220,
                "nodeType": "Block",
                "src": "16928:346:46",
                "statements": [
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "16946:30:46",
                          "subExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5182,
                                "name": "ticketData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4255,
                                "src": "16947:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                  "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                }
                              },
                              "id": 5184,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 5183,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5178,
                                "src": "16958:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "16947:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                "typeString": "struct Quasar.Ticket storage ref"
                              }
                            },
                            "id": 5185,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isClaimed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4243,
                            "src": "16947:29:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "416c726561647920636c61696d6564",
                          "id": 5187,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16978:17:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_8d5f1075ee9cf123a11fed45e62459547c318d7703b4e3920694b01d6b8c6dcf",
                            "typeString": "literal_string \"Already claimed\""
                          },
                          "value": "Already claimed"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_8d5f1075ee9cf123a11fed45e62459547c318d7703b4e3920694b01d6b8c6dcf",
                            "typeString": "literal_string \"Already claimed\""
                          }
                        ],
                        "id": 5181,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "16938:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 5188,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16938:58:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5189,
                    "nodeType": "ExpressionStatement",
                    "src": "16938:58:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          "id": 5197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5191,
                                "name": "ticketData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4255,
                                "src": "17014:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                  "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                }
                              },
                              "id": 5193,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 5192,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5178,
                                "src": "17025:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "17014:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                "typeString": "struct Quasar.Ticket storage ref"
                              }
                            },
                            "id": 5194,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "outputOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4229,
                            "src": "17014:31:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5195,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21272,
                              "src": "17049:3:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5196,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "17049:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "17014:45:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "4e6f742063616c6c656420627920746865207469636b6574206f776e6572",
                          "id": 5198,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17061:32:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_06983273dd37bb6f71c22eed243cec456e431a6ed746718530dc2eae7f6f3f5c",
                            "typeString": "literal_string \"Not called by the ticket owner\""
                          },
                          "value": "Not called by the ticket owner"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_06983273dd37bb6f71c22eed243cec456e431a6ed746718530dc2eae7f6f3f5c",
                            "typeString": "literal_string \"Not called by the ticket owner\""
                          }
                        ],
                        "id": 5190,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "17006:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 5199,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17006:88:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5200,
                    "nodeType": "ExpressionStatement",
                    "src": "17006:88:46"
                  },
                  {
                    "assignments": [
                      5202
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5202,
                        "name": "expiryTimestamp",
                        "nodeType": "VariableDeclaration",
                        "scope": 5220,
                        "src": "17104:23:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5201,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17104:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5207,
                    "initialValue": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5203,
                          "name": "ticketData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4255,
                          "src": "17130:10:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                            "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                          }
                        },
                        "id": 5205,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5204,
                          "name": "utxoPos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5178,
                          "src": "17141:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "17130:19:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                          "typeString": "struct Quasar.Ticket storage ref"
                        }
                      },
                      "id": 5206,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "validityTimestamp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4231,
                      "src": "17130:37:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "17104:63:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5211,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5209,
                              "name": "expiryTimestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5202,
                              "src": "17185:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 5210,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17204:1:46",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "17185:20:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5215,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5212,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21262,
                                "src": "17209:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 5213,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "17209:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 5214,
                              "name": "expiryTimestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5202,
                              "src": "17228:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "17209:34:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "17185:58:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "5469636b6574206973206e6f742076616c6964",
                          "id": 5217,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17245:21:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_bc0c9fbcc9f2c8c89b400b3ed93bcbcf5269062a45d38dda5515585f601d4dae",
                            "typeString": "literal_string \"Ticket is not valid\""
                          },
                          "value": "Ticket is not valid"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_bc0c9fbcc9f2c8c89b400b3ed93bcbcf5269062a45d38dda5515585f601d4dae",
                            "typeString": "literal_string \"Ticket is not valid\""
                          }
                        ],
                        "id": 5208,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "17177:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 5218,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17177:90:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5219,
                    "nodeType": "ExpressionStatement",
                    "src": "17177:90:46"
                  }
                ]
              },
              "documentation": "@dev Verify the validity of the ticket\n@param utxoPos pos of the output, which is the ticket identifier",
              "id": 5221,
              "implemented": true,
              "kind": "function",
              "modifiers": [],
              "name": "verifyTicketValidityForClaim",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 5179,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 5178,
                    "name": "utxoPos",
                    "nodeType": "VariableDeclaration",
                    "scope": 5221,
                    "src": "16903:15:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 5177,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "16903:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "16902:17:46"
              },
              "returnParameters": {
                "id": 5180,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "16928:0:46"
              },
              "scope": 5441,
              "src": "16865:409:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "private"
            },
            {
              "body": {
                "id": 5289,
                "nodeType": "Block",
                "src": "17562:891:46",
                "statements": [
                  {
                    "assignments": [
                      5231
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5231,
                        "name": "decodedTx",
                        "nodeType": "VariableDeclaration",
                        "scope": 5289,
                        "src": "17572:52:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Transaction_$16102_memory_ptr",
                          "typeString": "struct PaymentTransactionModel.Transaction"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 5230,
                          "name": "PaymentTransactionModel.Transaction",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 16102,
                          "src": "17572:35:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Transaction_$16102_storage_ptr",
                            "typeString": "struct PaymentTransactionModel.Transaction"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5236,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5234,
                          "name": "claimTx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5225,
                          "src": "17666:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5232,
                          "name": "PaymentTransactionModel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16301,
                          "src": "17635:23:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_PaymentTransactionModel_$16301_$",
                            "typeString": "type(library PaymentTransactionModel)"
                          }
                        },
                        "id": 5233,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16117,
                        "src": "17635:30:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_Transaction_$16102_memory_ptr_$",
                          "typeString": "function (bytes memory) pure returns (struct PaymentTransactionModel.Transaction memory)"
                        }
                      },
                      "id": 5235,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17635:39:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Transaction_$16102_memory_ptr",
                        "typeString": "struct PaymentTransactionModel.Transaction memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "17572:102:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 5245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5238,
                                "name": "decodedTx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5231,
                                "src": "17766:9:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Transaction_$16102_memory_ptr",
                                  "typeString": "struct PaymentTransactionModel.Transaction memory"
                                }
                              },
                              "id": 5239,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "inputs",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16094,
                              "src": "17766:16:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 5241,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 5240,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17783:1:46",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "17766:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5243,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5223,
                                "src": "17797:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 5242,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17789:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": "bytes32"
                            },
                            "id": 5244,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17789:16:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "17766:39:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "54686520636c61696d207472616e73616374696f6e20646f6573206e6f74207370656e642074686520636f7272656374206f7574707574",
                          "id": 5246,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17807:57:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_ab7b322122809c384e2acaf43352ba2b07c6def6c5a7716838ac506e76810073",
                            "typeString": "literal_string \"The claim transaction does not spend the correct output\""
                          },
                          "value": "The claim transaction does not spend the correct output"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_ab7b322122809c384e2acaf43352ba2b07c6def6c5a7716838ac506e76810073",
                            "typeString": "literal_string \"The claim transaction does not spend the correct output\""
                          }
                        ],
                        "id": 5237,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "17758:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 5247,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17758:107:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5248,
                    "nodeType": "ExpressionStatement",
                    "src": "17758:107:46"
                  },
                  {
                    "assignments": [
                      5252
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5252,
                        "name": "outputData",
                        "nodeType": "VariableDeclaration",
                        "scope": 5289,
                        "src": "17936:49:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                          "typeString": "struct FungibleTokenOutputModel.Output"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 5251,
                          "name": "FungibleTokenOutputModel.Output",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15744,
                          "src": "17936:31:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Output_$15744_storage_ptr",
                            "typeString": "struct FungibleTokenOutputModel.Output"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5258,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5255,
                          "name": "decodedTx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5231,
                          "src": "18030:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Transaction_$16102_memory_ptr",
                            "typeString": "struct PaymentTransactionModel.Transaction memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5256,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "18041:1:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Transaction_$16102_memory_ptr",
                            "typeString": "struct PaymentTransactionModel.Transaction memory"
                          },
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5253,
                          "name": "PaymentTransactionModel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16301,
                          "src": "17996:23:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_PaymentTransactionModel_$16301_$",
                            "typeString": "type(library PaymentTransactionModel)"
                          }
                        },
                        "id": 5254,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getOutput",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16300,
                        "src": "17996:33:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_Transaction_$16102_memory_ptr_$_t_uint16_$returns$_t_struct$_Output_$15744_memory_ptr_$",
                          "typeString": "function (struct PaymentTransactionModel.Transaction memory,uint16) pure returns (struct FungibleTokenOutputModel.Output memory)"
                        }
                      },
                      "id": 5257,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17996:47:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                        "typeString": "struct FungibleTokenOutputModel.Output memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "17936:107:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5261,
                              "name": "outputData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5252,
                              "src": "18119:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                                "typeString": "struct FungibleTokenOutputModel.Output memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5262,
                              "name": "quasarOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4208,
                              "src": "18131:11:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                                "typeString": "struct FungibleTokenOutputModel.Output memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5260,
                            "name": "verifyOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5087,
                            "src": "18103:15:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_Output_$15744_memory_ptr_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (struct FungibleTokenOutputModel.Output memory,address) pure returns (bool)"
                            }
                          },
                          "id": 5263,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18103:40:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "546865206f7574707574206973206e6f74206f776e65642062792074686520717561736172206f776e6572",
                          "id": 5264,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "18145:45:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_429c1781148adc401e34cad2bb38e8f1e3f28c6a8dc1d8a6d94ddee8d796a5ab",
                            "typeString": "literal_string \"The output is not owned by the quasar owner\""
                          },
                          "value": "The output is not owned by the quasar owner"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_429c1781148adc401e34cad2bb38e8f1e3f28c6a8dc1d8a6d94ddee8d796a5ab",
                            "typeString": "literal_string \"The output is not owned by the quasar owner\""
                          }
                        ],
                        "id": 5259,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "18095:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 5265,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18095:96:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5266,
                    "nodeType": "ExpressionStatement",
                    "src": "18095:96:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5268,
                                "name": "ticketData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4255,
                                "src": "18256:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                  "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                }
                              },
                              "id": 5270,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 5269,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5223,
                                "src": "18267:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "18256:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                "typeString": "struct Quasar.Ticket storage ref"
                              }
                            },
                            "id": 5271,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "outputValue",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4233,
                            "src": "18256:31:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5272,
                              "name": "outputData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5252,
                              "src": "18291:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                                "typeString": "struct FungibleTokenOutputModel.Output memory"
                              }
                            },
                            "id": 5273,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15743,
                            "src": "18291:17:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18256:52:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "57726f6e6720616d6f756e742073656e7420746f20717561736172206f776e6572",
                          "id": 5275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "18310:35:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_018c8acb65627762d1bf430b914e98cbabd7845cb0bf72817cb201968d9f24ee",
                            "typeString": "literal_string \"Wrong amount sent to quasar owner\""
                          },
                          "value": "Wrong amount sent to quasar owner"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_018c8acb65627762d1bf430b914e98cbabd7845cb0bf72817cb201968d9f24ee",
                            "typeString": "literal_string \"Wrong amount sent to quasar owner\""
                          }
                        ],
                        "id": 5267,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "18248:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 5276,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18248:98:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5277,
                    "nodeType": "ExpressionStatement",
                    "src": "18248:98:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 5285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5279,
                                "name": "ticketData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4255,
                                "src": "18364:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                  "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                }
                              },
                              "id": 5281,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 5280,
                                "name": "utxoPos",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5223,
                                "src": "18375:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "18364:19:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                "typeString": "struct Quasar.Ticket storage ref"
                              }
                            },
                            "id": 5282,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "token",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4237,
                            "src": "18364:25:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5283,
                              "name": "outputData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5252,
                              "src": "18393:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Output_$15744_memory_ptr",
                                "typeString": "struct FungibleTokenOutputModel.Output memory"
                              }
                            },
                            "id": 5284,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "token",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15741,
                            "src": "18393:16:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "18364:45:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "57726f6e6720746f6b656e2073656e7420746f20717561736172206f776e6572",
                          "id": 5286,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "18411:34:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_bf44cd705eb4612fac6e81ccb247c85bfc6f571f41fc6e54e3f635ae405e4084",
                            "typeString": "literal_string \"Wrong token sent to quasar owner\""
                          },
                          "value": "Wrong token sent to quasar owner"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_bf44cd705eb4612fac6e81ccb247c85bfc6f571f41fc6e54e3f635ae405e4084",
                            "typeString": "literal_string \"Wrong token sent to quasar owner\""
                          }
                        ],
                        "id": 5278,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "18356:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 5287,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18356:90:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5288,
                    "nodeType": "ExpressionStatement",
                    "src": "18356:90:46"
                  }
                ]
              },
              "documentation": "@dev Verify the claim Tx is properly formed\n@param utxoPos pos of the output, which is the ticket identifier\n@param claimTx the Claim Tx to the quasar owner",
              "id": 5290,
              "implemented": true,
              "kind": "function",
              "modifiers": [],
              "name": "verifyClaimTxCorrectlyFormed",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 5226,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 5223,
                    "name": "utxoPos",
                    "nodeType": "VariableDeclaration",
                    "scope": 5290,
                    "src": "17515:15:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 5222,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "17515:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 5225,
                    "name": "claimTx",
                    "nodeType": "VariableDeclaration",
                    "scope": 5290,
                    "src": "17532:20:46",
                    "stateVariable": false,
                    "storageLocation": "memory",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes"
                    },
                    "typeName": {
                      "id": 5224,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "17532:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "17514:39:46"
              },
              "returnParameters": {
                "id": 5227,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "17562:0:46"
              },
              "scope": 5441,
              "src": "17477:976:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "private"
            },
            {
              "body": {
                "id": 5350,
                "nodeType": "Block",
                "src": "18759:471:46",
                "statements": [
                  {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 5303,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 5299,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5296,
                        "src": "18773:5:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5301,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18790:1:46",
                            "subdenomination": null,
                            "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": 5300,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "18782:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 5302,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18782:10:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "18773:19:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "id": 5348,
                      "nodeType": "Block",
                      "src": "19011:213:46",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5330,
                                "name": "outputOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5294,
                                "src": "19052:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 5331,
                                    "name": "ticketData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4255,
                                    "src": "19065:10:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                      "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                    }
                                  },
                                  "id": 5333,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 5332,
                                    "name": "utxoPos",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5292,
                                    "src": "19076:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "19065:19:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                    "typeString": "struct Quasar.Ticket storage ref"
                                  }
                                },
                                "id": 5334,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "reservedAmount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4235,
                                "src": "19065:34:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5327,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5296,
                                    "src": "19032:5:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 5326,
                                  "name": "IERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19795,
                                  "src": "19025:6:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$19795_$",
                                    "typeString": "type(contract IERC20)"
                                  }
                                },
                                "id": 5328,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19025:13:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$19795",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 5329,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "safeTransfer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19828,
                              "src": "19025:26:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$19795_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$19795_$",
                                "typeString": "function (contract IERC20,address,uint256)"
                              }
                            },
                            "id": 5335,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19025:75:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 5336,
                          "nodeType": "ExpressionStatement",
                          "src": "19025:75:46"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5340,
                                "name": "outputOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5294,
                                "src": "19152:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 5341,
                                    "name": "ticketData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4255,
                                    "src": "19165:10:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                      "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                    }
                                  },
                                  "id": 5343,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 5342,
                                    "name": "utxoPos",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5292,
                                    "src": "19176:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "19165:19:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                    "typeString": "struct Quasar.Ticket storage ref"
                                  }
                                },
                                "id": 5344,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "bondValue",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4239,
                                "src": "19165:29:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 5345,
                                "name": "SAFE_GAS_STIPEND",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5474,
                                "src": "19196:16:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 5337,
                                "name": "SafeEthTransfer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17707,
                                "src": "19114:15:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_SafeEthTransfer_$17707_$",
                                  "typeString": "type(library SafeEthTransfer)"
                                }
                              },
                              "id": 5339,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "transferRevertOnError",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17679,
                              "src": "19114:37:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$_t_uint256_$returns$__$",
                                "typeString": "function (address payable,uint256,uint256)"
                              }
                            },
                            "id": 5346,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19114:99:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 5347,
                          "nodeType": "ExpressionStatement",
                          "src": "19114:99:46"
                        }
                      ]
                    },
                    "id": 5349,
                    "nodeType": "IfStatement",
                    "src": "18769:455:46",
                    "trueBody": {
                      "id": 5325,
                      "nodeType": "Block",
                      "src": "18794:211:46",
                      "statements": [
                        {
                          "assignments": [
                            5305
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 5305,
                              "name": "totalAmount",
                              "nodeType": "VariableDeclaration",
                              "scope": 5325,
                              "src": "18808:19:46",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 5304,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "18808:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 5316,
                          "initialValue": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 5311,
                                    "name": "ticketData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4255,
                                    "src": "18869:10:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                      "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                    }
                                  },
                                  "id": 5313,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 5312,
                                    "name": "utxoPos",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5292,
                                    "src": "18880:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18869:19:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                    "typeString": "struct Quasar.Ticket storage ref"
                                  }
                                },
                                "id": 5314,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "bondValue",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4239,
                                "src": "18869:29:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 5306,
                                    "name": "ticketData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4255,
                                    "src": "18830:10:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Ticket_$4244_storage_$",
                                      "typeString": "mapping(uint256 => struct Quasar.Ticket storage ref)"
                                    }
                                  },
                                  "id": 5308,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 5307,
                                    "name": "utxoPos",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5292,
                                    "src": "18841:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18830:19:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Ticket_$4244_storage",
                                    "typeString": "struct Quasar.Ticket storage ref"
                                  }
                                },
                                "id": 5309,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "reservedAmount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4235,
                                "src": "18830:34:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5310,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19026,
                              "src": "18830:38:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 5315,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18830:69:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "18808:91:46"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5320,
                                "name": "outputOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5294,
                                "src": "18951:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 5321,
                                "name": "totalAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5305,
                                "src": "18964:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 5322,
                                "name": "SAFE_GAS_STIPEND",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5474,
                                "src": "18977:16:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 5317,
                                "name": "SafeEthTransfer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17707,
                                "src": "18913:15:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_SafeEthTransfer_$17707_$",
                                  "typeString": "type(library SafeEthTransfer)"
                                }
                              },
                              "id": 5319,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "transferRevertOnError",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17679,
                              "src": "18913:37:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$_t_uint256_$returns$__$",
                                "typeString": "function (address payable,uint256,uint256)"
                              }
                            },
                            "id": 5323,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18913:81:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 5324,
                          "nodeType": "ExpressionStatement",
                          "src": "18913:81:46"
                        }
                      ]
                    }
                  }
                ]
              },
              "documentation": "@dev Payout liquid funds\n@param utxoPos pos of the output, which is the ticket identifier\n@param outputOwner the recipient of the funds\n@param token the token to payout",
              "id": 5351,
              "implemented": true,
              "kind": "function",
              "modifiers": [],
              "name": "runPayout",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 5297,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 5292,
                    "name": "utxoPos",
                    "nodeType": "VariableDeclaration",
                    "scope": 5351,
                    "src": "18690:15:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 5291,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "18690:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 5294,
                    "name": "outputOwner",
                    "nodeType": "VariableDeclaration",
                    "scope": 5351,
                    "src": "18707:27:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    },
                    "typeName": {
                      "id": 5293,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "18707:15:46",
                      "stateMutability": "payable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 5296,
                    "name": "token",
                    "nodeType": "VariableDeclaration",
                    "scope": 5351,
                    "src": "18736:13:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 5295,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "18736:7:46",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "18689:61:46"
              },
              "returnParameters": {
                "id": 5298,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "18759:0:46"
              },
              "scope": 5441,
              "src": "18671:559:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "private"
            },
            {
              "body": {
                "id": 5439,
                "nodeType": "Block",
                "src": "19463:931:46",
                "statements": [
                  {
                    "assignments": [
                      5359
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5359,
                        "name": "qTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 5439,
                        "src": "19473:21:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5358,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19473:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5364,
                    "initialValue": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5360,
                          "name": "tokenData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5493,
                          "src": "19497:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Token_$5469_storage_$",
                            "typeString": "mapping(address => struct QuasarPool.Token storage ref)"
                          }
                        },
                        "id": 5362,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5361,
                          "name": "token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5353,
                          "src": "19507:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "19497:16:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Token_$5469_storage",
                          "typeString": "struct QuasarPool.Token storage ref"
                        }
                      },
                      "id": 5363,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "qTokenAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5460,
                      "src": "19497:30:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "19473:54:46"
                  },
                  {
                    "assignments": [
                      5366
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5366,
                        "name": "totalQTokenSupply",
                        "nodeType": "VariableDeclaration",
                        "scope": 5439,
                        "src": "19537:25:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5365,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19537:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5372,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5368,
                              "name": "qTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5359,
                              "src": "19572:13:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5367,
                            "name": "IERC20",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19795,
                            "src": "19565:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IERC20_$19795_$",
                              "typeString": "type(contract IERC20)"
                            }
                          },
                          "id": 5369,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19565:21:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$19795",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 5370,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "totalSupply",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 19733,
                        "src": "19565:33:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                          "typeString": "function () view external returns (uint256)"
                        }
                      },
                      "id": 5371,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19565:35:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "19537:63:46"
                  },
                  {
                    "assignments": [
                      5374
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5374,
                        "name": "quasarFee",
                        "nodeType": "VariableDeclaration",
                        "scope": 5439,
                        "src": "19610:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5373,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19610:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5379,
                    "initialValue": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5375,
                          "name": "tokenData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5493,
                          "src": "19630:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Token_$5469_storage_$",
                            "typeString": "mapping(address => struct QuasarPool.Token storage ref)"
                          }
                        },
                        "id": 5377,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5376,
                          "name": "token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5353,
                          "src": "19640:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "19630:16:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Token_$5469_storage",
                          "typeString": "struct QuasarPool.Token storage ref"
                        }
                      },
                      "id": 5378,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "quasarFee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5468,
                      "src": "19630:26:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "19610:46:46"
                  },
                  {
                    "assignments": [
                      5381
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5381,
                        "name": "numerator",
                        "nodeType": "VariableDeclaration",
                        "scope": 5439,
                        "src": "19933:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5380,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19933:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5389,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5384,
                              "name": "tokenData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5493,
                              "src": "19967:9:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Token_$5469_storage_$",
                                "typeString": "mapping(address => struct QuasarPool.Token storage ref)"
                              }
                            },
                            "id": 5386,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5385,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5353,
                              "src": "19977:5:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "19967:16:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Token_$5469_storage",
                              "typeString": "struct QuasarPool.Token storage ref"
                            }
                          },
                          "id": 5387,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "poolSupply",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5466,
                          "src": "19967:27:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5382,
                          "name": "quasarFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5374,
                          "src": "19953:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5383,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 19026,
                        "src": "19953:13:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 5388,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19953:42:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "19933:62:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5391,
                            "name": "numerator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5381,
                            "src": "20013:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5392,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20026:1:46",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "20013:14:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "49737375652077697468207570646174696e672045786368616e6765205261746520",
                          "id": 5394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "20029:36:46",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_d394ab141884a768e2e3703d548ea4892ae0a12cc3ae9fcfb73b7c8ba3516353",
                            "typeString": "literal_string \"Issue with updating Exchange Rate \""
                          },
                          "value": "Issue with updating Exchange Rate "
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_d394ab141884a768e2e3703d548ea4892ae0a12cc3ae9fcfb73b7c8ba3516353",
                            "typeString": "literal_string \"Issue with updating Exchange Rate \""
                          }
                        ],
                        "id": 5390,
                        "name": "require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          21275,
                          21276
                        ],
                        "referencedDeclaration": 21276,
                        "src": "20005:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                          "typeString": "function (bool,string memory) pure"
                        }
                      },
                      "id": 5395,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20005:61:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 5396,
                    "nodeType": "ExpressionStatement",
                    "src": "20005:61:46"
                  },
                  {
                    "assignments": [
                      5398
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5398,
                        "name": "exchangeRateScaled",
                        "nodeType": "VariableDeclaration",
                        "scope": 5439,
                        "src": "20076:29:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Exp_$5859_memory_ptr",
                          "typeString": "struct Exponential.Exp"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 5397,
                          "name": "Exp",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5859,
                          "src": "20076:3:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Exp_$5859_storage_ptr",
                            "typeString": "struct Exponential.Exp"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5404,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5401,
                          "name": "numerator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5381,
                          "src": "20127:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 5402,
                          "name": "totalQTokenSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5366,
                          "src": "20138:17:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5399,
                          "name": "Exponential",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5992,
                          "src": "20108:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Exponential_$5992_$",
                            "typeString": "type(contract Exponential)"
                          }
                        },
                        "id": 5400,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getExp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5888,
                        "src": "20108:18:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_struct$_Exp_$5859_memory_ptr_$",
                          "typeString": "function (uint256,uint256) pure returns (struct Exponential.Exp memory)"
                        }
                      },
                      "id": 5403,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20108:48:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Exp_$5859_memory_ptr",
                        "typeString": "struct Exponential.Exp memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "20076:80:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 5416,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5405,
                            "name": "tokenData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5493,
                            "src": "20167:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Token_$5469_storage_$",
                              "typeString": "mapping(address => struct QuasarPool.Token storage ref)"
                            }
                          },
                          "id": 5407,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5406,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5353,
                            "src": "20177:5:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "20167:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Token_$5469_storage",
                            "typeString": "struct QuasarPool.Token storage ref"
                          }
                        },
                        "id": 5408,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "owedAmount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5464,
                        "src": "20167:27:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5414,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5355,
                            "src": "20229:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5409,
                                "name": "tokenData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5493,
                                "src": "20197:9:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Token_$5469_storage_$",
                                  "typeString": "mapping(address => struct QuasarPool.Token storage ref)"
                                }
                              },
                              "id": 5411,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 5410,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5353,
                                "src": "20207:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "20197:16:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Token_$5469_storage",
                                "typeString": "struct QuasarPool.Token storage ref"
                              }
                            },
                            "id": 5412,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owedAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5464,
                            "src": "20197:27:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5413,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 19026,
                          "src": "20197:31:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 5415,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20197:39:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "20167:69:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 5417,
                    "nodeType": "ExpressionStatement",
                    "src": "20167:69:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 5424,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5418,
                            "name": "tokenData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5493,
                            "src": "20246:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Token_$5469_storage_$",
                              "typeString": "mapping(address => struct QuasarPool.Token storage ref)"
                            }
                          },
                          "id": 5420,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5419,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5353,
                            "src": "20256:5:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "20246:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Token_$5469_storage",
                            "typeString": "struct QuasarPool.Token storage ref"
                          }
                        },
                        "id": 5421,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "exchangeRate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5462,
                        "src": "20246:29:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5422,
                          "name": "exchangeRateScaled",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5398,
                          "src": "20278:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Exp_$5859_memory_ptr",
                            "typeString": "struct Exponential.Exp memory"
                          }
                        },
                        "id": 5423,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "mantissa",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5858,
                        "src": "20278:27:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "20246:59:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 5425,
                    "nodeType": "ExpressionStatement",
                    "src": "20246:59:46"
                  },
                  {
                    "expression": {
                      "argumentTypes": null,
                      "id": 5437,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5426,
                            "name": "tokenData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5493,
                            "src": "20315:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Token_$5469_storage_$",
                              "typeString": "mapping(address => struct QuasarPool.Token storage ref)"
                            }
                          },
                          "id": 5428,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5427,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5353,
                            "src": "20325:5:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "20315:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Token_$5469_storage",
                            "typeString": "struct QuasarPool.Token storage ref"
                          }
                        },
                        "id": 5429,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberName": "poolSupply",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5466,
                        "src": "20315:27:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5435,
                            "name": "quasarFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5374,
                            "src": "20377:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5430,
                                "name": "tokenData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5493,
                                "src": "20345:9:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Token_$5469_storage_$",
                                  "typeString": "mapping(address => struct QuasarPool.Token storage ref)"
                                }
                              },
                              "id": 5432,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 5431,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5353,
                                "src": "20355:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "20345:16:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Token_$5469_storage",
                                "typeString": "struct QuasarPool.Token storage ref"
                              }
                            },
                            "id": 5433,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "poolSupply",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5466,
                            "src": "20345:27:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5434,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 19026,
                          "src": "20345:31:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 5436,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20345:42:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "20315:72:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 5438,
                    "nodeType": "ExpressionStatement",
                    "src": "20315:72:46"
                  }
                ]
              },
              "documentation": "@dev Utilize funds from the pool, update exchange rate\n@param token the token to payout\n@param amount the value of the output claimed",
              "id": 5440,
              "implemented": true,
              "kind": "function",
              "modifiers": [],
              "name": "utilize",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 5356,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 5353,
                    "name": "token",
                    "nodeType": "VariableDeclaration",
                    "scope": 5440,
                    "src": "19423:13:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 5352,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "19423:7:46",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 5355,
                    "name": "amount",
                    "nodeType": "VariableDeclaration",
                    "scope": 5440,
                    "src": "19438:14:46",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 5354,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "19438:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "19422:31:46"
              },
              "returnParameters": {
                "id": 5357,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "19463:0:46"
              },
              "scope": 5441,
              "src": "19406:988:46",
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "internal"
            }
          ],
          "scope": 5442,
          "src": "1065:19331:46"
        }
      ],
      "src": "0:20397:46"
    },
    "compiler": {
      "name": "solc",
      "version": "0.5.11+commit.c082d0b4.Emscripten.clang"
    },
    "networks": {},
    "schemaVersion": "3.2.0",
    "updatedAt": "2021-03-15T18:46:53.568Z",
    "devdoc": {
      "methods": {
        "addEthCapacity()": {
          "details": "Add Eth Liquid funds to the quasar"
        },
        "addTokenCapacity(address,uint256)": {
          "details": "Add ERC20 Liquid funds to the quasar",
          "params": {
            "amount": "value to supply",
            "token": "the token"
          }
        },
        "challengeIfeClaim(uint256,bytes,uint16,bytes,uint16,bytes,bytes32)": {
          "details": "Challenge an IFE claim",
          "params": {
            "challengeTxInputIndex": "index pos of the same utxo in the challenge transaction",
            "challengeTxWitness": "Witness for challenging transaction",
            "otherInputCreationTx": "(optional) Transaction that created this shared input",
            "otherInputIndex": "(optional) index pos of another input from the claimTx that is spent",
            "rlpChallengeTx": "RLP-encoded challenge transaction",
            "senderData": "A keccak256 hash of the sender's address",
            "utxoPos": "pos of the output, which is the ticket identifier"
          }
        },
        "claim(uint256,uint256,bytes,bytes)": {
          "details": "Submit claim after spending the output to the quasar owner",
          "params": {
            "rlpTxToQuasarOwner": "RLP-encoded transaction that spends the output to quasar owner",
            "txToQuasarOwnerInclusionProof": "Transaction Inclusion proof",
            "utxoPos": "pos of the output, which is the ticket identifier",
            "utxoPosQuasarOwner": "pos of the quasar owner's output"
          }
        },
        "constructor": {
          "details": "Constructor, takes params to set up quasar contract",
          "params": {
            "_bondValue": "bond to obtain tickets",
            "_quasarOwner": "Receiver address on Plasma",
            "_safeBlockMargin": "The Quasar will not accept exits for outputs younger than the current plasma block minus the safe block margin ",
            "_waitingPeriod": "Waiting period from submission to processing claim",
            "plasmaFrameworkContract": "Plasma Framework contract address"
          }
        },
        "flushExpiredTicket(uint256)": {
          "details": "Flush an expired ticket to free up reserved funds",
          "params": {
            "utxoPos": "pos of the output, which is the ticket identifier"
          }
        },
        "getLatestSafeBlock()": {
          "return": "The latest safe block number"
        },
        "ifeClaim(uint256,bytes)": {
          "details": "Submit an IFE claim for claims without inclusion proof",
          "params": {
            "inFlightClaimTx": "in-flight tx that spends the output to quasar owner",
            "utxoPos": "pos of the output, which is the ticket identifier"
          }
        },
        "obtainTicket(uint256,bytes,bytes)": {
          "details": "Obtain a ticket from the Quasar",
          "params": {
            "outputCreationTxInclusionProof": "Transaction inclusion proof",
            "rlpOutputCreationTx": "RLP-encoded transaction that created the output",
            "utxoPos": "Output that will be spent to the quasar later, is the ticket identifier"
          }
        },
        "pauseQuasar()": {
          "details": "Pause contract in a byzantine state"
        },
        "processIfeClaim(uint256)": {
          "details": "Process the IFE claim to get liquid funds",
          "params": {
            "utxoPos": "pos of the output, which is the ticket identifier"
          }
        },
        "registerQToken(address,address,uint256)": {
          "details": "Register a token to be allowed, deploy qToken first",
          "params": {
            "qTokenContract": "the address of the qToken contract",
            "quasarFee": "amount (in token's denomination) to be used as a fee",
            "token": "the token"
          }
        },
        "repayOwedToken(address,uint256)": {
          "details": "Repay owed funds to the pool",
          "params": {
            "amount": "amount to repay",
            "token": "the token"
          }
        },
        "resumeQuasar()": {
          "details": "Unpause contract and allow tickets"
        },
        "setSafeBlockMargin(uint256)": {
          "details": "Set the safe block margin.",
          "params": {
            "margin": "the new safe block margin"
          }
        },
        "withdrawFunds(address,uint256)": {
          "details": "Withdraw funds from the contract",
          "params": {
            "amount": "amount (in number of qTokens) to withdraw",
            "token": "the token"
          }
        },
        "withdrawUnclaimedBonds()": {
          "details": "Withdraw Unclaimed bonds from the contract"
        }
      },
      "title": "Quasar Contract Implementation Doc - https://github.com/omgnetwork/research-workshop/blob/master/Incognito_fast_withdrawals.md"
    },
    "userdoc": {
      "methods": {
        "addEthCapacity()": {
          "notice": "Verify QToken contract before supplying"
        },
        "addTokenCapacity(address,uint256)": {
          "notice": "Verify QToken contract before supplying"
        },
        "challengeIfeClaim(uint256,bytes,uint16,bytes,uint16,bytes,bytes32)": {
          "notice": "A challenge is required if any of the claimTx's inputs are double spent"
        },
        "flushExpiredTicket(uint256)": {
          "notice": "Only an unclaimed ticket can be flushed, bond amount is added to unclaimedBonds"
        },
        "obtainTicket(uint256,bytes,bytes)": {
          "notice": "Ticket is valid for four hours, pay bond here for obtaining ticket"
        },
        "registerQToken(address,address,uint256)": {
          "notice": "Higher decimal for erc20 preffered"
        }
      }
    }
  }
  