{
  "abi": [
    {
      "type": "constructor",
      "inputs": [
        { "name": "initialComptroller", "type": "address", "internalType": "address" },
        { "name": "initialNFTDescriptor", "type": "address", "internalType": "address" }
      ],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "adjustRatePerSecond",
      "inputs": [
        { "name": "streamId", "type": "uint256", "internalType": "uint256" },
        { "name": "newRatePerSecond", "type": "uint128", "internalType": "UD21x18" }
      ],
      "outputs": [],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "aggregateAmount",
      "inputs": [{ "name": "token", "type": "address", "internalType": "contract IERC20" }],
      "outputs": [{ "name": "amount", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "approve",
      "inputs": [
        { "name": "to", "type": "address", "internalType": "address" },
        { "name": "tokenId", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "balanceOf",
      "inputs": [{ "name": "owner", "type": "address", "internalType": "address" }],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "batch",
      "inputs": [{ "name": "calls", "type": "bytes[]", "internalType": "bytes[]" }],
      "outputs": [{ "name": "results", "type": "bytes[]", "internalType": "bytes[]" }],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "calculateMinFeeWei",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [{ "name": "minFeeWei", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "comptroller",
      "inputs": [],
      "outputs": [{ "name": "", "type": "address", "internalType": "contract ISablierComptroller" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "coveredDebtOf",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [{ "name": "coveredDebt", "type": "uint128", "internalType": "uint128" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "create",
      "inputs": [
        { "name": "sender", "type": "address", "internalType": "address" },
        { "name": "recipient", "type": "address", "internalType": "address" },
        { "name": "ratePerSecond", "type": "uint128", "internalType": "UD21x18" },
        { "name": "startTime", "type": "uint40", "internalType": "uint40" },
        { "name": "token", "type": "address", "internalType": "contract IERC20" },
        { "name": "transferable", "type": "bool", "internalType": "bool" }
      ],
      "outputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "createAndDeposit",
      "inputs": [
        { "name": "sender", "type": "address", "internalType": "address" },
        { "name": "recipient", "type": "address", "internalType": "address" },
        { "name": "ratePerSecond", "type": "uint128", "internalType": "UD21x18" },
        { "name": "startTime", "type": "uint40", "internalType": "uint40" },
        { "name": "token", "type": "address", "internalType": "contract IERC20" },
        { "name": "transferable", "type": "bool", "internalType": "bool" },
        { "name": "amount", "type": "uint128", "internalType": "uint128" }
      ],
      "outputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "depletionTimeOf",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [{ "name": "depletionTime", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "deposit",
      "inputs": [
        { "name": "streamId", "type": "uint256", "internalType": "uint256" },
        { "name": "amount", "type": "uint128", "internalType": "uint128" },
        { "name": "sender", "type": "address", "internalType": "address" },
        { "name": "recipient", "type": "address", "internalType": "address" }
      ],
      "outputs": [],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "depositAndPause",
      "inputs": [
        { "name": "streamId", "type": "uint256", "internalType": "uint256" },
        { "name": "amount", "type": "uint128", "internalType": "uint128" }
      ],
      "outputs": [],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "getApproved",
      "inputs": [{ "name": "tokenId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "getBalance",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [{ "name": "balance", "type": "uint128", "internalType": "uint128" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "getRatePerSecond",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [{ "name": "ratePerSecond", "type": "uint128", "internalType": "UD21x18" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "getRecipient",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [{ "name": "recipient", "type": "address", "internalType": "address" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "getSender",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [{ "name": "sender", "type": "address", "internalType": "address" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "getSnapshotDebtScaled",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [{ "name": "snapshotDebtScaled", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "getSnapshotTime",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [{ "name": "snapshotTime", "type": "uint40", "internalType": "uint40" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "getStream",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [
        {
          "name": "stream",
          "type": "tuple",
          "internalType": "struct Flow.Stream",
          "components": [
            { "name": "balance", "type": "uint128", "internalType": "uint128" },
            { "name": "ratePerSecond", "type": "uint128", "internalType": "UD21x18" },
            { "name": "sender", "type": "address", "internalType": "address" },
            { "name": "snapshotTime", "type": "uint40", "internalType": "uint40" },
            { "name": "isStream", "type": "bool", "internalType": "bool" },
            { "name": "isTransferable", "type": "bool", "internalType": "bool" },
            { "name": "isVoided", "type": "bool", "internalType": "bool" },
            { "name": "token", "type": "address", "internalType": "contract IERC20" },
            { "name": "tokenDecimals", "type": "uint8", "internalType": "uint8" },
            { "name": "snapshotDebtScaled", "type": "uint256", "internalType": "uint256" }
          ]
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "getToken",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [{ "name": "token", "type": "address", "internalType": "contract IERC20" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "getTokenDecimals",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [{ "name": "tokenDecimals", "type": "uint8", "internalType": "uint8" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "isApprovedForAll",
      "inputs": [
        { "name": "owner", "type": "address", "internalType": "address" },
        { "name": "operator", "type": "address", "internalType": "address" }
      ],
      "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "isStream",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [{ "name": "result", "type": "bool", "internalType": "bool" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "isTransferable",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [{ "name": "result", "type": "bool", "internalType": "bool" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "isVoided",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [{ "name": "result", "type": "bool", "internalType": "bool" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "name",
      "inputs": [],
      "outputs": [{ "name": "", "type": "string", "internalType": "string" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "nativeToken",
      "inputs": [],
      "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "nextStreamId",
      "inputs": [],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "nftDescriptor",
      "inputs": [],
      "outputs": [{ "name": "", "type": "address", "internalType": "contract IFlowNFTDescriptor" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "ongoingDebtScaledOf",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [{ "name": "ongoingDebtScaled", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "ownerOf",
      "inputs": [{ "name": "tokenId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "pause",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "recover",
      "inputs": [
        { "name": "token", "type": "address", "internalType": "contract IERC20" },
        { "name": "to", "type": "address", "internalType": "address" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "refund",
      "inputs": [
        { "name": "streamId", "type": "uint256", "internalType": "uint256" },
        { "name": "amount", "type": "uint128", "internalType": "uint128" }
      ],
      "outputs": [],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "refundAndPause",
      "inputs": [
        { "name": "streamId", "type": "uint256", "internalType": "uint256" },
        { "name": "amount", "type": "uint128", "internalType": "uint128" }
      ],
      "outputs": [],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "refundMax",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [{ "name": "refundedAmount", "type": "uint128", "internalType": "uint128" }],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "refundableAmountOf",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [{ "name": "refundableAmount", "type": "uint128", "internalType": "uint128" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "restart",
      "inputs": [
        { "name": "streamId", "type": "uint256", "internalType": "uint256" },
        { "name": "ratePerSecond", "type": "uint128", "internalType": "UD21x18" }
      ],
      "outputs": [],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "restartAndDeposit",
      "inputs": [
        { "name": "streamId", "type": "uint256", "internalType": "uint256" },
        { "name": "ratePerSecond", "type": "uint128", "internalType": "UD21x18" },
        { "name": "amount", "type": "uint128", "internalType": "uint128" }
      ],
      "outputs": [],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "safeTransferFrom",
      "inputs": [
        { "name": "from", "type": "address", "internalType": "address" },
        { "name": "to", "type": "address", "internalType": "address" },
        { "name": "tokenId", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "safeTransferFrom",
      "inputs": [
        { "name": "from", "type": "address", "internalType": "address" },
        { "name": "to", "type": "address", "internalType": "address" },
        { "name": "tokenId", "type": "uint256", "internalType": "uint256" },
        { "name": "data", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setApprovalForAll",
      "inputs": [
        { "name": "operator", "type": "address", "internalType": "address" },
        { "name": "approved", "type": "bool", "internalType": "bool" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setComptroller",
      "inputs": [{ "name": "newComptroller", "type": "address", "internalType": "contract ISablierComptroller" }],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setNFTDescriptor",
      "inputs": [{ "name": "newNFTDescriptor", "type": "address", "internalType": "contract IFlowNFTDescriptor" }],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setNativeToken",
      "inputs": [{ "name": "newNativeToken", "type": "address", "internalType": "address" }],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "statusOf",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [{ "name": "status", "type": "uint8", "internalType": "enum Flow.Status" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "supportsInterface",
      "inputs": [{ "name": "interfaceId", "type": "bytes4", "internalType": "bytes4" }],
      "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "symbol",
      "inputs": [],
      "outputs": [{ "name": "", "type": "string", "internalType": "string" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "tokenURI",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [{ "name": "uri", "type": "string", "internalType": "string" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "totalDebtOf",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [{ "name": "totalDebt", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "transferFeesToComptroller",
      "inputs": [],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "transferFrom",
      "inputs": [
        { "name": "from", "type": "address", "internalType": "address" },
        { "name": "to", "type": "address", "internalType": "address" },
        { "name": "tokenId", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "transferFromPayable",
      "inputs": [
        { "name": "from", "type": "address", "internalType": "address" },
        { "name": "to", "type": "address", "internalType": "address" },
        { "name": "streamId", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "transferTokens",
      "inputs": [
        { "name": "token", "type": "address", "internalType": "contract IERC20" },
        { "name": "to", "type": "address", "internalType": "address" },
        { "name": "amount", "type": "uint128", "internalType": "uint128" }
      ],
      "outputs": [],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "uncoveredDebtOf",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [{ "name": "uncoveredDebt", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "void",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "withdraw",
      "inputs": [
        { "name": "streamId", "type": "uint256", "internalType": "uint256" },
        { "name": "to", "type": "address", "internalType": "address" },
        { "name": "amount", "type": "uint128", "internalType": "uint128" }
      ],
      "outputs": [],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "withdrawMax",
      "inputs": [
        { "name": "streamId", "type": "uint256", "internalType": "uint256" },
        { "name": "to", "type": "address", "internalType": "address" }
      ],
      "outputs": [{ "name": "withdrawnAmount", "type": "uint128", "internalType": "uint128" }],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "withdrawableAmountOf",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }],
      "outputs": [{ "name": "withdrawableAmount", "type": "uint128", "internalType": "uint128" }],
      "stateMutability": "view"
    },
    {
      "type": "event",
      "name": "AdjustFlowStream",
      "inputs": [
        { "name": "streamId", "type": "uint256", "indexed": true, "internalType": "uint256" },
        { "name": "totalDebt", "type": "uint256", "indexed": false, "internalType": "uint256" },
        { "name": "oldRatePerSecond", "type": "uint128", "indexed": false, "internalType": "UD21x18" },
        { "name": "newRatePerSecond", "type": "uint128", "indexed": false, "internalType": "UD21x18" }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "Approval",
      "inputs": [
        { "name": "owner", "type": "address", "indexed": true, "internalType": "address" },
        { "name": "approved", "type": "address", "indexed": true, "internalType": "address" },
        { "name": "tokenId", "type": "uint256", "indexed": true, "internalType": "uint256" }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "ApprovalForAll",
      "inputs": [
        { "name": "owner", "type": "address", "indexed": true, "internalType": "address" },
        { "name": "operator", "type": "address", "indexed": true, "internalType": "address" },
        { "name": "approved", "type": "bool", "indexed": false, "internalType": "bool" }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "BatchMetadataUpdate",
      "inputs": [
        { "name": "_fromTokenId", "type": "uint256", "indexed": false, "internalType": "uint256" },
        { "name": "_toTokenId", "type": "uint256", "indexed": false, "internalType": "uint256" }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "CreateFlowStream",
      "inputs": [
        { "name": "streamId", "type": "uint256", "indexed": false, "internalType": "uint256" },
        { "name": "creator", "type": "address", "indexed": false, "internalType": "address" },
        { "name": "sender", "type": "address", "indexed": true, "internalType": "address" },
        { "name": "recipient", "type": "address", "indexed": true, "internalType": "address" },
        { "name": "ratePerSecond", "type": "uint128", "indexed": false, "internalType": "UD21x18" },
        { "name": "snapshotTime", "type": "uint40", "indexed": false, "internalType": "uint40" },
        { "name": "token", "type": "address", "indexed": true, "internalType": "contract IERC20" },
        { "name": "transferable", "type": "bool", "indexed": false, "internalType": "bool" }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "DepositFlowStream",
      "inputs": [
        { "name": "streamId", "type": "uint256", "indexed": true, "internalType": "uint256" },
        { "name": "funder", "type": "address", "indexed": true, "internalType": "address" },
        { "name": "amount", "type": "uint128", "indexed": false, "internalType": "uint128" }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "MetadataUpdate",
      "inputs": [{ "name": "_tokenId", "type": "uint256", "indexed": false, "internalType": "uint256" }],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "PauseFlowStream",
      "inputs": [
        { "name": "streamId", "type": "uint256", "indexed": true, "internalType": "uint256" },
        { "name": "sender", "type": "address", "indexed": true, "internalType": "address" },
        { "name": "recipient", "type": "address", "indexed": true, "internalType": "address" },
        { "name": "totalDebt", "type": "uint256", "indexed": false, "internalType": "uint256" }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "RefundFromFlowStream",
      "inputs": [
        { "name": "streamId", "type": "uint256", "indexed": true, "internalType": "uint256" },
        { "name": "sender", "type": "address", "indexed": true, "internalType": "address" },
        { "name": "amount", "type": "uint128", "indexed": false, "internalType": "uint128" }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "RestartFlowStream",
      "inputs": [
        { "name": "streamId", "type": "uint256", "indexed": true, "internalType": "uint256" },
        { "name": "sender", "type": "address", "indexed": true, "internalType": "address" },
        { "name": "ratePerSecond", "type": "uint128", "indexed": false, "internalType": "UD21x18" }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "SetComptroller",
      "inputs": [
        {
          "name": "oldComptroller",
          "type": "address",
          "indexed": false,
          "internalType": "contract ISablierComptroller"
        },
        {
          "name": "newComptroller",
          "type": "address",
          "indexed": false,
          "internalType": "contract ISablierComptroller"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "SetNFTDescriptor",
      "inputs": [
        { "name": "comptroller", "type": "address", "indexed": true, "internalType": "contract ISablierComptroller" },
        {
          "name": "oldNFTDescriptor",
          "type": "address",
          "indexed": false,
          "internalType": "contract IFlowNFTDescriptor"
        },
        {
          "name": "newNFTDescriptor",
          "type": "address",
          "indexed": false,
          "internalType": "contract IFlowNFTDescriptor"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "SetNativeToken",
      "inputs": [
        { "name": "comptroller", "type": "address", "indexed": true, "internalType": "contract ISablierComptroller" },
        { "name": "nativeToken", "type": "address", "indexed": false, "internalType": "address" }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "Transfer",
      "inputs": [
        { "name": "from", "type": "address", "indexed": true, "internalType": "address" },
        { "name": "to", "type": "address", "indexed": true, "internalType": "address" },
        { "name": "tokenId", "type": "uint256", "indexed": true, "internalType": "uint256" }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "TransferFeesToComptroller",
      "inputs": [
        { "name": "comptroller", "type": "address", "indexed": true, "internalType": "address" },
        { "name": "feeAmount", "type": "uint256", "indexed": false, "internalType": "uint256" }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "VoidFlowStream",
      "inputs": [
        { "name": "streamId", "type": "uint256", "indexed": true, "internalType": "uint256" },
        { "name": "sender", "type": "address", "indexed": true, "internalType": "address" },
        { "name": "recipient", "type": "address", "indexed": true, "internalType": "address" },
        { "name": "caller", "type": "address", "indexed": false, "internalType": "address" },
        { "name": "newTotalDebt", "type": "uint256", "indexed": false, "internalType": "uint256" },
        { "name": "writtenOffDebt", "type": "uint256", "indexed": false, "internalType": "uint256" }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "WithdrawFromFlowStream",
      "inputs": [
        { "name": "streamId", "type": "uint256", "indexed": true, "internalType": "uint256" },
        { "name": "to", "type": "address", "indexed": true, "internalType": "address" },
        { "name": "token", "type": "address", "indexed": true, "internalType": "contract IERC20" },
        { "name": "caller", "type": "address", "indexed": false, "internalType": "address" },
        { "name": "withdrawAmount", "type": "uint128", "indexed": false, "internalType": "uint128" }
      ],
      "anonymous": false
    },
    {
      "type": "error",
      "name": "Comptrollerable_CallerNotComptroller",
      "inputs": [
        { "name": "comptroller", "type": "address", "internalType": "address" },
        { "name": "caller", "type": "address", "internalType": "address" }
      ]
    },
    {
      "type": "error",
      "name": "Comptrollerable_UnsupportedInterfaceId",
      "inputs": [
        { "name": "previousComptroller", "type": "address", "internalType": "address" },
        { "name": "newComptroller", "type": "address", "internalType": "address" },
        { "name": "minimalInterfaceId", "type": "bytes4", "internalType": "bytes4" }
      ]
    },
    { "type": "error", "name": "DelegateCall", "inputs": [] },
    {
      "type": "error",
      "name": "ERC721IncorrectOwner",
      "inputs": [
        { "name": "sender", "type": "address", "internalType": "address" },
        { "name": "tokenId", "type": "uint256", "internalType": "uint256" },
        { "name": "owner", "type": "address", "internalType": "address" }
      ]
    },
    {
      "type": "error",
      "name": "ERC721InsufficientApproval",
      "inputs": [
        { "name": "operator", "type": "address", "internalType": "address" },
        { "name": "tokenId", "type": "uint256", "internalType": "uint256" }
      ]
    },
    {
      "type": "error",
      "name": "ERC721InvalidApprover",
      "inputs": [{ "name": "approver", "type": "address", "internalType": "address" }]
    },
    {
      "type": "error",
      "name": "ERC721InvalidOperator",
      "inputs": [{ "name": "operator", "type": "address", "internalType": "address" }]
    },
    {
      "type": "error",
      "name": "ERC721InvalidOwner",
      "inputs": [{ "name": "owner", "type": "address", "internalType": "address" }]
    },
    {
      "type": "error",
      "name": "ERC721InvalidReceiver",
      "inputs": [{ "name": "receiver", "type": "address", "internalType": "address" }]
    },
    {
      "type": "error",
      "name": "ERC721InvalidSender",
      "inputs": [{ "name": "sender", "type": "address", "internalType": "address" }]
    },
    {
      "type": "error",
      "name": "ERC721NonexistentToken",
      "inputs": [{ "name": "tokenId", "type": "uint256", "internalType": "uint256" }]
    },
    {
      "type": "error",
      "name": "SablierFlowState_Null",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }]
    },
    {
      "type": "error",
      "name": "SablierFlowState_StreamPaused",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }]
    },
    {
      "type": "error",
      "name": "SablierFlowState_StreamVoided",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }]
    },
    {
      "type": "error",
      "name": "SablierFlowState_Unauthorized",
      "inputs": [
        { "name": "streamId", "type": "uint256", "internalType": "uint256" },
        { "name": "caller", "type": "address", "internalType": "address" }
      ]
    },
    {
      "type": "error",
      "name": "SablierFlow_CreateNativeToken",
      "inputs": [{ "name": "nativeToken", "type": "address", "internalType": "address" }]
    },
    { "type": "error", "name": "SablierFlow_CreateRatePerSecondZero", "inputs": [] },
    {
      "type": "error",
      "name": "SablierFlow_DepositAmountZero",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }]
    },
    {
      "type": "error",
      "name": "SablierFlow_InsufficientFeePayment",
      "inputs": [
        { "name": "feePaid", "type": "uint256", "internalType": "uint256" },
        { "name": "minFeeWei", "type": "uint256", "internalType": "uint256" }
      ]
    },
    {
      "type": "error",
      "name": "SablierFlow_InvalidCalculation",
      "inputs": [
        { "name": "streamId", "type": "uint256", "internalType": "uint256" },
        { "name": "availableAmount", "type": "uint128", "internalType": "uint128" },
        { "name": "amount", "type": "uint128", "internalType": "uint128" }
      ]
    },
    {
      "type": "error",
      "name": "SablierFlow_InvalidTokenDecimals",
      "inputs": [{ "name": "token", "type": "address", "internalType": "address" }]
    },
    {
      "type": "error",
      "name": "SablierFlow_NativeTokenAlreadySet",
      "inputs": [{ "name": "nativeToken", "type": "address", "internalType": "address" }]
    },
    { "type": "error", "name": "SablierFlow_NativeTokenZeroAddress", "inputs": [] },
    {
      "type": "error",
      "name": "SablierFlow_NewRatePerSecondZero",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }]
    },
    {
      "type": "error",
      "name": "SablierFlow_NotStreamRecipient",
      "inputs": [
        { "name": "recipient", "type": "address", "internalType": "address" },
        { "name": "streamRecipient", "type": "address", "internalType": "address" }
      ]
    },
    {
      "type": "error",
      "name": "SablierFlow_NotStreamSender",
      "inputs": [
        { "name": "sender", "type": "address", "internalType": "address" },
        { "name": "streamSender", "type": "address", "internalType": "address" }
      ]
    },
    {
      "type": "error",
      "name": "SablierFlow_NotTransferable",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }]
    },
    {
      "type": "error",
      "name": "SablierFlow_Overdraw",
      "inputs": [
        { "name": "streamId", "type": "uint256", "internalType": "uint256" },
        { "name": "amount", "type": "uint128", "internalType": "uint128" },
        { "name": "withdrawableAmount", "type": "uint128", "internalType": "uint128" }
      ]
    },
    {
      "type": "error",
      "name": "SablierFlow_RatePerSecondNotDifferent",
      "inputs": [
        { "name": "streamId", "type": "uint256", "internalType": "uint256" },
        { "name": "ratePerSecond", "type": "uint128", "internalType": "UD21x18" }
      ]
    },
    {
      "type": "error",
      "name": "SablierFlow_RefundAmountZero",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }]
    },
    {
      "type": "error",
      "name": "SablierFlow_RefundOverflow",
      "inputs": [
        { "name": "streamId", "type": "uint256", "internalType": "uint256" },
        { "name": "refundAmount", "type": "uint128", "internalType": "uint128" },
        { "name": "refundableAmount", "type": "uint128", "internalType": "uint128" }
      ]
    },
    { "type": "error", "name": "SablierFlow_SenderZeroAddress", "inputs": [] },
    {
      "type": "error",
      "name": "SablierFlow_StreamBalanceZero",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }]
    },
    {
      "type": "error",
      "name": "SablierFlow_StreamNotPaused",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }]
    },
    {
      "type": "error",
      "name": "SablierFlow_StreamPending",
      "inputs": [
        { "name": "streamId", "type": "uint256", "internalType": "uint256" },
        { "name": "snapshotTime", "type": "uint40", "internalType": "uint40" }
      ]
    },
    {
      "type": "error",
      "name": "SablierFlow_Unauthorized",
      "inputs": [
        { "name": "streamId", "type": "uint256", "internalType": "uint256" },
        { "name": "caller", "type": "address", "internalType": "address" }
      ]
    },
    {
      "type": "error",
      "name": "SablierFlow_WithdrawAmountZero",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }]
    },
    {
      "type": "error",
      "name": "SablierFlow_WithdrawToZeroAddress",
      "inputs": [{ "name": "streamId", "type": "uint256", "internalType": "uint256" }]
    },
    {
      "type": "error",
      "name": "SablierFlow_WithdrawalAddressNotRecipient",
      "inputs": [
        { "name": "streamId", "type": "uint256", "internalType": "uint256" },
        { "name": "caller", "type": "address", "internalType": "address" },
        { "name": "to", "type": "address", "internalType": "address" }
      ]
    },
    {
      "type": "error",
      "name": "SafeCastOverflowedUintDowncast",
      "inputs": [
        { "name": "bits", "type": "uint8", "internalType": "uint8" },
        { "name": "value", "type": "uint256", "internalType": "uint256" }
      ]
    },
    {
      "type": "error",
      "name": "SafeERC20FailedOperation",
      "inputs": [{ "name": "token", "type": "address", "internalType": "address" }]
    }
  ],
  "bytecode": {
    "object": "0x60a0806040523461044657604081615bf0803803809161001f828561045d565b8339810103126104465761003e602061003783610480565b9201610480565b906040519161004e60408461045d565b601083526f14d8589b1a595c88119b1bddc813919560821b60208401526040519161007a60408461045d565b60088352675341422d464c4f5760c01b602084015260018060a01b03166040516301ffc9a760e01b8152630654439160e41b6004820152602081602481855afa908115610452575f91610413575b50156103f2575f80546001600160a01b031916821781556040805191825260208201929092527ff45d882a72fce9d8d7a7e2e196a338d4d9d4057510b4b9ddf91a7066104d2eaf9190a182516001600160401b03811161030357600154600181811c911680156103e8575b60208210146102e557601f8111610385575b506020601f821160011461032257819293945f92610317575b50508160011b915f199060031b1c1916176001555b81516001600160401b03811161030357600254600181811c911680156102f9575b60208210146102e557601f8111610282575b50602092601f821160011461022157928192935f92610216575b50508160011b915f199060031b1c1916176002555b306080526001600955600a80546001600160a01b0319166001600160a01b039290921691909117905560405161575b9081610495823960805181613d1a0152f35b015190505f806101c0565b601f1982169360025f52805f20915f5b86811061026a5750836001959610610252575b505050811b016002556101d5565b01515f1960f88460031b161c191690555f8080610244565b91926020600181928685015181550194019201610231565b60025f527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace601f830160051c810191602084106102db575b601f0160051c01905b8181106102d057506101a6565b5f81556001016102c3565b90915081906102ba565b634e487b7160e01b5f52602260045260245ffd5b90607f1690610194565b634e487b7160e01b5f52604160045260245ffd5b015190505f8061015e565b601f1982169060015f52805f20915f5b81811061036d57509583600195969710610355575b505050811b01600155610173565b01515f1960f88460031b161c191690555f8080610347565b9192602060018192868b015181550194019201610332565b60015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f830160051c810191602084106103de575b601f0160051c01905b8181106103d35750610145565b5f81556001016103c6565b90915081906103bd565b90607f1690610133565b6364ca3de160e11b5f525f600452602452630654439160e41b60445260645ffd5b90506020813d60201161044a575b8161042e6020938361045d565b8101031261044657518015158103610446575f6100c8565b5f80fd5b3d9150610421565b6040513d5f823e3d90fd5b601f909101601f19168101906001600160401b0382119082101761030357604052565b51906001600160a01b03821682036104465756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146103df57806306fdde03146103da578063081812fc146103d557806308b87923146103d0578063095ea7b3146103cb5780630c699624146103c6578063136439dd146103c15780631400ecec146103bc5780631e010439146103b75780631e897afb146103b25780631e99d569146103ad5780631f0cce58146103a857806323b872dd146103a357806328f8b77d1461039e57806336af277f14610399578063379d871a1461039457806342842e0e1461038f57806342e3e23d146102e0578063442675701461038a578063450ac90814610385578063569f4c59146103805780635ea2145b1461037b5780635f2a0beb146103765780635fe3b567146103715780636352211e1461036c578063648bf774146103675780636d0cee75146103625780636da1e1021461035d57806370a082311461035857806378f82ce7146103535780637cad6cd11461034e5780637ddf92281461034957806380448da31461034457806381632a861461033f578063894e9a0d1461033a5780638bad38dd1461033557806395d89b4114610330578063a22cb4651461032b578063a7de07cd14610326578063a8a482a614610321578063ad35efd41461031c578063b256456914610317578063b61f758314610312578063b88d4fde1461030d578063b8a3be6614610308578063b971302a14610303578063bc7a2d6c146102fe578063bcbd019e146102f9578063c87b56dd146102f4578063cca138e5146102ef578063d4b80884146102ea578063d90e27d7146102e5578063d975dfed146102e0578063e1758bd8146102db578063e4b50cb8146102d6578063e985e9c5146102d1578063ea5ead19146102cc578063eb5710d8146102c7578063ebb6f79a146102c2578063ec01da3b146102bd5763fdd46d60146102b8575f80fd5b6134ad565b613446565b61335c565b6132fe565b61325b565b6131bd565b613153565b613102565b61120f565b6130f6565b613092565b612f77565b612e4d565b612d94565b612d4f565b612ce5565b612c92565b612be4565b6128e7565b61288b565b612808565b6126a8565b61264e565b61251f565b61244c565b6121cf565b611f15565b611e71565b611e05565b611dc0565b611c96565b611c11565b611b78565b6119dd565b611998565b611897565b61183d565b6117ed565b611777565b611355565b6112f9565b6112a5565b611254565b6111e6565b6110c8565b61102f565b610fa6565b610f8f565b610e14565b610dbf565b610c7f565b610b9f565b610b40565b610a60565b610962565b6107c9565b61075e565b6106f6565b6105ae565b610412565b7fffffffff0000000000000000000000000000000000000000000000000000000081160361040e57565b5f80fd5b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e577fffffffff0000000000000000000000000000000000000000000000000000000060043561046e816103e4565b167f490649060000000000000000000000000000000000000000000000000000000081149081156104a8575b506040519015158152602090f35b7f80ac58cd0000000000000000000000000000000000000000000000000000000081149150811561050c575b81156104e2575b505f61049a565b7f01ffc9a7000000000000000000000000000000000000000000000000000000009150145f6104db565b7f5b5e139f00000000000000000000000000000000000000000000000000000000811491506104d4565b5f5b8381106105475750505f910152565b8181015183820152602001610538565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209361059381518092818752878088019101610536565b0116010190565b9060206105ab928181520190610557565b90565b3461040e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576040515f6001548060011c90600181169081156106ec575b6020831082146106bf5782855260208501919081156106885750600114610636575b6106328461062681860382612b57565b6040519182918261059a565b0390f35b60015f9081529250907fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b8184106106745750500161062682610616565b805484840152602090930192600101610661565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682525090151560051b01905061062682610616565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916105f4565b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760043561073181613c20565b505f526005602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760206107a360043561079e81613c79565b613cc2565b604051908152f35b73ffffffffffffffffffffffffffffffffffffffff81160361040e57565b3461040e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435610804816107ab565b6024359061081182613c20565b33151580610942575b806108e8575b6108bb57826108b9936108799273ffffffffffffffffffffffffffffffffffffffff80861691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a45f52600560205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b005b7fa9fbf51f000000000000000000000000000000000000000000000000000000005f523360045260245b5ffd5b5060ff61093a336109178473ffffffffffffffffffffffffffffffffffffffff165f52600660205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b541615610820565b503373ffffffffffffffffffffffffffffffffffffffff8216141561081a565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435610997613d03565b6109a081613c79565b805f52600b60205273ffffffffffffffffffffffffffffffffffffffff600160405f200154163303610a3157807ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce760206109fc61063294613d9c565b92610a078482613dce565b604051908152a16040516fffffffffffffffffffffffffffffffff90911681529081906020820190565b7f87cca8a8000000000000000000000000000000000000000000000000000000005f526004523360245260445ffd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435610a95613d03565b610a9e81613c79565b805f52600b60205260405f205460801c15610b1557805f52600b60205273ffffffffffffffffffffffffffffffffffffffff600160405f200154163303610a3157602081610b0c7ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce793614048565b604051908152a1005b7f28a1df1c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576020610b85600435610b8081613c79565b613d9c565b6fffffffffffffffffffffffffffffffff60405191168152f35b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435610bda81613c79565b5f52600b60205260206fffffffffffffffffffffffffffffffff60405f205416604051908152f35b602081016020825282518091526040820191602060408360051b8301019401925f915b838310610c3457505050505090565b9091929394602080610c70837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528951610557565b97019301930191939290610c25565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760043567ffffffffffffffff811161040e573660238201121561040e5780600401359067ffffffffffffffff821161040e576024810190602436918460051b01011161040e57610cf882613530565b91610d066040519384612b57565b8083527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610d3382613530565b015f5b818110610dae5750505f5b818110610d5657604051806106328682610c02565b5f80610d63838587613575565b90610d73604051809381936135da565b0390305af4610d806135e7565b9015610da65790600191610d948287613616565b52610d9f8186613616565b5001610d41565b805190602001fd5b806060602080938801015201610d36565b3461040e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576020600954604051908152f35b6fffffffffffffffffffffffffffffffff81160361040e57565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435602435610e4d81610dfa565b60443590610e5a82610dfa565b610e62613d03565b610e6b83613c79565b825f52600b60205260ff600160405f20015460d81c16610f1957825f52600b60205273ffffffffffffffffffffffffffffffffffffffff600160405f200154163303610ee95791610b0c602092610ee37ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79584614151565b826141de565b827f87cca8a8000000000000000000000000000000000000000000000000000000005f526004523360245260445ffd5b827f271c0f9d000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc606091011261040e57600435610f7b816107ab565b90602435610f88816107ab565b9060443590565b3461040e576108b9610fa036610f45565b9161362a565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576108b9600435610fdf816107ab565b602435610feb816107ab565b6fffffffffffffffffffffffffffffffff60443561100881610dfa565b16913390614340565b6064359064ffffffffff8216820361040e57565b8015150361040e57565b60e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576020600435611067816107ab565b6107a36110c1602435611079816107ab565b60443561108581610dfa565b61108d611011565b6084359161109a836107ab565b60a435936110a785611025565b60c435976110b489610dfa565b6110bc613d03565b6146db565b91826141de565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760043560243561110181610dfa565b611109613d03565b61111282613c79565b815f52600b60205260405f205460801c156111ba57815f52600b60205273ffffffffffffffffffffffffffffffffffffffff600160405f20015416330361118a57816111816020927ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce794613dce565b610b0c81614048565b507f87cca8a8000000000000000000000000000000000000000000000000000000005f526004523360245260445ffd5b507f28a1df1c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b3461040e576108b96111f736610f45565b9060405192611207602085612b57565b5f84526138fa565b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576020610b8560043561124f81613c79565b614a21565b3461040e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57602073ffffffffffffffffffffffffffffffffffffffff600a5416604051908152f35b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576004356112e081613c79565b5f52600b6020526020600360405f200154604051908152f35b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760043561133481613c79565b5f52600b602052602060ff600160405f20015460d81c166040519015158152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760043561138a613d03565b61139381613c79565b805f52600b60205260ff600160405f20015460d81c1661174c576113fb6113e260016113c7845f52600b60205260405f2090565b015473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b33141580611721575b6116f257611642816114367ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce793614c8f565b8061166f5761144482614b19565b80611647575b505b6114b664ffffffffff4216600161146b855f52600b60205260405f2090565b01907fffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff78ffffffffff000000000000000000000000000000000000000083549260a01b169116179055565b61150d5f6114cc845f52600b60205260405f2090565b906fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b61156b6001611524845f52600b60205260405f2090565b017b010000000000000000000000000000000000000000000000000000007fffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff825416179055565b61158260016113c7845f52600b60205260405f2090565b90827fa8e3d71a6c0c719305004b430f6d17f12536f7b803db23a4d7016f5b52699a8c73ffffffffffffffffffffffffffffffffffffffff6115e96115cf845f52600360205260405f2090565b5473ffffffffffffffffffffffffffffffffffffffff1690565b61162f6115f585613cc2565b958360405194859416981696338460409194939273ffffffffffffffffffffffffffffffffffffffff606083019616825260208201520152565b0390a46040519081529081906020820190565b0390a1005b611667600361165e855f52600b60205260405f2090565b01918254613a89565b90555f61144a565b6116d761169d611687845f52600b60205260405f2090565b546fffffffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff6116d060026116c5875f52600b60205260405f2090565b015460a01c60ff1690565b9116614d24565b60036116eb845f52600b60205260405f2090565b015561144c565b7fa9ad2a22000000000000000000000000000000000000000000000000000000005f526004523360245260445ffd5b5061174761174361173d6115cf845f52600360205260405f2090565b8361564b565b1590565b611404565b7f271c0f9d000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760206107a36004356117b2816107ab565b6024356117be816107ab565b6044356117ca81610dfa565b6117d2611011565b90608435926117e0846107ab565b60a435946110b486611025565b3461040e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576020611879600435613c20565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b3461040e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576004356118d2816107ab565b602435906118df826107ab565b6118e7614a6b565b73ffffffffffffffffffffffffffffffffffffffff8116916040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152602081602481875afa8015611993576108b99461195c925f92611962575b505f52600760205260405f205490613801565b91614abc565b61198591925060203d60201161198c575b61197d8183612b57565b810190613788565b905f611949565b503d611973565b613797565b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760206118796004356119d881613c79565b613c20565b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435611a18816107ab565b611a20614a6b565b73ffffffffffffffffffffffffffffffffffffffff811615611b505773ffffffffffffffffffffffffffffffffffffffff6008541680611b255750611aa08173ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006008541617600855565b7f7b0a5ae0a2e8f0dc2ec7555098e00dd4af1418ee3fd1bcf9bb14f6990c10fa92611b2073ffffffffffffffffffffffffffffffffffffffff611af75f5473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff909516855216929081906020820190565b0390a2005b7f25139c2b000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7fa20dc5d2000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5773ffffffffffffffffffffffffffffffffffffffff600435611bc8816107ab565b168015611be5575f526004602052602060405f2054604051908152f35b7f89c62b64000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b3461040e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5773ffffffffffffffffffffffffffffffffffffffff5f54167f56dedb874d4fc0f70753f281fa2c25e82085163206086fe826cf834b51701f6c6020475f80808084885af150611c8c6135e7565b50604051908152a2005b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435611cd1816107ab565b611cd9614a6b565b7fa2548bd4b805e907c1558a47b5858324fe8bb4a2e1ddfca647eecbf65610eebc604073ffffffffffffffffffffffffffffffffffffffff600a54931692837fffffffffffffffffffffffff0000000000000000000000000000000000000000821617600a5573ffffffffffffffffffffffffffffffffffffffff5f54169373ffffffffffffffffffffffffffffffffffffffff8351921682526020820152a27f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c611642611da86009546137cf565b60405191829182919060206040840193600181520152565b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760206107a3600435611e0081613c79565b614b19565b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435611e4081613c79565b5f52600b60205260405f205460801c60405180916fffffffffffffffffffffffffffffffff60208301911682520390f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435602435611eaa81610dfa565b611eb2613d03565b611ebb82613c79565b815f52600b60205273ffffffffffffffffffffffffffffffffffffffff600160405f20015416330361118a5781610b0c6020927ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce794613dce565b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576004355f610120604051611f5781612b35565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201520152611f9681613c79565b5f52600b60205261063260405f206003611fae612b98565b91612008611fef8254611fe9611fd3826fffffffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff168752565b60801c90565b6fffffffffffffffffffffffffffffffff166020850152565b61209b61209260018301546120506120338273ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff166040880152565b64ffffffffff60a082901c16606087015261207560c882901c60ff1615156080880152565b61208960d082901c60ff16151560a0880152565b60d81c60ff1690565b151560c0850152565b6120f76120ec60028301546120e36120c68273ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1660e0880152565b60a01c60ff1690565b60ff16610100850152565b01546101208201526040519182918281516fffffffffffffffffffffffffffffffff168152610140810192916101209081906020818101516fffffffffffffffffffffffffffffffff169085015260408181015173ffffffffffffffffffffffffffffffffffffffff169085015260608181015164ffffffffff169085015260808181015115159085015260a08181015115159085015260c08181015115159085015260e08181015173ffffffffffffffffffffffffffffffffffffffff16908501526101008181015160ff16908501520151910152565b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760043561220a816107ab565b612212614a6b565b73ffffffffffffffffffffffffffffffffffffffff5f5416906040517fc34df33e000000000000000000000000000000000000000000000000000000008152602081600481865afa908115611993575f9161241d575b506040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008216600482015273ffffffffffffffffffffffffffffffffffffffff831690602081602481855afa908115611993575f916123ee575b5015612382577ff45d882a72fce9d8d7a7e2e196a338d4d9d4057510b4b9ddf91a7066104d2eaf83856123528273ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f55565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815292909116602083015281908101611642565b7fc9947bc2000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff808516600452166024527fffffffff000000000000000000000000000000000000000000000000000000001660445260645ffd5b612410915060203d602011612416575b6124088183612b57565b810190614b79565b5f6122e6565b503d6123fe565b61243f915060203d602011612445575b6124378183612b57565b81019061380e565b5f612268565b503d61242d565b3461040e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576040515f6002548060011c9060018116908115612515575b6020831082146106bf57828552602085019190811561068857506001146124c3576106328461062681860382612b57565b60025f9081529250907f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5b8184106125015750500161062682610616565b8054848401526020909301926001016124ee565b91607f1691612492565b3461040e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760043561255a816107ab565b60243561256681611025565b73ffffffffffffffffffffffffffffffffffffffff8216918215612622576125b790335f52600660205260405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff831515161790557f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c316040518061261d339482919091602081019215159052565b0390a3005b827f5b08ba18000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760043561268981613c79565b5f52600b602052602060ff600260405f20015460a01c16604051908152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576004356024356126e181610dfa565b6126e9613d03565b6126f282613c79565b815f52600b60205260405f205460801c156111ba57815f52600b60205273ffffffffffffffffffffffffffffffffffffffff600160405f20015416330361118a576fffffffffffffffffffffffffffffffff811680156127dc5791807ffddf01d0842635e80929251f6862b3baf136a29f2b2fb148968e8b236d5785fe6060611642947ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce796845f52600b6020526127b160405f205460801c9286614b8e565b6127ba85613cc2565b9160405192835260208301526040820152a26040519081529081906020820190565b827f4513d390000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5761284b60043561284681613c79565b613823565b604051600682101561285e576020918152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576004356128c681613c79565b5f52600b602052602060ff600160405f20015460d01c166040519015158152f35b60807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760043560243561292081610dfa565b60443561292c816107ab565b60643590612939826107ab565b612941613d03565b61294a84613c79565b835f52600b60205260ff600160405f20015460d81c16612adc57835f52600b60205273ffffffffffffffffffffffffffffffffffffffff600160405f2001541673ffffffffffffffffffffffffffffffffffffffff821603612a7a57506129bf6113e26115cf855f52600360205260405f2090565b73ffffffffffffffffffffffffffffffffffffffff821603612a1a577ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce761164284612a0a85826141de565b6040519081529081906020820190565b6108e590612a336115cf855f52600360205260405f2090565b7f5bdb8ad7000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff91821660045216602452604490565b6108e590612a9560016113c7875f52600b60205260405f2090565b7fc8bac88d000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff91821660045216602452604490565b837f271c0f9d000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610140810190811067ffffffffffffffff821117612b5257604052565b612b08565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612b5257604052565b60405190612ba861014083612b57565b565b67ffffffffffffffff8111612b5257601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b3461040e5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435612c1f816107ab565b60243590612c2c826107ab565b6044356064359267ffffffffffffffff841161040e573660238501121561040e57836004013592612c5c84612baa565b93612c6a6040519586612b57565b808552366024828801011161040e576020815f9260246108b9990183890137860101526138fa565b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576004355f52600b602052602060ff600160405f20015460c81c166040519015158152f35b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435612d2081613c79565b5f52600b602052602073ffffffffffffffffffffffffffffffffffffffff600160405f20015416604051908152f35b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760206107a3600435612d8f81613c79565b614c8f565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435602435612dcd81610dfa565b612dd5613d03565b612dde82613c79565b815f52600b60205260405f205460801c156111ba57815f52600b60205273ffffffffffffffffffffffffffffffffffffffff600160405f20015416330361118a57816111816020927ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7946141de565b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435612e8881613c20565b505f73ffffffffffffffffffffffffffffffffffffffff600a5416916044604051809481937fe9dc637500000000000000000000000000000000000000000000000000000000835230600484015260248301525afa8015611993575f90612efa575b610632906040519182918261059a565b503d805f833e612f0a8183612b57565b81019060208183031261040e5780519067ffffffffffffffff821161040e57019080601f8301121561040e57815191612f4283612baa565b91612f506040519384612b57565b8383526020848301011161040e5761063292612f729160208085019101610536565b612eea565b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5761304d6020600435612fb781613c79565b73ffffffffffffffffffffffffffffffffffffffff5f5416905f52600b825273ffffffffffffffffffffffffffffffffffffffff600160405f200154169060405180809581947f419d289d00000000000000000000000000000000000000000000000000000000835260048301919091602073ffffffffffffffffffffffffffffffffffffffff60408301946001845216910152565b03915afa801561199357610632915f91613073575b506040519081529081906020820190565b61308c915060203d60201161198c5761197d8183612b57565b5f613062565b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576004356130cd81613c79565b805f52600b60205260405f205460801c15610b15576130eb90613adc565b604051908152602090f35b6108b9610fa036610f45565b3461040e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57602073ffffffffffffffffffffffffffffffffffffffff60085416604051908152f35b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760043561318e81613c79565b5f52600b602052602073ffffffffffffffffffffffffffffffffffffffff600260405f20015416604051908152f35b3461040e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57602060ff61324f6004356131ff816107ab565b73ffffffffffffffffffffffffffffffffffffffff60243591613221836107ab565b165f526006845260405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b54166040519015158152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760206024357ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7826004356132b8846107ab565b6132c0613d03565b6132c981613c79565b6132dd6132d582614a21565b809583614d71565b604051908152a16fffffffffffffffffffffffffffffffff60405191168152f35b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760043561333981613c79565b5f52600b602052602064ffffffffff600160405f20015460a01c16604051908152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760043560243561339581610dfa565b61339d613d03565b6133a682613c79565b815f52600b60205260ff600160405f20015460d81c1661341a57815f52600b60205273ffffffffffffffffffffffffffffffffffffffff600160405f20015416330361118a5781610b0c6020927ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce794614151565b507f271c0f9d000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5773ffffffffffffffffffffffffffffffffffffffff600435613496816107ab565b165f526007602052602060405f2054604051908152f35b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e577ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce76020600435610b0c60243561350c816107ab565b6044359061351982610dfa565b613521613d03565b61352a84613c79565b83614d71565b67ffffffffffffffff8111612b525760051b60200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b91908110156135d55760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561040e57019081359167ffffffffffffffff831161040e57602001823603811361040e579190565b613548565b908092918237015f815290565b3d15613611573d906135f882612baa565b916136066040519384612b57565b82523d5f602084013e565b606090565b80518210156135d55760209160051b010190565b919073ffffffffffffffffffffffffffffffffffffffff81161561375c57815f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f20541615158061373f575b6137125773ffffffffffffffffffffffffffffffffffffffff613699819284339161528f565b937ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7604051806136ce87829190602083019252565b0390a1169216918083036136e157505050565b7f64283d7b000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7ff53e751a000000000000000000000000000000000000000000000000000000005f52600482905260245ffd5b50815f52600b60205260ff600160405f20015460d01c1615613673565b7f64a0ae92000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b9081602091031261040e575190565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82019182116137fc57565b6137a2565b919082039182116137fc57565b9081602091031261040e57516105ab816103e4565b613849600161383a835f52600b60205260405f2090565b015460a01c64ffffffffff1690565b64ffffffffff429116116138f557613879600161386e835f52600b60205260405f2090565b015460d81c60ff1690565b6138ef576fffffffffffffffffffffffffffffffff6138cd6138b86138b16138a085614c8f565b1515945f52600b60205260405f2090565b5460801c90565b6fffffffffffffffffffffffffffffffff1690565b16156138e1576138dc57600190565b600290565b6138ea57600390565b600490565b50600590565b505f90565b90929161390881858461362a565b833b613915575b50505050565b60209161395060405194859384937f150b7a020000000000000000000000000000000000000000000000000000000085523360048601614ccc565b03815f73ffffffffffffffffffffffffffffffffffffffff87165af15f9181613a68575b506139d457506139826135e7565b80519190826139cd577f64a0ae92000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff821660045260245ffd5b9050602001fd5b7fffffffff000000000000000000000000000000000000000000000000000000007f150b7a0200000000000000000000000000000000000000000000000000000000911603613a2757505f80808061390f565b7f64a0ae92000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff1660045260245ffd5b613a8291925060203d602011612445576124378183612b57565b905f613974565b919082018092116137fc57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b8115613acd570490565b613a96565b8115613acd570690565b6fffffffffffffffffffffffffffffffff613b02611687835f52600b60205260405f2090565b16908115613bf557613b2b613b2460026116c5845f52600b60205260405f2090565b8093614d24565b91613b4b6003613b43845f52600b60205260405f2090565b015491614d07565b613b5d613b5784614b19565b83613a89565b613b678286613a89565b1115613bed57613ba091613b8c6138b86138b86138b1875f52600b60205260405f2090565b94030192613b9a8185613ac3565b93613ad2565b613bcc57613bbe600161383a613bc8935f52600b60205260405f2090565b64ffffffffff1690565b0190565b90613be8613bbe600161383a81955f52600b60205260405f2090565b010190565b505050505f90565b7f0f04b2a1000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b805f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f205416908115613c4e575090565b7f7e273289000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b805f52600b60205260ff600160405f20015460c81c1615613c975750565b7f92c38434000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b613ccb81614b19565b815f52600b602052600360405f20015481018091116137fc576105ab915f52600b60205260ff600260405f20015460a01c1690615235565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003613d4257565b7fa1c0d6e5000000000000000000000000000000000000000000000000000000005f5260045ffd5b906fffffffffffffffffffffffffffffffff809116911603906fffffffffffffffffffffffffffffffff82116137fc57565b6105ab90805f52600b602052613dc86fffffffffffffffffffffffffffffffff60405f20541691614a21565b90613d6a565b6fffffffffffffffffffffffffffffffff8216801561401b57613df082613d9c565b6fffffffffffffffffffffffffffffffff811690818311613fd35750613e246138b8611687855f52600b60205260405f2090565b10613f705773ffffffffffffffffffffffffffffffffffffffff7fe31f2d40d5780915b1e656a67e11bdf09b0a4a925ec42bbeae220c8ca937ab4991613f4a613e7a60016113c7875f52600b60205260405f2090565b9182613e9360026113c7895f52600b60205260405f2090565b613f17613ea8895f52600b60205260405f2090565b613edc8b613ec683546fffffffffffffffffffffffffffffffff1690565b036fffffffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff00000000000000000000000000000000825416179055565b613f3f8173ffffffffffffffffffffffffffffffffffffffff165f52600760205260405f2090565b838154039055614abc565b6040516fffffffffffffffffffffffffffffffff9095168552169280602081015b0390a3565b6108e58383613f8a611687825f52600b60205260405f2090565b907fcb5f605f000000000000000000000000000000000000000000000000000000005f5292916fffffffffffffffffffffffffffffffff80926064956004521660245216604452565b7fe9771401000000000000000000000000000000000000000000000000000000005f5260048490526fffffffffffffffffffffffffffffffff8086166024521660445260645ffd5b7fea66b871000000000000000000000000000000000000000000000000000000005f52600482905260245ffd5b805f52600b60205264ffffffffff600160405f20015460a01c1664ffffffffff429116116140fe5761407a5f82614b8e565b61409160016113c7835f52600b60205260405f2090565b906140a76115cf825f52600360205260405f2090565b907fda83bf669c651406e02062769e01d14cccb5625ea685fd95e0e56d29597dac4773ffffffffffffffffffffffffffffffffffffffff6140e783613cc2565b60405190815293811694169280602081015b0390a4565b80614119600161383a6108e5945f52600b60205260405f2090565b7f54ae995a000000000000000000000000000000000000000000000000000000005f5260049190915264ffffffffff16602452604490565b805f52600b60205260405f205460801c6141b35761416f8282614b8e565b6040516fffffffffffffffffffffffffffffffff92909216825233917fc2a543cfadbf862642247e28711aaa30e3460384be5712be6557fee3384454fd90602090a3565b7fdc6fbbbc000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6fffffffffffffffffffffffffffffffff82168015614314575f828152600b60205260409020600281015473ffffffffffffffffffffffffffffffffffffffff16919091816fffffffffffffffffffffffffffffffff808554161601926fffffffffffffffffffffffffffffffff84116137fc576142cd9361429691906fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff00000000000000000000000000000000825416179055565b6142be8173ffffffffffffffffffffffffffffffffffffffff165f52600760205260405f2090565b82815401905530903390614340565b6040516fffffffffffffffffffffffffffffffff909216825233917fa06c1466b3c9751408a5ac337a2e8808e5ee0ceed1fd70635d041b21174eb6b4908060208101613f6b565b507f33f2df5a000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90919273ffffffffffffffffffffffffffffffffffffffff612ba89481604051957f23b872dd0000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606482526143a7608483612b57565b615474565b9081602091031261040e575160ff8116810361040e5790565b906101206003916144266143e982516fffffffffffffffffffffffffffffffff1690565b85906fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff00000000000000000000000000000000825416179055565b61448761444660208301516fffffffffffffffffffffffffffffffff1690565b85546fffffffffffffffffffffffffffffffff1660809190911b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000016178555565b61465d600185016144f36144b2604085015173ffffffffffffffffffffffffffffffffffffffff1690565b829073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b614552614508606085015164ffffffffff1690565b82547fffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff1660a09190911b78ffffffffff000000000000000000000000000000000000000016178255565b6145ad6145626080850151151590565b82547fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff1690151560c81b79ff0000000000000000000000000000000000000000000000000016178255565b6146096145bd60a0850151151590565b82547fffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff1690151560d01b7aff000000000000000000000000000000000000000000000000000016178255565b60c0830151151581547fffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff1690151560d81b7bff00000000000000000000000000000000000000000000000000000016179055565b6146d4600285016146886144b260e085015173ffffffffffffffffffffffffffffffffffffffff1690565b61010083015181547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1660a09190911b74ff000000000000000000000000000000000000000016179055565b0151910155565b9395949073ffffffffffffffffffffffffffffffffffffffff85169283156149f95773ffffffffffffffffffffffffffffffffffffffff88169561473460085473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff811688146149b85750604051957f313ce5670000000000000000000000000000000000000000000000000000000087526020876004818b5afa968715611993575f97614987575b50601260ff8816116149455764ffffffffff42169064ffffffffff81168281118061492b575b614903576148fb5750955b600954996147cd612b98565b5f81526fffffffffffffffffffffffffffffffff851660208201529273ffffffffffffffffffffffffffffffffffffffff16604084015264ffffffffff881660608401526001608084015285151560a08401525f60c084015273ffffffffffffffffffffffffffffffffffffffff1660e083015260ff1661010082015261012081015f9052614864895f52600b60205260405f2090565b9061486e916143c5565b61487888836154fb565b60018801600955604080518981523360208201526fffffffffffffffffffffffffffffffff929092169082015264ffffffffff949094166060850152901515608084015273ffffffffffffffffffffffffffffffffffffffff16917fedec8afa4eeca64243a519c152eab5c4f9da1bded6fbb72cba74cd128de683699060a090a4565b9050956147c1565b7fd6d8693d000000000000000000000000000000000000000000000000000000005f5260045ffd5b506fffffffffffffffffffffffffffffffff8516156147b6565b7fc9f55392000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff881660045260245ffd5b6149aa91975060203d6020116149b1575b6149a28183612b57565b8101906143ac565b955f614790565b503d614998565b7f987f5489000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff1660045260245ffd5b7ff9bb0fb3000000000000000000000000000000000000000000000000000000005f5260045ffd5b805f52600b6020526fffffffffffffffffffffffffffffffff60405f205416908115614a6557614a5090613cc2565b808210614a61576105ab91506155ef565b5090565b50505f90565b73ffffffffffffffffffffffffffffffffffffffff5f5416803303614a8d5750565b7fa7e1519e000000000000000000000000000000000000000000000000000000005f526004523360245260445ffd5b612ba89273ffffffffffffffffffffffffffffffffffffffff604051937fa9059cbb0000000000000000000000000000000000000000000000000000000060208601521660248401526044830152604482526143a7606483612b57565b805f52600b60205264ffffffffff600160405f20015460a01c169042821015614a65575f52600b6020526fffffffffffffffffffffffffffffffff60405f205460801c16908115614a655742038181029181830414901517156137fc5790565b9081602091031261040e57516105ab81611025565b614ba66138b86138b1835f52600b60205260405f2090565b6fffffffffffffffffffffffffffffffff831614614c4f57906114cc612ba89264ffffffffff42168064ffffffffff614bec600161383a865f52600b60205260405f2090565b1610614c02575b505f52600b60205260405f2090565b614c2a90614c0f83614b19565b80614c30575b50600161146b845f52600b60205260405f2090565b5f614bf3565b614c47600361165e865f52600b60205260405f2090565b90555f614c15565b7fd2657d5a000000000000000000000000000000000000000000000000000000005f526004526fffffffffffffffffffffffffffffffff1660245260445ffd5b805f52600b602052614cb76fffffffffffffffffffffffffffffffff60405f20541691613cc2565b9081811015614a655781039081116137fc5790565b909273ffffffffffffffffffffffffffffffffffffffff608093816105ab979616845216602083015260408201528160608201520190610557565b601260ff821614614d1e5760120360ff16600a0a90565b50600190565b90601260ff821614614a615760120360ff16600a0a0290565b15614d4457565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b614e076020614d976113e25f5473ffffffffffffffffffffffffffffffffffffffff1690565b614dae60016113c7865f52600b60205260405f2090565b9060405180809581947f419d289d00000000000000000000000000000000000000000000000000000000835260048301919091602073ffffffffffffffffffffffffffffffffffffffff60408301946001845216910152565b03915afa908115611993575f91615216575b508034106151e757506fffffffffffffffffffffffffffffffff83169182156151ba5773ffffffffffffffffffffffffffffffffffffffff811692831561518d57614e6f6115cf845f52600360205260405f2090565b8373ffffffffffffffffffffffffffffffffffffffff82168614159182615175575b505061512957614eae60026116c5855f52600b60205260405f2090565b90614ed7614ebb85614b19565b6003614ecf875f52600b60205260405f2090565b015490613a89565b90614ee28383615235565b91614ef8611687875f52600b60205260405f2090565b93836fffffffffffffffffffffffffffffffff8616105f1461511b57845b6fffffffffffffffffffffffffffffffff811684116150d357506138b861504f7f864d728834a993d067a518141636724c1196e5f004565e5b2a7b174b7f74f99797956150408661500b60028f8e614ffd6113c79273ffffffffffffffffffffffffffffffffffffffff9f9c614f9361506b9f9d6150659e614d24565b906003614fa8865f52600b60205260405f2090565b0154821161509857506003614fc5855f52600b60205260405f2090565b019081540390555b613edc614fe2845f52600b60205260405f2090565b91613ec683546fffffffffffffffffffffffffffffffff1690565b5f52600b60205260405f2090565b986150348a73ffffffffffffffffffffffffffffffffffffffff165f52600760205260405f2090565b82815403905589614abc565b6150498a613cc2565b90613801565b92613dc86116878a5f52600b60205260405f2090565b14614d3d565b604080513381526fffffffffffffffffffffffffffffffff909716602088015291169490819081016140f9565b0360036150ad855f52600b60205260405f2090565b01556150ce64ffffffffff4216600161146b865f52600b60205260405f2090565b614fcd565b7ff9f29859000000000000000000000000000000000000000000000000000000005f5260048890526fffffffffffffffffffffffffffffffff808b166024521660445260645ffd5b615124846155ef565b614f16565b507f4208ab4c000000000000000000000000000000000000000000000000000000005f526004919091523360245273ffffffffffffffffffffffffffffffffffffffff1660445260645ffd5b615186925090611743913390615652565b835f614e91565b7f9f32c858000000000000000000000000000000000000000000000000000000005f52600483905260245ffd5b7fb4855052000000000000000000000000000000000000000000000000000000005f52600482905260245ffd5b7f026dd37d000000000000000000000000000000000000000000000000000000005f523460045260245260445ffd5b61522f915060203d60201161198c5761197d8183612b57565b5f614e19565b90601260ff821614614a615760120360ff16600a0a908115613acd570490565b615267905f52600560205260405f2090565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b815f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f2054169273ffffffffffffffffffffffffffffffffffffffff81166153d7575b5073ffffffffffffffffffffffffffffffffffffffff83168061537b575b61532073ffffffffffffffffffffffffffffffffffffffff83169283615347575b610879855f52600360205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a490565b61536f8173ffffffffffffffffffffffffffffffffffffffff165f52600460205260405f2090565b6001815401905561530e565b61538483615255565b6153ac8473ffffffffffffffffffffffffffffffffffffffff165f52600460205260405f2090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81540190556152ed565b6153e2838286615652565b6152cf57905073ffffffffffffffffffffffffffffffffffffffff831661542f57507f7e273289000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff907f177e802f000000000000000000000000000000000000000000000000000000005f521660045260245260445ffd5b905f602091828151910182855af115613797575f513d6154f2575073ffffffffffffffffffffffffffffffffffffffff81163b155b6154b05750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b600114156154a9565b73ffffffffffffffffffffffffffffffffffffffff81161561375c57815f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f2054161515806155d2575b61371257907ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce761559c61558b5f8473ffffffffffffffffffffffffffffffffffffffff9661528f565b604051938452929081906020820190565b0390a1166155a657565b7f73c6ac6e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b50815f52600b60205260ff600160405f20015460d01c1615615542565b6fffffffffffffffffffffffffffffffff811161561b576fffffffffffffffffffffffffffffffff1690565b7f6dfcc650000000000000000000000000000000000000000000000000000000005f52608060045260245260445ffd5b6105ab9133905b9173ffffffffffffffffffffffffffffffffffffffff821690811515938461567c575b5050505090565b73ffffffffffffffffffffffffffffffffffffffff1680831494509192909184156156e3575b505082156156b6575b50505f808080615675565b9091505f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f205416145f806156ab565b60ff9294509061571b915f52600660205260405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b5416915f806156a256fea26469706673582212201606a0ac71f0440d2bebdfe0e500e20aebd053118ecdaf0d67ef007c6ddfe3a664736f6c634300081d0033",
    "sourceMap": "2942:37322:83:-:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;2942:37322:83;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;2942:37322:83;;;;;;;;;;;;;;;4428:52:55;;1565:210;;;4428:52;;;2942:37322:83;;4428:52:55;;;;;;;;;;;-1:-1:-1;4428:52:55;;;-1:-1:-1;4427:53:55;;4423:332;;-1:-1:-1;2942:37322:83;;-1:-1:-1;;;;;;2942:37322:83;;;;;;;;;;;;;;;;;;4880:51:55;;2942:37322:83;4880:51:55;2942:37322:83;;-1:-1:-1;;;;;2942:37322:83;;;;1446:13:10;2942:37322:83;1446:13:10;2942:37322:83;;;;;;;;;-1:-1:-1;2942:37322:83;;;;;;;;;;;-1:-1:-1;2942:37322:83;;;;;;;;;;;;;-1:-1:-1;2942:37322:83;;;;;;;1446:13:10;2942:37322:83;;;;;;;;;;;1446:13:10;2942:37322:83;;;;-1:-1:-1;;;;;2942:37322:83;;;;1469:17:10;2942:37322:83;1446:13:10;2942:37322:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2942:37322:83;;;;;;;1446:13:10;2942:37322:83;;;;;;;;;;;1469:17:10;2942:37322:83;;1218:4:56;1199:24;;1446:13:10;1655:16:84;2942:37322:83;1681:56:84;2942:37322:83;;-1:-1:-1;;;;;;2942:37322:83;-1:-1:-1;;;;;2942:37322:83;;;;;;;;;;;;;;;;;;1199:24:56;2942:37322:83;;;;;;;;;;-1:-1:-1;2942:37322:83;;;;;;;;;;1469:17:10;-1:-1:-1;2942:37322:83;;-1:-1:-1;2942:37322:83;;-1:-1:-1;2942:37322:83;;;;;;;;1446:13:10;2942:37322:83;;;;;;;;;;;;1469:17:10;2942:37322:83;;;;;;;;;;;;;;;;;;;;;;;;;;;1446:13:10;2942:37322:83;;;;;;;;;;;;;;;;1469:17:10;-1:-1:-1;2942:37322:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2942:37322:83;;1446:13:10;2942:37322:83;;;;;;-1:-1:-1;2942:37322:83;;;;;;;;-1:-1:-1;2942:37322:83;;4428:52:55;2942:37322:83;4428:52:55;-1:-1:-1;2942:37322:83;;;;;;;;;;;;-1:-1:-1;2942:37322:83;;4428:52:55;2942:37322:83;4428:52:55;-1:-1:-1;2942:37322:83;;;;;-1:-1:-1;2942:37322:83;;;;;;;;;;1446:13:10;-1:-1:-1;2942:37322:83;;-1:-1:-1;2942:37322:83;;-1:-1:-1;2942:37322:83;;;;;;;;;1446:13:10;2942:37322:83;;;;;;;;;;;;;1446:13:10;2942:37322:83;;;;;;;;;;;;;;;;;;;;;;;;;;;1446:13:10;2942:37322:83;;;;;;;;;;;;;;;;1446:13:10;-1:-1:-1;2942:37322:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2942:37322:83;;1446:13:10;2942:37322:83;;;;;;-1:-1:-1;2942:37322:83;;;;;;;;;;;4423:332:55;4503:241;;;-1:-1:-1;4503:241:55;-1:-1:-1;4428:52:55;2942:37322:83;4428:52:55;2942:37322:83;1565:210:55;;;2942:37322:83;;;-1:-1:-1;4503:241:55;4428:52;;;2942:37322:83;4428:52:55;;2942:37322:83;4428:52:55;;;;;;2942:37322:83;4428:52:55;;;:::i;:::-;;;2942:37322:83;;;;;;;;;;;;4428:52:55;;;2942:37322:83;-1:-1:-1;2942:37322:83;;4428:52:55;;;-1:-1:-1;4428:52:55;;;2942:37322:83;;;-1:-1:-1;2942:37322:83;;;;;;;;;;-1:-1:-1;;2942:37322:83;;;;-1:-1:-1;;;;;2942:37322:83;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;2942:37322:83;;;;;;:::o",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146103df57806306fdde03146103da578063081812fc146103d557806308b87923146103d0578063095ea7b3146103cb5780630c699624146103c6578063136439dd146103c15780631400ecec146103bc5780631e010439146103b75780631e897afb146103b25780631e99d569146103ad5780631f0cce58146103a857806323b872dd146103a357806328f8b77d1461039e57806336af277f14610399578063379d871a1461039457806342842e0e1461038f57806342e3e23d146102e0578063442675701461038a578063450ac90814610385578063569f4c59146103805780635ea2145b1461037b5780635f2a0beb146103765780635fe3b567146103715780636352211e1461036c578063648bf774146103675780636d0cee75146103625780636da1e1021461035d57806370a082311461035857806378f82ce7146103535780637cad6cd11461034e5780637ddf92281461034957806380448da31461034457806381632a861461033f578063894e9a0d1461033a5780638bad38dd1461033557806395d89b4114610330578063a22cb4651461032b578063a7de07cd14610326578063a8a482a614610321578063ad35efd41461031c578063b256456914610317578063b61f758314610312578063b88d4fde1461030d578063b8a3be6614610308578063b971302a14610303578063bc7a2d6c146102fe578063bcbd019e146102f9578063c87b56dd146102f4578063cca138e5146102ef578063d4b80884146102ea578063d90e27d7146102e5578063d975dfed146102e0578063e1758bd8146102db578063e4b50cb8146102d6578063e985e9c5146102d1578063ea5ead19146102cc578063eb5710d8146102c7578063ebb6f79a146102c2578063ec01da3b146102bd5763fdd46d60146102b8575f80fd5b6134ad565b613446565b61335c565b6132fe565b61325b565b6131bd565b613153565b613102565b61120f565b6130f6565b613092565b612f77565b612e4d565b612d94565b612d4f565b612ce5565b612c92565b612be4565b6128e7565b61288b565b612808565b6126a8565b61264e565b61251f565b61244c565b6121cf565b611f15565b611e71565b611e05565b611dc0565b611c96565b611c11565b611b78565b6119dd565b611998565b611897565b61183d565b6117ed565b611777565b611355565b6112f9565b6112a5565b611254565b6111e6565b6110c8565b61102f565b610fa6565b610f8f565b610e14565b610dbf565b610c7f565b610b9f565b610b40565b610a60565b610962565b6107c9565b61075e565b6106f6565b6105ae565b610412565b7fffffffff0000000000000000000000000000000000000000000000000000000081160361040e57565b5f80fd5b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e577fffffffff0000000000000000000000000000000000000000000000000000000060043561046e816103e4565b167f490649060000000000000000000000000000000000000000000000000000000081149081156104a8575b506040519015158152602090f35b7f80ac58cd0000000000000000000000000000000000000000000000000000000081149150811561050c575b81156104e2575b505f61049a565b7f01ffc9a7000000000000000000000000000000000000000000000000000000009150145f6104db565b7f5b5e139f00000000000000000000000000000000000000000000000000000000811491506104d4565b5f5b8381106105475750505f910152565b8181015183820152602001610538565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209361059381518092818752878088019101610536565b0116010190565b9060206105ab928181520190610557565b90565b3461040e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576040515f6001548060011c90600181169081156106ec575b6020831082146106bf5782855260208501919081156106885750600114610636575b6106328461062681860382612b57565b6040519182918261059a565b0390f35b60015f9081529250907fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b8184106106745750500161062682610616565b805484840152602090930192600101610661565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682525090151560051b01905061062682610616565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916105f4565b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760043561073181613c20565b505f526005602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760206107a360043561079e81613c79565b613cc2565b604051908152f35b73ffffffffffffffffffffffffffffffffffffffff81160361040e57565b3461040e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435610804816107ab565b6024359061081182613c20565b33151580610942575b806108e8575b6108bb57826108b9936108799273ffffffffffffffffffffffffffffffffffffffff80861691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a45f52600560205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b005b7fa9fbf51f000000000000000000000000000000000000000000000000000000005f523360045260245b5ffd5b5060ff61093a336109178473ffffffffffffffffffffffffffffffffffffffff165f52600660205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b541615610820565b503373ffffffffffffffffffffffffffffffffffffffff8216141561081a565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435610997613d03565b6109a081613c79565b805f52600b60205273ffffffffffffffffffffffffffffffffffffffff600160405f200154163303610a3157807ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce760206109fc61063294613d9c565b92610a078482613dce565b604051908152a16040516fffffffffffffffffffffffffffffffff90911681529081906020820190565b7f87cca8a8000000000000000000000000000000000000000000000000000000005f526004523360245260445ffd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435610a95613d03565b610a9e81613c79565b805f52600b60205260405f205460801c15610b1557805f52600b60205273ffffffffffffffffffffffffffffffffffffffff600160405f200154163303610a3157602081610b0c7ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce793614048565b604051908152a1005b7f28a1df1c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576020610b85600435610b8081613c79565b613d9c565b6fffffffffffffffffffffffffffffffff60405191168152f35b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435610bda81613c79565b5f52600b60205260206fffffffffffffffffffffffffffffffff60405f205416604051908152f35b602081016020825282518091526040820191602060408360051b8301019401925f915b838310610c3457505050505090565b9091929394602080610c70837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528951610557565b97019301930191939290610c25565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760043567ffffffffffffffff811161040e573660238201121561040e5780600401359067ffffffffffffffff821161040e576024810190602436918460051b01011161040e57610cf882613530565b91610d066040519384612b57565b8083527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610d3382613530565b015f5b818110610dae5750505f5b818110610d5657604051806106328682610c02565b5f80610d63838587613575565b90610d73604051809381936135da565b0390305af4610d806135e7565b9015610da65790600191610d948287613616565b52610d9f8186613616565b5001610d41565b805190602001fd5b806060602080938801015201610d36565b3461040e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576020600954604051908152f35b6fffffffffffffffffffffffffffffffff81160361040e57565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435602435610e4d81610dfa565b60443590610e5a82610dfa565b610e62613d03565b610e6b83613c79565b825f52600b60205260ff600160405f20015460d81c16610f1957825f52600b60205273ffffffffffffffffffffffffffffffffffffffff600160405f200154163303610ee95791610b0c602092610ee37ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79584614151565b826141de565b827f87cca8a8000000000000000000000000000000000000000000000000000000005f526004523360245260445ffd5b827f271c0f9d000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc606091011261040e57600435610f7b816107ab565b90602435610f88816107ab565b9060443590565b3461040e576108b9610fa036610f45565b9161362a565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576108b9600435610fdf816107ab565b602435610feb816107ab565b6fffffffffffffffffffffffffffffffff60443561100881610dfa565b16913390614340565b6064359064ffffffffff8216820361040e57565b8015150361040e57565b60e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576020600435611067816107ab565b6107a36110c1602435611079816107ab565b60443561108581610dfa565b61108d611011565b6084359161109a836107ab565b60a435936110a785611025565b60c435976110b489610dfa565b6110bc613d03565b6146db565b91826141de565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760043560243561110181610dfa565b611109613d03565b61111282613c79565b815f52600b60205260405f205460801c156111ba57815f52600b60205273ffffffffffffffffffffffffffffffffffffffff600160405f20015416330361118a57816111816020927ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce794613dce565b610b0c81614048565b507f87cca8a8000000000000000000000000000000000000000000000000000000005f526004523360245260445ffd5b507f28a1df1c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b3461040e576108b96111f736610f45565b9060405192611207602085612b57565b5f84526138fa565b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576020610b8560043561124f81613c79565b614a21565b3461040e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57602073ffffffffffffffffffffffffffffffffffffffff600a5416604051908152f35b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576004356112e081613c79565b5f52600b6020526020600360405f200154604051908152f35b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760043561133481613c79565b5f52600b602052602060ff600160405f20015460d81c166040519015158152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760043561138a613d03565b61139381613c79565b805f52600b60205260ff600160405f20015460d81c1661174c576113fb6113e260016113c7845f52600b60205260405f2090565b015473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b33141580611721575b6116f257611642816114367ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce793614c8f565b8061166f5761144482614b19565b80611647575b505b6114b664ffffffffff4216600161146b855f52600b60205260405f2090565b01907fffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff78ffffffffff000000000000000000000000000000000000000083549260a01b169116179055565b61150d5f6114cc845f52600b60205260405f2090565b906fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b61156b6001611524845f52600b60205260405f2090565b017b010000000000000000000000000000000000000000000000000000007fffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff825416179055565b61158260016113c7845f52600b60205260405f2090565b90827fa8e3d71a6c0c719305004b430f6d17f12536f7b803db23a4d7016f5b52699a8c73ffffffffffffffffffffffffffffffffffffffff6115e96115cf845f52600360205260405f2090565b5473ffffffffffffffffffffffffffffffffffffffff1690565b61162f6115f585613cc2565b958360405194859416981696338460409194939273ffffffffffffffffffffffffffffffffffffffff606083019616825260208201520152565b0390a46040519081529081906020820190565b0390a1005b611667600361165e855f52600b60205260405f2090565b01918254613a89565b90555f61144a565b6116d761169d611687845f52600b60205260405f2090565b546fffffffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff6116d060026116c5875f52600b60205260405f2090565b015460a01c60ff1690565b9116614d24565b60036116eb845f52600b60205260405f2090565b015561144c565b7fa9ad2a22000000000000000000000000000000000000000000000000000000005f526004523360245260445ffd5b5061174761174361173d6115cf845f52600360205260405f2090565b8361564b565b1590565b611404565b7f271c0f9d000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760206107a36004356117b2816107ab565b6024356117be816107ab565b6044356117ca81610dfa565b6117d2611011565b90608435926117e0846107ab565b60a435946110b486611025565b3461040e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576020611879600435613c20565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b3461040e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576004356118d2816107ab565b602435906118df826107ab565b6118e7614a6b565b73ffffffffffffffffffffffffffffffffffffffff8116916040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152602081602481875afa8015611993576108b99461195c925f92611962575b505f52600760205260405f205490613801565b91614abc565b61198591925060203d60201161198c575b61197d8183612b57565b810190613788565b905f611949565b503d611973565b613797565b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760206118796004356119d881613c79565b613c20565b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435611a18816107ab565b611a20614a6b565b73ffffffffffffffffffffffffffffffffffffffff811615611b505773ffffffffffffffffffffffffffffffffffffffff6008541680611b255750611aa08173ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006008541617600855565b7f7b0a5ae0a2e8f0dc2ec7555098e00dd4af1418ee3fd1bcf9bb14f6990c10fa92611b2073ffffffffffffffffffffffffffffffffffffffff611af75f5473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff909516855216929081906020820190565b0390a2005b7f25139c2b000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7fa20dc5d2000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5773ffffffffffffffffffffffffffffffffffffffff600435611bc8816107ab565b168015611be5575f526004602052602060405f2054604051908152f35b7f89c62b64000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b3461040e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5773ffffffffffffffffffffffffffffffffffffffff5f54167f56dedb874d4fc0f70753f281fa2c25e82085163206086fe826cf834b51701f6c6020475f80808084885af150611c8c6135e7565b50604051908152a2005b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435611cd1816107ab565b611cd9614a6b565b7fa2548bd4b805e907c1558a47b5858324fe8bb4a2e1ddfca647eecbf65610eebc604073ffffffffffffffffffffffffffffffffffffffff600a54931692837fffffffffffffffffffffffff0000000000000000000000000000000000000000821617600a5573ffffffffffffffffffffffffffffffffffffffff5f54169373ffffffffffffffffffffffffffffffffffffffff8351921682526020820152a27f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c611642611da86009546137cf565b60405191829182919060206040840193600181520152565b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760206107a3600435611e0081613c79565b614b19565b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435611e4081613c79565b5f52600b60205260405f205460801c60405180916fffffffffffffffffffffffffffffffff60208301911682520390f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435602435611eaa81610dfa565b611eb2613d03565b611ebb82613c79565b815f52600b60205273ffffffffffffffffffffffffffffffffffffffff600160405f20015416330361118a5781610b0c6020927ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce794613dce565b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576004355f610120604051611f5781612b35565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201520152611f9681613c79565b5f52600b60205261063260405f206003611fae612b98565b91612008611fef8254611fe9611fd3826fffffffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff168752565b60801c90565b6fffffffffffffffffffffffffffffffff166020850152565b61209b61209260018301546120506120338273ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff166040880152565b64ffffffffff60a082901c16606087015261207560c882901c60ff1615156080880152565b61208960d082901c60ff16151560a0880152565b60d81c60ff1690565b151560c0850152565b6120f76120ec60028301546120e36120c68273ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1660e0880152565b60a01c60ff1690565b60ff16610100850152565b01546101208201526040519182918281516fffffffffffffffffffffffffffffffff168152610140810192916101209081906020818101516fffffffffffffffffffffffffffffffff169085015260408181015173ffffffffffffffffffffffffffffffffffffffff169085015260608181015164ffffffffff169085015260808181015115159085015260a08181015115159085015260c08181015115159085015260e08181015173ffffffffffffffffffffffffffffffffffffffff16908501526101008181015160ff16908501520151910152565b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760043561220a816107ab565b612212614a6b565b73ffffffffffffffffffffffffffffffffffffffff5f5416906040517fc34df33e000000000000000000000000000000000000000000000000000000008152602081600481865afa908115611993575f9161241d575b506040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008216600482015273ffffffffffffffffffffffffffffffffffffffff831690602081602481855afa908115611993575f916123ee575b5015612382577ff45d882a72fce9d8d7a7e2e196a338d4d9d4057510b4b9ddf91a7066104d2eaf83856123528273ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f55565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815292909116602083015281908101611642565b7fc9947bc2000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff808516600452166024527fffffffff000000000000000000000000000000000000000000000000000000001660445260645ffd5b612410915060203d602011612416575b6124088183612b57565b810190614b79565b5f6122e6565b503d6123fe565b61243f915060203d602011612445575b6124378183612b57565b81019061380e565b5f612268565b503d61242d565b3461040e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576040515f6002548060011c9060018116908115612515575b6020831082146106bf57828552602085019190811561068857506001146124c3576106328461062681860382612b57565b60025f9081529250907f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5b8184106125015750500161062682610616565b8054848401526020909301926001016124ee565b91607f1691612492565b3461040e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760043561255a816107ab565b60243561256681611025565b73ffffffffffffffffffffffffffffffffffffffff8216918215612622576125b790335f52600660205260405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff831515161790557f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c316040518061261d339482919091602081019215159052565b0390a3005b827f5b08ba18000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760043561268981613c79565b5f52600b602052602060ff600260405f20015460a01c16604051908152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576004356024356126e181610dfa565b6126e9613d03565b6126f282613c79565b815f52600b60205260405f205460801c156111ba57815f52600b60205273ffffffffffffffffffffffffffffffffffffffff600160405f20015416330361118a576fffffffffffffffffffffffffffffffff811680156127dc5791807ffddf01d0842635e80929251f6862b3baf136a29f2b2fb148968e8b236d5785fe6060611642947ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce796845f52600b6020526127b160405f205460801c9286614b8e565b6127ba85613cc2565b9160405192835260208301526040820152a26040519081529081906020820190565b827f4513d390000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5761284b60043561284681613c79565b613823565b604051600682101561285e576020918152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576004356128c681613c79565b5f52600b602052602060ff600160405f20015460d01c166040519015158152f35b60807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760043560243561292081610dfa565b60443561292c816107ab565b60643590612939826107ab565b612941613d03565b61294a84613c79565b835f52600b60205260ff600160405f20015460d81c16612adc57835f52600b60205273ffffffffffffffffffffffffffffffffffffffff600160405f2001541673ffffffffffffffffffffffffffffffffffffffff821603612a7a57506129bf6113e26115cf855f52600360205260405f2090565b73ffffffffffffffffffffffffffffffffffffffff821603612a1a577ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce761164284612a0a85826141de565b6040519081529081906020820190565b6108e590612a336115cf855f52600360205260405f2090565b7f5bdb8ad7000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff91821660045216602452604490565b6108e590612a9560016113c7875f52600b60205260405f2090565b7fc8bac88d000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff91821660045216602452604490565b837f271c0f9d000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610140810190811067ffffffffffffffff821117612b5257604052565b612b08565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612b5257604052565b60405190612ba861014083612b57565b565b67ffffffffffffffff8111612b5257601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b3461040e5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435612c1f816107ab565b60243590612c2c826107ab565b6044356064359267ffffffffffffffff841161040e573660238501121561040e57836004013592612c5c84612baa565b93612c6a6040519586612b57565b808552366024828801011161040e576020815f9260246108b9990183890137860101526138fa565b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576004355f52600b602052602060ff600160405f20015460c81c166040519015158152f35b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435612d2081613c79565b5f52600b602052602073ffffffffffffffffffffffffffffffffffffffff600160405f20015416604051908152f35b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760206107a3600435612d8f81613c79565b614c8f565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435602435612dcd81610dfa565b612dd5613d03565b612dde82613c79565b815f52600b60205260405f205460801c156111ba57815f52600b60205273ffffffffffffffffffffffffffffffffffffffff600160405f20015416330361118a57816111816020927ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7946141de565b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57600435612e8881613c20565b505f73ffffffffffffffffffffffffffffffffffffffff600a5416916044604051809481937fe9dc637500000000000000000000000000000000000000000000000000000000835230600484015260248301525afa8015611993575f90612efa575b610632906040519182918261059a565b503d805f833e612f0a8183612b57565b81019060208183031261040e5780519067ffffffffffffffff821161040e57019080601f8301121561040e57815191612f4283612baa565b91612f506040519384612b57565b8383526020848301011161040e5761063292612f729160208085019101610536565b612eea565b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5761304d6020600435612fb781613c79565b73ffffffffffffffffffffffffffffffffffffffff5f5416905f52600b825273ffffffffffffffffffffffffffffffffffffffff600160405f200154169060405180809581947f419d289d00000000000000000000000000000000000000000000000000000000835260048301919091602073ffffffffffffffffffffffffffffffffffffffff60408301946001845216910152565b03915afa801561199357610632915f91613073575b506040519081529081906020820190565b61308c915060203d60201161198c5761197d8183612b57565b5f613062565b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e576004356130cd81613c79565b805f52600b60205260405f205460801c15610b15576130eb90613adc565b604051908152602090f35b6108b9610fa036610f45565b3461040e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57602073ffffffffffffffffffffffffffffffffffffffff60085416604051908152f35b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760043561318e81613c79565b5f52600b602052602073ffffffffffffffffffffffffffffffffffffffff600260405f20015416604051908152f35b3461040e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e57602060ff61324f6004356131ff816107ab565b73ffffffffffffffffffffffffffffffffffffffff60243591613221836107ab565b165f526006845260405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b54166040519015158152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760206024357ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7826004356132b8846107ab565b6132c0613d03565b6132c981613c79565b6132dd6132d582614a21565b809583614d71565b604051908152a16fffffffffffffffffffffffffffffffff60405191168152f35b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760043561333981613c79565b5f52600b602052602064ffffffffff600160405f20015460a01c16604051908152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5760043560243561339581610dfa565b61339d613d03565b6133a682613c79565b815f52600b60205260ff600160405f20015460d81c1661341a57815f52600b60205273ffffffffffffffffffffffffffffffffffffffff600160405f20015416330361118a5781610b0c6020927ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce794614151565b507f271c0f9d000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b3461040e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e5773ffffffffffffffffffffffffffffffffffffffff600435613496816107ab565b165f526007602052602060405f2054604051908152f35b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040e577ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce76020600435610b0c60243561350c816107ab565b6044359061351982610dfa565b613521613d03565b61352a84613c79565b83614d71565b67ffffffffffffffff8111612b525760051b60200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b91908110156135d55760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561040e57019081359167ffffffffffffffff831161040e57602001823603811361040e579190565b613548565b908092918237015f815290565b3d15613611573d906135f882612baa565b916136066040519384612b57565b82523d5f602084013e565b606090565b80518210156135d55760209160051b010190565b919073ffffffffffffffffffffffffffffffffffffffff81161561375c57815f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f20541615158061373f575b6137125773ffffffffffffffffffffffffffffffffffffffff613699819284339161528f565b937ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7604051806136ce87829190602083019252565b0390a1169216918083036136e157505050565b7f64283d7b000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7ff53e751a000000000000000000000000000000000000000000000000000000005f52600482905260245ffd5b50815f52600b60205260ff600160405f20015460d01c1615613673565b7f64a0ae92000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b9081602091031261040e575190565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82019182116137fc57565b6137a2565b919082039182116137fc57565b9081602091031261040e57516105ab816103e4565b613849600161383a835f52600b60205260405f2090565b015460a01c64ffffffffff1690565b64ffffffffff429116116138f557613879600161386e835f52600b60205260405f2090565b015460d81c60ff1690565b6138ef576fffffffffffffffffffffffffffffffff6138cd6138b86138b16138a085614c8f565b1515945f52600b60205260405f2090565b5460801c90565b6fffffffffffffffffffffffffffffffff1690565b16156138e1576138dc57600190565b600290565b6138ea57600390565b600490565b50600590565b505f90565b90929161390881858461362a565b833b613915575b50505050565b60209161395060405194859384937f150b7a020000000000000000000000000000000000000000000000000000000085523360048601614ccc565b03815f73ffffffffffffffffffffffffffffffffffffffff87165af15f9181613a68575b506139d457506139826135e7565b80519190826139cd577f64a0ae92000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff821660045260245ffd5b9050602001fd5b7fffffffff000000000000000000000000000000000000000000000000000000007f150b7a0200000000000000000000000000000000000000000000000000000000911603613a2757505f80808061390f565b7f64a0ae92000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff1660045260245ffd5b613a8291925060203d602011612445576124378183612b57565b905f613974565b919082018092116137fc57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b8115613acd570490565b613a96565b8115613acd570690565b6fffffffffffffffffffffffffffffffff613b02611687835f52600b60205260405f2090565b16908115613bf557613b2b613b2460026116c5845f52600b60205260405f2090565b8093614d24565b91613b4b6003613b43845f52600b60205260405f2090565b015491614d07565b613b5d613b5784614b19565b83613a89565b613b678286613a89565b1115613bed57613ba091613b8c6138b86138b86138b1875f52600b60205260405f2090565b94030192613b9a8185613ac3565b93613ad2565b613bcc57613bbe600161383a613bc8935f52600b60205260405f2090565b64ffffffffff1690565b0190565b90613be8613bbe600161383a81955f52600b60205260405f2090565b010190565b505050505f90565b7f0f04b2a1000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b805f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f205416908115613c4e575090565b7f7e273289000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b805f52600b60205260ff600160405f20015460c81c1615613c975750565b7f92c38434000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b613ccb81614b19565b815f52600b602052600360405f20015481018091116137fc576105ab915f52600b60205260ff600260405f20015460a01c1690615235565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003613d4257565b7fa1c0d6e5000000000000000000000000000000000000000000000000000000005f5260045ffd5b906fffffffffffffffffffffffffffffffff809116911603906fffffffffffffffffffffffffffffffff82116137fc57565b6105ab90805f52600b602052613dc86fffffffffffffffffffffffffffffffff60405f20541691614a21565b90613d6a565b6fffffffffffffffffffffffffffffffff8216801561401b57613df082613d9c565b6fffffffffffffffffffffffffffffffff811690818311613fd35750613e246138b8611687855f52600b60205260405f2090565b10613f705773ffffffffffffffffffffffffffffffffffffffff7fe31f2d40d5780915b1e656a67e11bdf09b0a4a925ec42bbeae220c8ca937ab4991613f4a613e7a60016113c7875f52600b60205260405f2090565b9182613e9360026113c7895f52600b60205260405f2090565b613f17613ea8895f52600b60205260405f2090565b613edc8b613ec683546fffffffffffffffffffffffffffffffff1690565b036fffffffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff00000000000000000000000000000000825416179055565b613f3f8173ffffffffffffffffffffffffffffffffffffffff165f52600760205260405f2090565b838154039055614abc565b6040516fffffffffffffffffffffffffffffffff9095168552169280602081015b0390a3565b6108e58383613f8a611687825f52600b60205260405f2090565b907fcb5f605f000000000000000000000000000000000000000000000000000000005f5292916fffffffffffffffffffffffffffffffff80926064956004521660245216604452565b7fe9771401000000000000000000000000000000000000000000000000000000005f5260048490526fffffffffffffffffffffffffffffffff8086166024521660445260645ffd5b7fea66b871000000000000000000000000000000000000000000000000000000005f52600482905260245ffd5b805f52600b60205264ffffffffff600160405f20015460a01c1664ffffffffff429116116140fe5761407a5f82614b8e565b61409160016113c7835f52600b60205260405f2090565b906140a76115cf825f52600360205260405f2090565b907fda83bf669c651406e02062769e01d14cccb5625ea685fd95e0e56d29597dac4773ffffffffffffffffffffffffffffffffffffffff6140e783613cc2565b60405190815293811694169280602081015b0390a4565b80614119600161383a6108e5945f52600b60205260405f2090565b7f54ae995a000000000000000000000000000000000000000000000000000000005f5260049190915264ffffffffff16602452604490565b805f52600b60205260405f205460801c6141b35761416f8282614b8e565b6040516fffffffffffffffffffffffffffffffff92909216825233917fc2a543cfadbf862642247e28711aaa30e3460384be5712be6557fee3384454fd90602090a3565b7fdc6fbbbc000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6fffffffffffffffffffffffffffffffff82168015614314575f828152600b60205260409020600281015473ffffffffffffffffffffffffffffffffffffffff16919091816fffffffffffffffffffffffffffffffff808554161601926fffffffffffffffffffffffffffffffff84116137fc576142cd9361429691906fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff00000000000000000000000000000000825416179055565b6142be8173ffffffffffffffffffffffffffffffffffffffff165f52600760205260405f2090565b82815401905530903390614340565b6040516fffffffffffffffffffffffffffffffff909216825233917fa06c1466b3c9751408a5ac337a2e8808e5ee0ceed1fd70635d041b21174eb6b4908060208101613f6b565b507f33f2df5a000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90919273ffffffffffffffffffffffffffffffffffffffff612ba89481604051957f23b872dd0000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606482526143a7608483612b57565b615474565b9081602091031261040e575160ff8116810361040e5790565b906101206003916144266143e982516fffffffffffffffffffffffffffffffff1690565b85906fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff00000000000000000000000000000000825416179055565b61448761444660208301516fffffffffffffffffffffffffffffffff1690565b85546fffffffffffffffffffffffffffffffff1660809190911b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000016178555565b61465d600185016144f36144b2604085015173ffffffffffffffffffffffffffffffffffffffff1690565b829073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b614552614508606085015164ffffffffff1690565b82547fffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff1660a09190911b78ffffffffff000000000000000000000000000000000000000016178255565b6145ad6145626080850151151590565b82547fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff1690151560c81b79ff0000000000000000000000000000000000000000000000000016178255565b6146096145bd60a0850151151590565b82547fffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff1690151560d01b7aff000000000000000000000000000000000000000000000000000016178255565b60c0830151151581547fffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff1690151560d81b7bff00000000000000000000000000000000000000000000000000000016179055565b6146d4600285016146886144b260e085015173ffffffffffffffffffffffffffffffffffffffff1690565b61010083015181547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1660a09190911b74ff000000000000000000000000000000000000000016179055565b0151910155565b9395949073ffffffffffffffffffffffffffffffffffffffff85169283156149f95773ffffffffffffffffffffffffffffffffffffffff88169561473460085473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff811688146149b85750604051957f313ce5670000000000000000000000000000000000000000000000000000000087526020876004818b5afa968715611993575f97614987575b50601260ff8816116149455764ffffffffff42169064ffffffffff81168281118061492b575b614903576148fb5750955b600954996147cd612b98565b5f81526fffffffffffffffffffffffffffffffff851660208201529273ffffffffffffffffffffffffffffffffffffffff16604084015264ffffffffff881660608401526001608084015285151560a08401525f60c084015273ffffffffffffffffffffffffffffffffffffffff1660e083015260ff1661010082015261012081015f9052614864895f52600b60205260405f2090565b9061486e916143c5565b61487888836154fb565b60018801600955604080518981523360208201526fffffffffffffffffffffffffffffffff929092169082015264ffffffffff949094166060850152901515608084015273ffffffffffffffffffffffffffffffffffffffff16917fedec8afa4eeca64243a519c152eab5c4f9da1bded6fbb72cba74cd128de683699060a090a4565b9050956147c1565b7fd6d8693d000000000000000000000000000000000000000000000000000000005f5260045ffd5b506fffffffffffffffffffffffffffffffff8516156147b6565b7fc9f55392000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff881660045260245ffd5b6149aa91975060203d6020116149b1575b6149a28183612b57565b8101906143ac565b955f614790565b503d614998565b7f987f5489000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff1660045260245ffd5b7ff9bb0fb3000000000000000000000000000000000000000000000000000000005f5260045ffd5b805f52600b6020526fffffffffffffffffffffffffffffffff60405f205416908115614a6557614a5090613cc2565b808210614a61576105ab91506155ef565b5090565b50505f90565b73ffffffffffffffffffffffffffffffffffffffff5f5416803303614a8d5750565b7fa7e1519e000000000000000000000000000000000000000000000000000000005f526004523360245260445ffd5b612ba89273ffffffffffffffffffffffffffffffffffffffff604051937fa9059cbb0000000000000000000000000000000000000000000000000000000060208601521660248401526044830152604482526143a7606483612b57565b805f52600b60205264ffffffffff600160405f20015460a01c169042821015614a65575f52600b6020526fffffffffffffffffffffffffffffffff60405f205460801c16908115614a655742038181029181830414901517156137fc5790565b9081602091031261040e57516105ab81611025565b614ba66138b86138b1835f52600b60205260405f2090565b6fffffffffffffffffffffffffffffffff831614614c4f57906114cc612ba89264ffffffffff42168064ffffffffff614bec600161383a865f52600b60205260405f2090565b1610614c02575b505f52600b60205260405f2090565b614c2a90614c0f83614b19565b80614c30575b50600161146b845f52600b60205260405f2090565b5f614bf3565b614c47600361165e865f52600b60205260405f2090565b90555f614c15565b7fd2657d5a000000000000000000000000000000000000000000000000000000005f526004526fffffffffffffffffffffffffffffffff1660245260445ffd5b805f52600b602052614cb76fffffffffffffffffffffffffffffffff60405f20541691613cc2565b9081811015614a655781039081116137fc5790565b909273ffffffffffffffffffffffffffffffffffffffff608093816105ab979616845216602083015260408201528160608201520190610557565b601260ff821614614d1e5760120360ff16600a0a90565b50600190565b90601260ff821614614a615760120360ff16600a0a0290565b15614d4457565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b614e076020614d976113e25f5473ffffffffffffffffffffffffffffffffffffffff1690565b614dae60016113c7865f52600b60205260405f2090565b9060405180809581947f419d289d00000000000000000000000000000000000000000000000000000000835260048301919091602073ffffffffffffffffffffffffffffffffffffffff60408301946001845216910152565b03915afa908115611993575f91615216575b508034106151e757506fffffffffffffffffffffffffffffffff83169182156151ba5773ffffffffffffffffffffffffffffffffffffffff811692831561518d57614e6f6115cf845f52600360205260405f2090565b8373ffffffffffffffffffffffffffffffffffffffff82168614159182615175575b505061512957614eae60026116c5855f52600b60205260405f2090565b90614ed7614ebb85614b19565b6003614ecf875f52600b60205260405f2090565b015490613a89565b90614ee28383615235565b91614ef8611687875f52600b60205260405f2090565b93836fffffffffffffffffffffffffffffffff8616105f1461511b57845b6fffffffffffffffffffffffffffffffff811684116150d357506138b861504f7f864d728834a993d067a518141636724c1196e5f004565e5b2a7b174b7f74f99797956150408661500b60028f8e614ffd6113c79273ffffffffffffffffffffffffffffffffffffffff9f9c614f9361506b9f9d6150659e614d24565b906003614fa8865f52600b60205260405f2090565b0154821161509857506003614fc5855f52600b60205260405f2090565b019081540390555b613edc614fe2845f52600b60205260405f2090565b91613ec683546fffffffffffffffffffffffffffffffff1690565b5f52600b60205260405f2090565b986150348a73ffffffffffffffffffffffffffffffffffffffff165f52600760205260405f2090565b82815403905589614abc565b6150498a613cc2565b90613801565b92613dc86116878a5f52600b60205260405f2090565b14614d3d565b604080513381526fffffffffffffffffffffffffffffffff909716602088015291169490819081016140f9565b0360036150ad855f52600b60205260405f2090565b01556150ce64ffffffffff4216600161146b865f52600b60205260405f2090565b614fcd565b7ff9f29859000000000000000000000000000000000000000000000000000000005f5260048890526fffffffffffffffffffffffffffffffff808b166024521660445260645ffd5b615124846155ef565b614f16565b507f4208ab4c000000000000000000000000000000000000000000000000000000005f526004919091523360245273ffffffffffffffffffffffffffffffffffffffff1660445260645ffd5b615186925090611743913390615652565b835f614e91565b7f9f32c858000000000000000000000000000000000000000000000000000000005f52600483905260245ffd5b7fb4855052000000000000000000000000000000000000000000000000000000005f52600482905260245ffd5b7f026dd37d000000000000000000000000000000000000000000000000000000005f523460045260245260445ffd5b61522f915060203d60201161198c5761197d8183612b57565b5f614e19565b90601260ff821614614a615760120360ff16600a0a908115613acd570490565b615267905f52600560205260405f2090565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b815f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f2054169273ffffffffffffffffffffffffffffffffffffffff81166153d7575b5073ffffffffffffffffffffffffffffffffffffffff83168061537b575b61532073ffffffffffffffffffffffffffffffffffffffff83169283615347575b610879855f52600360205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a490565b61536f8173ffffffffffffffffffffffffffffffffffffffff165f52600460205260405f2090565b6001815401905561530e565b61538483615255565b6153ac8473ffffffffffffffffffffffffffffffffffffffff165f52600460205260405f2090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81540190556152ed565b6153e2838286615652565b6152cf57905073ffffffffffffffffffffffffffffffffffffffff831661542f57507f7e273289000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff907f177e802f000000000000000000000000000000000000000000000000000000005f521660045260245260445ffd5b905f602091828151910182855af115613797575f513d6154f2575073ffffffffffffffffffffffffffffffffffffffff81163b155b6154b05750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b600114156154a9565b73ffffffffffffffffffffffffffffffffffffffff81161561375c57815f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f2054161515806155d2575b61371257907ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce761559c61558b5f8473ffffffffffffffffffffffffffffffffffffffff9661528f565b604051938452929081906020820190565b0390a1166155a657565b7f73c6ac6e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b50815f52600b60205260ff600160405f20015460d01c1615615542565b6fffffffffffffffffffffffffffffffff811161561b576fffffffffffffffffffffffffffffffff1690565b7f6dfcc650000000000000000000000000000000000000000000000000000000005f52608060045260245260445ffd5b6105ab9133905b9173ffffffffffffffffffffffffffffffffffffffff821690811515938461567c575b5050505090565b73ffffffffffffffffffffffffffffffffffffffff1680831494509192909184156156e3575b505082156156b6575b50505f808080615675565b9091505f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f205416145f806156ab565b60ff9294509061571b915f52600660205260405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b5416915f806156a256fea26469706673582212201606a0ac71f0440d2bebdfe0e500e20aebd053118ecdaf0d67ef007c6ddfe3a664736f6c634300081d0033",
    "sourceMap": "2942:37322:83:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;18422:25;;:65;;;;;2942:37322;-1:-1:-1;2942:37322:83;;;;;;;;;;18422:65;1712:25:10;1697:40;;;-1:-1:-1;1697:104:10;;;;18422:65:83;1697:156:10;;;;18422:65:83;;;;;1697:156:10;877:25:19;862:40;;;1697:156:10;;;:104;1768:33;1753:48;;;-1:-1:-1;1697:104:10;;2942:37322:83;;;;;;;;-1:-1:-1;;2942:37322:83;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;2441:5:10;2942:37322:83;;2441:5:10;2942:37322:83;;2441:5:10;2942:37322:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;2441:5:10;2942:37322:83;;;;;-1:-1:-1;2942:37322:83;;;;;;;;-1:-1:-1;;2942:37322:83;;;;;;;;;;;;;;;;;2441:5:10;2942:37322:83;;;;;;;;-1:-1:-1;2942:37322:83;;;;;;;-1:-1:-1;2942:37322:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3582:22:10;;;:::i;:::-;;-1:-1:-1;2942:37322:83;6059:15:10;2942:37322:83;;;;;-1:-1:-1;2942:37322:83;;;;;;;;;;;;;;;;;;;;;9763:22;2942:37322;;2084:8:84;;;:::i;:::-;9763:22:83;:::i;:::-;2942:37322;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;15017:22:10;;;;:::i;:::-;735:10:16;15167:18:10;;:35;;;2942:37322:83;15167:69:10;;;2942:37322:83;15163:142:10;;2942:37322:83;15420:29:10;2942:37322:83;15420:24:10;2942:37322:83;;;;;;;15357:28:10;-1:-1:-1;15357:28:10;;2942:37322:83;;15420:15:10;2942:37322:83;;;;;;;15420:24:10;2942:37322:83;;;;;;;;;;;15420:29:10;2942:37322:83;15163:142:10;15263:27;-1:-1:-1;15263:27:10;735:10:16;1211:67:14;2942:37322:83;;15263:27:10;-1:-1:-1;15263:27:10;15167:69;735:10:16;2942:37322:83;4038:35:10;735:10:16;4038:25:10;;2942:37322:83;;;;4038:18:10;2942:37322:83;;;;;;;4038:25:10;2942:37322:83;;;;;;;;;;;;4038:35:10;2942:37322:83;;15206:30:10;15167:69;;:35;735:10:16;;2942:37322:83;;;15189:13:10;;15167:35;;2942:37322:83;;;;;;;;;;832:76:56;;:::i;:::-;2084:8:84;;;:::i;:::-;2942:37322:83;-1:-1:-1;2942:37322:83;2848:8:84;2942:37322:83;;;2848:25:84;2942:37322:83;-1:-1:-1;2942:37322:83;2848:25:84;2942:37322:83;;2834:10:84;:39;2830:135;;15804:29:83;4266:47;2942:37322;15804:29;2942:37322;15804:29;;:::i;:::-;15925:14;;;;;:::i;:::-;2942:37322;;;;;4266:47;2942:37322;;;;;;;;;;;;;;;;2830:135:84;2896:58;-1:-1:-1;2896:58:84;2942:37322:83;;2834:10:84;2942:37322:83;;;-1:-1:-1;2896:58:84;2942:37322:83;;;;;;;;;;832:76:56;;:::i;:::-;2084:8:84;;;:::i;:::-;2942:37322:83;-1:-1:-1;2942:37322:83;2319:8:84;2942:37322:83;;;-1:-1:-1;2942:37322:83;;;;2319:46:84;2315:130;;2942:37322:83;-1:-1:-1;2942:37322:83;2319:8:84;2942:37322:83;;;2848:25:84;2942:37322:83;-1:-1:-1;2942:37322:83;2848:25:84;2942:37322:83;;2834:10:84;:39;2830:135;;2942:37322:83;14093:8;;4266:47;14093:8;;:::i;:::-;2942:37322;;;;;4266:47;2942:37322;2315:130:84;2388:46;-1:-1:-1;2388:46:84;2942:37322:83;;;-1:-1:-1;2388:46:84;2942:37322:83;;;;;;;;;;;;8265:29;2942:37322;;2084:8:84;;;:::i;:::-;8265:29:83;:::i;:::-;2942:37322;;;;;;;;;;;;;;;;;;;;;2084:8:84;;;:::i;:::-;-1:-1:-1;2942:37322:83;3372:8:84;2942:37322:83;;;;;-1:-1:-1;2942:37322:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;-1:-1:-1;2942:37322:83;;;;;;678:13:54;;-1:-1:-1;693:9:54;;;;;;2942:37322:83;;;;;;;:::i;704:3:54:-;-1:-1:-1;788:8:54;;;;;;:::i;:::-;2942:37322:83;;;;;;;;;:::i;:::-;761:36:54;769:4;;761:36;;;;:::i;:::-;902:8;;898:377;;1344:19;2942:37322:83;1344:19:54;;;;;:::i;:::-;;;;;;:::i;:::-;;2942:37322:83;678:13:54;;898:377;930:331;;;2942:37322:83;930:331:54;;2942:37322:83;;;;;;;;;;;;;;;;;;;;;;;;;1048:36:84;2942:37322:83;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;832:76:56;;:::i;:::-;2084:8:84;;;:::i;:::-;2942:37322:83;-1:-1:-1;2942:37322:83;2591:8:84;2942:37322:83;;;2591:27:84;2942:37322:83;-1:-1:-1;2942:37322:83;2591:27:84;2942:37322:83;;;;2587:111:84;;2942:37322:83;-1:-1:-1;2942:37322:83;2591:8:84;2942:37322:83;;;2591:27:84;2942:37322:83;-1:-1:-1;2942:37322:83;2848:25:84;2942:37322:83;;2834:10:84;:39;2830:135;;16816:13:83;16925:6;2942:37322;16816:13;;4266:47;16816:13;;;:::i;:::-;16925:6;;:::i;2830:135:84:-;2896:58;;-1:-1:-1;2896:58:84;2942:37322:83;;2834:10:84;2942:37322:83;;;-1:-1:-1;2896:58:84;2587:111;2641:46;;-1:-1:-1;2641:46:84;2942:37322:83;;;-1:-1:-1;2641:46:84;2942:37322:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;19253:67;2942:37322;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;19284:10;;19253:67;;:::i;2942:37322::-;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;12625:6;12457:73;2942:37322;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;832:76:56;;:::i;:::-;12457:73:83;:::i;:::-;12625:6;;;:::i;2942:37322::-;;;;;;;;;;;;;;;:::i;:::-;832:76:56;;:::i;:::-;2084:8:84;;;:::i;:::-;2942:37322:83;-1:-1:-1;2942:37322:83;2319:8:84;2942:37322:83;;;-1:-1:-1;2942:37322:83;;;;2319:46:84;2315:130;;2942:37322:83;-1:-1:-1;2942:37322:83;2319:8:84;2942:37322:83;;;2848:25:84;2942:37322:83;-1:-1:-1;2942:37322:83;2848:25:84;2942:37322:83;;2834:10:84;:39;2830:135;;15390:6:83;;2942:37322;15390:6;4266:47;15390:6;;:::i;:::-;15479:8;;;:::i;2830:135:84:-;2896:58;;-1:-1:-1;2896:58:84;2942:37322:83;;2834:10:84;2942:37322:83;;;-1:-1:-1;2896:58:84;2315:130;2388:46;;-1:-1:-1;2388:46:84;2942:37322:83;;;-1:-1:-1;2388:46:84;2942:37322:83;;;;4872:39:10;2942:37322:83;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;4872:39:10;:::i;2942:37322:83:-;;;;;;;;;;;;5113:24;2942:37322;;2084:8:84;;;:::i;:::-;5113:24:83;:::i;2942:37322::-;;;;;;;;;;;;;1129:48:84;2942:37322:83;;;;;;;;;;;;;;;;;;;;;2084:8:84;;;:::i;:::-;-1:-1:-1;2942:37322:83;4119:8:84;2942:37322:83;;;4119:37:84;2942:37322:83;-1:-1:-1;2942:37322:83;4119:37:84;2942:37322:83;;;;;;;;;;;;;;;;;;;;2084:8:84;;;:::i;:::-;-1:-1:-1;2942:37322:83;5551:8:84;2942:37322:83;;;;5551:27:84;2942:37322:83;-1:-1:-1;2942:37322:83;5551:27:84;2942:37322:83;;;;;;;;;;;;;;;;;;;;;;832:76:56;;:::i;:::-;2084:8:84;;;:::i;:::-;2942:37322:83;-1:-1:-1;2942:37322:83;2591:8:84;2942:37322:83;;;2591:27:84;2942:37322:83;-1:-1:-1;2942:37322:83;2591:27:84;2942:37322:83;;;;2587:111:84;;34240:39:83;2942:37322;2591:27:84;34254:18:83;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;34254:18;:25;2942:37322;;;;;;;;;;34240:39;:10;:39;;:149;;;2942:37322;34223:284;;4266:47;34542:26;;4266:47;34542:26;;:::i;:::-;34652:19;;;34715:30;;;:::i;:::-;34763:21;34759:198;;34648:711;;;35414:57;2942:37322;35455:15;2942:37322;2591:27:84;35414:18:83;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;35414:18;:31;2942:37322;;;;;;;;;;;;;;;35414:57;35534:45;-1:-1:-1;35534:18:83;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;35534:18;2942:37322;;;;;;;;;;;;;;;35534:45;35635:34;2591:27:84;35635:18:83;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;35635:18;:27;2942:37322;;;;;;;;;35635:34;35792:25;2591:27:84;35792:18:83;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;35792:25;5824:16:10;;35710:287:83;2942:37322;5824:16:10;;;2942:37322:83;;5824:7:10;2942:37322:83;;;;;;;5824:16:10;2942:37322:83;;;;;5824:16:10;35710:287:83;35920:22;;;:::i;:::-;2942:37322;;;;;;;;;;34240:10;;35710:287;2942:37322;;;;;;;;;;;;;;;;;;;;35710:287;;;;2942:37322;;;;;;;;;;;;;4266:47;;;;2942:37322;34759:198;34884:58;:37;:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;34884:18;:37;2942:37322;;;34884:58;:::i;:::-;2942:37322;;34759:198;;;34648:711;35197:151;35247:26;:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;35247:18;2942:37322;;;;;35247:26;2942:37322;;35301:32;:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;35301:18;:32;2942:37322;;;;;;;;;;35197:151;:::i;:::-;35157:37;:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;35157:18;:37;2942:37322;34648:711;;34223:284;34421:75;-1:-1:-1;34421:75:83;2942:37322;;34240:10;2942:37322;;;-1:-1:-1;15263:27:10;34240:149:83;5824:16:10;34299:90:83;34300:89;5824:16:10;;;2942:37322:83;;5824:7:10;2942:37322:83;;;;;;;5824:16:10;34300:89:83;;:::i;:::-;34299:90;;2942:37322;34299:90;34240:149;;2587:111:84;2641:46;-1:-1:-1;2641:46:84;2942:37322:83;;;-1:-1:-1;2641:46:84;2942:37322:83;;;;;;;;;11927:73;2942:37322;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2273:22:10;2942:37322:83;;2273:22:10;:::i;:::-;2942:37322:83;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;1003:74:55;;:::i;:::-;2942:37322:83;;;;;;;14432:30;;14456:4;2942:37322;14432:30;;2942:37322;;14432:30;2942:37322;14432:30;;;;;;;;14591:7;14432:30;:55;:30;-1:-1:-1;14432:30:83;;;2942:37322;;-1:-1:-1;2942:37322:83;14465:15;2942:37322;;;-1:-1:-1;2942:37322:83;;14432:55;;:::i;:::-;14591:7;;:::i;14432:30::-;;;;;2942:37322;14432:30;2942:37322;14432:30;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;2942:37322::-;;;;;;;;;;;;7727:23;2942:37322;;2084:8:84;;;:::i;:::-;7727:23:83;:::i;2942:37322::-;;;;;;;;;;;;;;;;:::i;:::-;1003:74:55;;:::i;:::-;2942:37322:83;;;17132:28;17128:109;;2942:37322;17294:11;2942:37322;;17294:25;17290:116;;17457:28;;;2942:37322;;;17294:11;2942:37322;;;17294:11;2942:37322;;17457:28;17528:86;;2942:37322;;-1:-1:-1;2942:37322:83;;;;;;;;;;;;;;;;;;;;;;;;17528:86;;;;2942:37322;17290:116;17342:53;-1:-1:-1;17342:53:83;2942:37322;;;-1:-1:-1;17342:53:83;17128:109;17183:43;-1:-1:-1;17183:43:83;2942:37322;-1:-1:-1;17183:43:83;2942:37322;;;;;;;;;;;;;;;;;:::i;:::-;;2005:19:10;;2001:87;;-1:-1:-1;2942:37322:83;;;;;;-1:-1:-1;2942:37322:83;;;;;;;;2001:87:10;2047:30;-1:-1:-1;2047:30:10;-1:-1:-1;2942:37322:83;;;-1:-1:-1;2047:30:10;2942:37322:83;;;;;;;;;;;;;;;3225:73:55;2942:37322:83;2860:21:55;2942:37322:83;2972:47:55;;;;;;;;;;:::i;:::-;;2942:37322:83;;;;;3225:73:55;2942:37322:83;;;;;;;;;;;;;;;;;:::i;:::-;1003:74:55;;:::i;:::-;17968:78:83;2942:37322;;17848:13;2942:37322;;;;;;;;;17848:13;2942:37322;;-1:-1:-1;2942:37322:83;;;;;;;;;;;;;;17968:78;18115:79;;18175:16;:12;2942:37322;18175:16;:::i;:::-;2942:37322;;18115:79;;;;2942:37322;;;;;;;18160:1;2942:37322;;;;;;;;;;;;;;;;;7994:30;2942:37322;;2084:8:84;;;:::i;:::-;7994:30:83;:::i;2942:37322::-;;;;;;;;;;;;;2084:8:84;;;:::i;:::-;-1:-1:-1;2942:37322:83;3636:8:84;2942:37322:83;;;-1:-1:-1;2942:37322:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;832:76:56;;:::i;:::-;2084:8:84;;;:::i;:::-;2942:37322:83;-1:-1:-1;2942:37322:83;2848:8:84;2942:37322:83;;;2848:25:84;2942:37322:83;-1:-1:-1;2942:37322:83;2848:25:84;2942:37322:83;;2834:10:84;:39;2830:135;;14973:6:83;;2942:37322;14973:6;4266:47;14973:6;;:::i;2942:37322::-;;;;;;;;;;;;;-1:-1:-1;2942:37322:83;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2084:8:84;;;:::i;:::-;-1:-1:-1;2942:37322:83;4561:8:84;2942:37322:83;;;;-1:-1:-1;2942:37322:83;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1003:74:55;;:::i;:::-;2942:37322:83;-1:-1:-1;2942:37322:83;;;;;;2621:34:55;;2942:37322:83;2621:34:55;2942:37322:83;2621:34:55;;;;;;;;;-1:-1:-1;2621:34:55;;;2942:37322:83;-1:-1:-1;2942:37322:83;;;4428:52:55;;2942:37322:83;;;;4428:52:55;;2942:37322:83;;;;;;;;;;4428:52:55;;;;;;;-1:-1:-1;4428:52:55;;;2942:37322:83;4427:53:55;;4423:332;;4880:51;4809:28;;;;2942:37322:83;;;2532:11:55;2942:37322:83;;;2532:11:55;2942:37322:83;;4809:28:55;2942:37322:83;;;;;;;;;;;;;;;;;;;;;4880:51:55;2942:37322:83;4423:332:55;4503:241;-1:-1:-1;4503:241:55;2942:37322:83;;;;;;;;;;;;;;-1:-1:-1;15263:27:10;4428:52:55;;;;2942:37322:83;4428:52:55;2942:37322:83;4428:52:55;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;2621:34;;;;2942:37322:83;2621:34:55;2942:37322:83;2621:34:55;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;2942:37322:83;;;;;;;;;;;;;;2596:7:10;2942:37322:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2596:7:10;2942:37322:83;;;;;-1:-1:-1;2942:37322:83;;;;;;;;-1:-1:-1;;2942:37322:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;15772:22:10;;;15768:91;;15868:35;735:10:16;;-1:-1:-1;2942:37322:83;15868:18:10;2942:37322:83;;;-1:-1:-1;2942:37322:83;;;;;;;;;;;;;15868:35:10;2942:37322:83;;;;;;;;;;;;15929:41:10;2942:37322:83;;735:10:16;15929:41:10;735:10:16;15929:41:10;;2942:37322:83;;;;;;;;;;;;15929:41:10;;;;2942:37322:83;15768:91:10;15817:31;;-1:-1:-1;15817:31:10;2942:37322:83;;;-1:-1:-1;15817:31:10;2942:37322:83;;;;;;;;;;;;;2084:8:84;;;:::i;:::-;-1:-1:-1;2942:37322:83;4964:8:84;2942:37322:83;;;;4964:32:84;2942:37322:83;-1:-1:-1;2942:37322:83;4964:32:84;2942:37322:83;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;832:76:56;;:::i;:::-;2084:8:84;;;:::i;:::-;2942:37322:83;-1:-1:-1;2942:37322:83;2319:8:84;2942:37322:83;;;-1:-1:-1;2942:37322:83;;;;2319:46:84;2315:130;;2942:37322:83;-1:-1:-1;2942:37322:83;2319:8:84;2942:37322:83;;;2848:25:84;2942:37322:83;-1:-1:-1;2942:37322:83;2848:25:84;2942:37322:83;;2834:10:84;:39;2830:135;;2942:37322:83;;;10941:30;;10937:117;;2942:37322;;11288:216;2942:37322;4266:47;2942:37322;4266:47;2942:37322;;-1:-1:-1;2942:37322:83;2319:8:84;2942:37322:83;;11224:16;2942:37322;-1:-1:-1;2942:37322:83;;;;11224:16;;;:::i;:::-;11375:22;;;:::i;:::-;2942:37322;;;;;;;;;;;;;;11288:216;2942:37322;;;;;;;;;;;;;10937:117;10994:49;;-1:-1:-1;10994:49:83;2942:37322;;;-1:-1:-1;10994:49:83;2942:37322;;;;;;;;;;;8340:1254;2942:37322;;2084:8:84;;;:::i;:::-;8340:1254:83;:::i;:::-;2942:37322;;;;;;;;;;;;;;;-1:-1:-1;2942:37322:83;;;;;-1:-1:-1;2942:37322:83;;;;;;;;;;;;;;2084:8:84;;;:::i;:::-;-1:-1:-1;2942:37322:83;5349:8:84;2942:37322:83;;;;5349:33:84;2942:37322:83;-1:-1:-1;2942:37322:83;5349:33:84;2942:37322:83;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;832:76:56;;:::i;:::-;2084:8:84;;;:::i;:::-;2942:37322:83;-1:-1:-1;2942:37322:83;2591:8:84;2942:37322:83;;;2591:27:84;2942:37322:83;-1:-1:-1;2942:37322:83;2591:27:84;2942:37322:83;;;;2587:111:84;;2942:37322:83;-1:-1:-1;2942:37322:83;2591:8:84;2942:37322:83;;;2591:27:84;2942:37322:83;-1:-1:-1;2942:37322:83;25551:25;2942:37322;;;;;25541:35;25537:142;;5824:16:10;25693:31:83;5824:16:10;;;2942:37322:83;;5824:7:10;2942:37322:83;;;;;;;25693:31;2942:37322;;;25693:31;25689:137;;4266:47;;13221:6;;;;;:::i;:::-;2942:37322;;;;;;;;;;;;;25689:137;25747:68;5824:16:10;;;;2942:37322:83;;5824:7:10;2942:37322:83;;;;;;;5824:16:10;25747:68:83;-1:-1:-1;25747:68:83;2942:37322;;;;;;;;;;;;25537:142;25599:69;25642:18;:25;2591:27:84;25642:18:83;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;25642:25;25599:69;-1:-1:-1;25599:69:83;2942:37322;;;;;;;;;;;;2587:111:84;2641:46;;-1:-1:-1;2641:46:84;2942:37322:83;;;-1:-1:-1;2641:46:84;2942:37322:83;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;2942:37322:83;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;2942:37322:83;5147:8:84;2942:37322:83;;;;5147:27:84;2942:37322:83;-1:-1:-1;2942:37322:83;5147:27:84;2942:37322:83;;;;;;;;;;;;;;;;;;;;;;;;;2084:8:84;;;:::i;:::-;-1:-1:-1;2942:37322:83;3841:8:84;2942:37322:83;;;;3841:25:84;2942:37322:83;-1:-1:-1;2942:37322:83;3841:25:84;2942:37322:83;;;;;;;;;;;;;;;;;;;;10017:26;2942:37322;;2084:8:84;;;:::i;:::-;10017:26:83;:::i;2942:37322::-;;;;;;;;;;;;;;;:::i;:::-;832:76:56;;:::i;:::-;2084:8:84;;;:::i;:::-;2942:37322:83;-1:-1:-1;2942:37322:83;2319:8:84;2942:37322:83;;;-1:-1:-1;2942:37322:83;;;;2319:46:84;2315:130;;2942:37322:83;-1:-1:-1;2942:37322:83;2319:8:84;2942:37322:83;;;2848:25:84;2942:37322:83;-1:-1:-1;2942:37322:83;2848:25:84;2942:37322:83;;2834:10:84;:39;2830:135;;13642:6:83;;2942:37322;13642:6;4266:47;13642:6;;:::i;2942:37322::-;;;;;;;;;;;;;18688:36;;;:::i;:::-;;-1:-1:-1;2942:37322:83;18796:13;2942:37322;;;18796:65;2942:37322;;18796:65;;;;2942:37322;18796:65;;18834:4;2942:37322;18796:65;;2942:37322;;;;;18796:65;;;;;;-1:-1:-1;18796:65:83;;;2942:37322;;;;;;;;;;:::i;18796:65::-;;;;-1:-1:-1;18796:65:83;;;;;;:::i;:::-;;;2942:37322;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18796:65;;2942:37322;;;;;;;;;;;4784:147;2942:37322;;;2084:8:84;;;:::i;:::-;2942:37322:83;-1:-1:-1;2942:37322:83;;;-1:-1:-1;2942:37322:83;4895:8;2942:37322;;;4842:33;2942:37322;-1:-1:-1;2942:37322:83;4895:25;2942:37322;;;;;4784:147;;;;;2942:37322;4784:147;;2942:37322;4784:147;;2942:37322;;;;;;;;;4842:33;2942:37322;;;;;;;4784:147;;;;;;;;;2942:37322;4784:147;-1:-1:-1;4784:147:83;;;2942:37322;-1:-1:-1;2942:37322:83;;;;;;;;;;;;;4784:147;;;;2942:37322;4784:147;2942:37322;4784:147;;;;;;;:::i;:::-;;;;2942:37322;;;;;;;;;;;;;2084:8:84;;;:::i;:::-;2942:37322:83;-1:-1:-1;2942:37322:83;2319:8:84;2942:37322:83;;;-1:-1:-1;2942:37322:83;;;;2319:46:84;2315:130;;5183:2280:83;;;:::i;:::-;2942:37322;;;;;;;;;19058:8;2942:37322;;;:::i;:::-;;;;;;;;;;;;;968:35:84;2942:37322:83;;;;;;;;;;;;;;;;;;;;;2084:8:84;;;:::i;:::-;-1:-1:-1;2942:37322:83;4748:8:84;2942:37322:83;;;;4748:24:84;2942:37322:83;-1:-1:-1;2942:37322:83;4748:24:84;2942:37322:83;;;;;;;;;;;;;;;;;;;;;4038:35:10;2942:37322:83;;;;;:::i;:::-;;;;;;;;:::i;:::-;;-1:-1:-1;2942:37322:83;4038:18:10;2942:37322:83;;;-1:-1:-1;2942:37322:83;;;;;;;;;;;;;4038:35:10;2942:37322:83;;;;;;;;;;;;;;;;;;;;;4266:47;2942:37322;;;;;;:::i;:::-;832:76:56;;:::i;:::-;2084:8:84;;;:::i;:::-;20485:15:83;20359:24;;;:::i;:::-;20485:15;;;;:::i;:::-;2942:37322;;;;;4266:47;2942:37322;;;;;;;;;;;;;;;;;;;;;2084:8:84;;;:::i;:::-;-1:-1:-1;2942:37322:83;4346:8:84;2942:37322:83;;;;4346:31:84;2942:37322:83;-1:-1:-1;2942:37322:83;4346:31:84;2942:37322:83;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;832:76:56;;:::i;:::-;2084:8:84;;;:::i;:::-;2942:37322:83;-1:-1:-1;2942:37322:83;2591:8:84;2942:37322:83;;;2591:27:84;2942:37322:83;-1:-1:-1;2942:37322:83;2591:27:84;2942:37322:83;;;;2587:111:84;;2942:37322:83;-1:-1:-1;2942:37322:83;2591:8:84;2942:37322:83;;;2591:27:84;2942:37322:83;-1:-1:-1;2942:37322:83;2848:25:84;2942:37322:83;;2834:10:84;:39;2830:135;;16354:13:83;;2942:37322;16354:13;4266:47;16354:13;;:::i;2587:111:84:-;2641:46;;-1:-1:-1;2641:46:84;2942:37322:83;;;-1:-1:-1;2641:46:84;2942:37322:83;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;2942:37322:83;852:71:84;2942:37322:83;;;;-1:-1:-1;2942:37322:83;;;;;;;;;;;;;;;;4266:47;2942:37322;;;20027:6;2942:37322;;;;;:::i;:::-;;;;;;;:::i;:::-;832:76:56;;:::i;:::-;2084:8:84;;;:::i;:::-;20027:6:83;;:::i;2942:37322::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;2942:37322:83;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;4142:578:10:-;;;2942:37322:83;;;4236:16:10;4232:87;;2942:37322:83;4250:1:10;2942:37322:83;5824:7:10;2942:37322:83;;;;4250:1:10;2942:37322:83;;;21702:18;;:56;;;4142:578:10;21698:138:83;;2942:37322;21853:33;735:10:16;;;;21853:33:83;;:::i;:::-;2942:37322;4266:47;2942:37322;;4266:47;;;;2942:37322;;;;;;;;4266:47;;;;2942:37322;;;4609:21:10;;;;4605:109;;4142:578;;;:::o;4605:109::-;4653:50;4250:1;4653:50;;2942:37322:83;;;;;;4250:1:10;4653:50;21698:138:83;21781:44;4250:1:10;21781:44:83;5568:46;2942:37322;;;;-1:-1:-1;15263:27:10;21702:56:83;2942:37322;;4250:1:10;2942:37322:83;21725:8;2942:37322;;;21725:33;2942:37322;4250:1:10;2942:37322:83;21725:33;2942:37322;;;;21724:34;21702:56;;4232:87:10;4275:33;4250:1;4275:33;4250:1;4275:33;2942:37322:83;;4250:1:10;4275:33;2942:37322:83;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;8340:1254::-;2942:37322;8518:31;:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;8518:18;:31;2942:37322;;;;;;;;;8552:15;2942:37322;;8518:49;8514:106;;8691:27;8518:31;8691:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;8691:18;:27;2942:37322;;;;;;;8691:27;8687:83;;2942:37322;8894:41;:32;:18;8849:26;;;:::i;:::-;:30;;8894:18;2942:37322;;2591:8:84;2942:37322:83;;;;;;;8894:18;2942:37322;;;;;8894:32;2942:37322;;;;8894:41;2942:37322;8894:46;8890:382;;9372:76;;8518:31;8340:1254;:::o;9372:76::-;9406:31;9399:38;:::o;8890:382::-;9044:81;;9235:26;9228:33;:::o;9044:81::-;9082:28;9075:35;:::o;8687:83::-;8734:25;8741:18;8734:25;:::o;8514:106::-;8583:26;8590:19;8583:26;:::o;4984:233:10:-;;;;5120:7;;;;;:::i;:::-;1173:14:14;;1169:742;;4984:233:10;;;;;:::o;1169:742:14:-;1211:67;2942:37322:83;1211:67:14;2942:37322:83;;1211:67:14;;;;;2942:37322:83;1211:67:14;;735:10:16;1211:67:14;;;;:::i;:::-;;2942:37322:83;1190:1:14;2942:37322:83;;;1211:67:14;;1190:1;;1211:67;;;1169:742;-1:-1:-1;1207:694:14;;1518:383;;;:::i;:::-;2942:37322:83;;;;1568:18:14;;;1672:39;1190:1;1672:39;2942:37322:83;;;1211:67:14;2942:37322:83;;-1:-1:-1;15263:27:10;1564:323:14;1758:111;;1211:67;1758:111;;1207:694;2942:37322:83;;;;1325:51:14;1321:182;;1207:694;1169:742;;;;;;1321:182;1445:39;1190:1;1445:39;2942:37322:83;;1211:67:14;2942:37322:83;;-1:-1:-1;15263:27:10;1211:67:14;;;;;;;;;;;;;;;:::i;:::-;;;;;2942:37322:83;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;:::o;5183:2280::-;2942:37322;;5399:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;;;5533:12;;;5529:96;;5723:69;2942:37322;5657:32;:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;;5723:69;;;:::i;:::-;5831:18;6059:63;5831:37;:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;5831:18;:37;2942:37322;6059:63;;:::i;:::-;6196:51;6217:30;;;:::i;:::-;6196:51;;:::i;:::-;6251:28;;;;:::i;:::-;-1:-1:-1;6196:83:83;6192:122;;7077:30;6348:18;6324:65;6348:41;:32;:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;6324:65;2942:37322;;;6960:30;;;;;:::i;:::-;7077;;:::i;:::-;;;7148:31;6093:1;7148:18;:48;:18;2942:37322;;2591:8:84;2942:37322:83;;;;;;;7148:31;2942:37322;;;;7148:48;2942:37322;7073:374;5183:2280::o;7073:374::-;7380:18;:48;:31;6093:1;7380:18;;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;7380:48;2942:37322;;7073:374;5183:2280::o;6192:122::-;6295:8;;;;5399:26;6295:8;:::o;5529:96::-;5568:46;5399:26;5568:46;;2942:37322;;-1:-1:-1;15263:27:10;16212:241;2942:37322:83;-1:-1:-1;2942:37322:83;5824:7:10;2942:37322:83;;;;-1:-1:-1;2942:37322:83;;;16341:19:10;;;16337:88;;16434:12;16212:241;:::o;16337:88::-;16383:31;-1:-1:-1;16383:31:10;;2942:37322:83;;-1:-1:-1;16383:31:10;5973:169:84;2942:37322:83;-1:-1:-1;2942:37322:83;6037:8:84;2942:37322:83;;;6037:27:84;2942:37322:83;-1:-1:-1;2942:37322:83;6037:27:84;2942:37322:83;;;;6036:28:84;6032:104;;5973:169;:::o;6032:104::-;6087:38;-1:-1:-1;6087:38:84;;2942:37322:83;;-1:-1:-1;6087:38:84;24664:299:83;24771:30;;;:::i;:::-;2942:37322;-1:-1:-1;2942:37322:83;24804:8;2942:37322;;24804:37;2942:37322;-1:-1:-1;2942:37322:83;24804:37;2942:37322;;;;;;;;24858:98;2942:37322;-1:-1:-1;2942:37322:83;24804:8;2942:37322;;;24921:32;2942:37322;-1:-1:-1;2942:37322:83;24921:32;2942:37322;;;;24858:98;;:::i;1969:145:56:-;2942:37322:83;2045:8:56;2942:37322:83;2036:4:56;2028:25;2024:84;;1969:145::o;2024:84::-;2076:21;;;;;;2942:37322:83;;;;;;;;;;;;;;;:::o;24334:155::-;24429:53;24334:155;2942:37322;-1:-1:-1;2942:37322:83;24429:8;2942:37322;;24458:24;2942:37322;;-1:-1:-1;2942:37322:83;;;24458:24;;:::i;:::-;24429:53;;:::i;31786:1515::-;2942:37322;;;31908:11;;31904:94;;32079:29;;;:::i;:::-;2942:37322;;;32202:25;;;;32198:132;;32511:18;32492:45;32511:26;:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;32492:45;-1:-1:-1;32488:166:83;;2942:37322;33235:59;32681:18;33143:49;2942:37322;32681:25;:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;;32731:18;;2942:37322;32731:24;:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;;32934:36;:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;32934:18;:36;2942:37322;;;;;;;;;;;;;;32934:36;2942:37322;;;;;;;;;;32934:36;33037:22;;2942:37322;;;;33037:15;2942:37322;;;;;;;33037:22;2942:37322;;;;;;33143:49;:::i;:::-;2942:37322;;;;;;;;;;;;;;33235:59;;;;31786:1515::o;32488:166::-;32560:83;32608:18;;:26;:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;32608:26;32560:83;;31918:1;32560:83;2942:37322;;;;;;;32250:69;2942:37322;;;;;;;;32198:132;32250:69;31918:1;32250:69;;2942:37322;;;;;;;;;;;;;-1:-1:-1;15263:27:10;31904:94:83;31942:45;31918:1;31942:45;5568:46;2942:37322;;;;-1:-1:-1;15263:27:10;30991:691:83;2942:37322;-1:-1:-1;2942:37322:83;31092:8;2942:37322;;;31092:31;2942:37322;-1:-1:-1;2942:37322:83;31092:31;2942:37322;;;;;31126:15;2942:37322;;31092:49;31088:162;;31411:10;-1:-1:-1;31411:10:83;;:::i;:::-;31549:25;31092:31;31549:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;31549:25;5824:16:10;;;;2942:37322:83;;5824:7:10;2942:37322:83;;;;;;;5824:16:10;31642:22:83;31466:209;2942:37322;31642:22;;;:::i;:::-;2942:37322;;;;;;;;;;;;;;;31466:209;;;;30991:691::o;31088:162::-;31207:18;:31;31092;31207:18;31164:75;31207:18;2942:37322;;2591:8:84;2942:37322:83;;;;;;;31207:31;31164:75;-1:-1:-1;31164:75:83;;2942:37322;;;;;;;;;;;33405:563;2942:37322;-1:-1:-1;2942:37322:83;33526:8;2942:37322;;;-1:-1:-1;2942:37322:83;;;;33522:128;;33834:13;;;;:::i;:::-;2942:37322;;;;;;;;;33935:10;;33894:67;;2942:37322;;33894:67;33405:563::o;33522:128::-;33595:44;-1:-1:-1;33595:44:83;;2942:37322;;-1:-1:-1;33595:44:83;30126:761;2942:37322;;;30250:11;;30246:95;;30260:1;2942:37322;;;30366:8;2942:37322;;;;;30366:24;;;2942:37322;;;;30447:18;2942:37322;;;;;;;;;;;;;;;30668:78;30447:36;;;2942:37322;;;;;;;;;;;30447:36;30570:22;;2942:37322;;;;33037:15;2942:37322;;;;;;;30570:22;2942:37322;;;;;;30723:4;30699:10;;30668:78;;:::i;:::-;2942:37322;;;;;;;;30699:10;;30790:90;;2942:37322;;;;30790:90;2942:37322;30246:95;30284:46;;30260:1;30284:46;;2942:37322;;30260:1;30284:46;1618:188:9;;;;2942:37322:83;1745:53:9;1618:188;2942:37322:83;;;1745:53:9;2942:37322:83;1745:53:9;;;;2942:37322:83;1745:53:9;;;2942:37322:83;;;;;;;;;;;1745:53:9;;;;;;:::i;:::-;;:::i;2942:37322:83:-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;27401:2621::-;;;;;2942:37322;;;27704:20;;;27700:96;;2942:37322;;;;;27881:11;2942:37322;;;;;;;;;27863:29;;27859:116;;2942:37322;;;28007:41;2942:37322;28007:41;;;;;;;;;;;;;;27722:1;28007:41;;;27401:2621;2942:37322;28141:2;2942:37322;;;28125:18;28121:111;;2942:37322;28273:15;2942:37322;;;;;28391:26;;;:57;;;27401:2621;28387:139;;28633:14;;28663:29;28629:200;;28881:12;2942:37322;;;;:::i;:::-;;;;;;;28007:41;28963:359;;2942:37322;;;;;28963:359;;2942:37322;;;;28963:359;;;2942:37322;29023:4;28963:359;;;2942:37322;;;;28963:359;;;2942:37322;;28963:359;;;2942:37322;;;;28963:359;;2942:37322;;;28963:359;;;2942:37322;28963:359;;;27722:1;2942:37322;;28942:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;28942:18;2942:37322;;;;:::i;:::-;29415:8;;;;:::i;:::-;29023:4;2942:37322;;28881:12;2942:37322;;;;;;;29784:10;2942:37322;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29699:316;;2942:37322;;29699:316;27401:2621::o;28629:200::-;28794:24;;28629:200;;;28387:139;28471:44;27722:1;28471:44;28007:41;27722:1;28471:44;28391:57;2942:37322;;;;28421:27;28391:57;;28121:111;28166:55;27722:1;28166:55;2942:37322;;;1211:67:14;2942:37322:83;;-1:-1:-1;15263:27:10;28007:41:83;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;27859:116;27915:49;27722:1;27915:49;2942:37322;;1211:67:14;2942:37322:83;;-1:-1:-1;15263:27:10;27700:96:83;27747:38;27722:1;27747:38;;27722:1;27747:38;22192:618;2942:37322;;;22293:8;2942:37322;;;;;;;;22382:12;;;22378:51;;22459:22;;;:::i;:::-;22597:19;;;22593:64;;22782:21;;;;:::i;22593:64::-;22632:14;;:::o;22378:51::-;22410:8;;2942:37322;22410:8;:::o;3628:207:55:-;2942:37322:83;3706:11:55;2942:37322:83;;3684:10:55;;:34;3680:149;;3628:207;:::o;3680:149::-;3741:77;3706:11;3741:77;;2942:37322:83;3684:10:55;2942:37322:83;;;3706:11:55;3741:77;1219:160:9;1328:43;1219:160;2942:37322:83;;;1328:43:9;2942:37322:83;1328:43:9;;;;2942:37322:83;1328:43:9;;;2942:37322:83;;;;;1328:43:9;;;;;;;:::i;23391:890:83:-;2942:37322;;;23553:8;2942:37322;;;23553:31;2942:37322;;;23553:31;2942:37322;;;;23505:15;;23662:30;;;23658:69;;2942:37322;;23553:8;2942:37322;;;;;;;;;;23890:18;;;23886:57;;23505:15;2942:37322;;;;;;;;;;;;;;;23391:890;:::o;2942:37322::-;;;;;;;;;;;;;:::i;26158:1139::-;26343:70;26372:41;:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;26343:70;2942:37322;;;26343:70;26339:180;;26560:15;27239:18;:51;26560:15;2942:37322;26560:15;2942:37322;26674:18;2942:37322;;26674:31;:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;;;26674:48;26670:511;;26158:1139;27239:18;2942:37322;;2591:8:84;2942:37322:83;;;;;;;26670:511;27122:48;26766:30;;;;:::i;:::-;26892:21;26888:171;;26670:511;27122:18;26674:31;27122:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;27122:48;26670:511;;;26888:171;26986:58;:37;:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;26986:58;2942:37322;;26888:171;;;26339:180;26436:72;26372:32;26436:72;;2942:37322;;;;;;-1:-1:-1;15263:27:10;25013:314:83;2942:37322;;;25116:8;2942:37322;;25173:22;2942:37322;;;;;;25173:22;;:::i;:::-;25210:19;;;;;;;2942:37322;;;;;;;25245:26;:::o;2942:37322::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;927:288:89:-;1038:2;2942:37322:83;;;1026:14:89;1022:58;;1038:2;2942:37322:83;;;1136:2:89;2942:37322:83;;927:288:89:o;1022:58::-;1056:13;6093:1:83;1056:13:89;:::o;927:288::-;;1038:2;2942:37322:83;;;1026:14:89;1022:58;;1038:2;2942:37322:83;;;1136:2:89;2942:37322:83;;;927:288:89:o;2942:37322:83:-;;;;:::o;:::-;;;;;;;;;;36108:4154;36278:147;;:33;2942:37322;36278:11;2942:37322;;;;;36278:33;36389:25;36336:33;36389:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;36389:25;2942:37322;;;36278:147;;;;;2942:37322;36278:147;;;;;2942:37322;;;;;;;;;4842:33;2942:37322;;;;;;;36278:147;;;;;;;;;;:11;:147;;;36108:4154;36454:9;;;36534:19;36530:118;;2942:37322;;;;36713:11;;;36709:96;;2942:37322;;;36873:16;;;36869:104;;5824:16:10;;;2942:37322:83;;5824:7:10;2942:37322:83;;;;;;;5824:16:10;2942:37322:83;;;;37187:15;;;:75;;;;36108:4154;37183:213;;;;2942:37322;37428:32;:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;;37534:30;:70;:30;;;:::i;:::-;5824:7:10;37567:18:83;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;37567:18;:37;2942:37322;37534:70;;:::i;:::-;37634:57;;;;;:::i;:::-;37766:18;:26;:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;37766:26;37802;2942:37322;;;;37843:19;37839:326;37843:19;;;37984:28;37839:326;2942:37322;;;38262:27;;38258:130;;38461:46;39978:36;39940:34;40062:193;38461:46;;39760:45;38461:46;39543:24;37428:32;38461:46;;39430:36;39543:18;38461:46;2942:37322;38461:46;;;39933:82;38461:46;;39940:74;38461:46;;:::i;:::-;38817:18;5824:7:10;38817:18:83;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;38817:18;:37;2942:37322;38801:53;;5824:7:10;;38874:18:83;5824:7:10;38874:18:83;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;38874:18;:37;2942:37322;;;;;;38797:569;39430:36;:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;39430:18;2942:37322;;;;;;;;39430:36;2942:37322;;2591:8:84;2942:37322:83;;;;;;;39543:24;39654:22;;;2942:37322;;;;33037:15;2942:37322;;;;;;;39654:22;2942:37322;;;;;;39760:45;;:::i;:::-;39952:22;;;:::i;:::-;39940:34;;:::i;:::-;39988:18;:26;:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;39940:74;;39933:82;:::i;:::-;2942:37322;;;40198:10;2942:37322;;;;;;;;;;;;;;;;;;40062:193;2942:37322;38797:569;2942:37322;5824:7:10;39154:18:83;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;39154:18;:37;2942:37322;39294:57;2942:37322;39335:15;2942:37322;36336:33;39294:18;;2942:37322;;2591:8:84;2942:37322:83;;;;;;;39294:57;38797:569;;38258:130;38312:65;36278:11;38312:65;32250:69;2942:37322;;;;;;;;;;;;;-1:-1:-1;15263:27:10;37839:326:83;38133:21;;;:::i;:::-;37839:326;;37183:213;-1:-1:-1;37285:100:83;36278:11;37285:100;36278:147;2942:37322;;;;37364:10;2942:37322;;;;;;;-1:-1:-1;15263:27:10;37187:75:83;37206:56;23136:10;;;23093:75;23136:10;;23093:75;;:::i;37206:56::-;37187:75;;;;36869:104;36912:50;36278:11;36912:50;5568:46;2942:37322;;;;-1:-1:-1;15263:27:10;36709:96:83;36747:47;36278:11;36747:47;5568:46;2942:37322;;;;-1:-1:-1;15263:27:10;36530:118:83;36576:61;36278:11;36576:61;36454:9;36278:147;2942:37322;;;;-1:-1:-1;15263:27:10;36278:147:83;;;;;;;;;;;;;;:::i;:::-;;;;368:290:89;;481:2;2942:37322:83;;;469:14:89;465:58;;481:2;2942:37322:83;;;579:2:89;2942:37322:83;;;;;;;368:290:89;:::o;14794:662:10:-;15420:24;14794:662;2942:37322:83;;15420:15:10;2942:37322:83;;;;;;;15420:24:10;2942:37322:83;;;;;;14794:662:10:o;8861:795::-;2942:37322:83;-1:-1:-1;2942:37322:83;5824:7:10;2942:37322:83;;;;-1:-1:-1;2942:37322:83;;;;;;;9054:86:10;;8861:795;2942:37322:83;;;;9184:18:10;9180:256;;8861:795;9563:21;2942:37322:83;;;9450:16:10;;9446:107;;8861:795;9563:16;;2942:37322:83;;5824:7:10;2942:37322:83;;;;;;;9563:21:10;9600:27;-1:-1:-1;9600:27:10;;8861:795;:::o;9446:107::-;9510:13;;2942:37322:83;;;;9391:9:10;2942:37322:83;;;;;;;9510:13:10;9527:1;2942:37322:83;;;;;9446:107:10;;9180:256;9342:5;;;:::i;:::-;9391:15;;2942:37322:83;;;;9391:9:10;2942:37322:83;;;;;;;9391:15:10;2942:37322:83;;;;;;9180:256:10;;9054:86;7217:38;;;;;:::i;:::-;9054:86;7212:255;2942:37322:83;-1:-1:-1;2942:37322:83;;;;;7321:31:10;;-1:-1:-1;7321:31:10;;2942:37322:83;;-1:-1:-1;7321:31:10;7271:186;2942:37322:83;7398:44:10;;-1:-1:-1;7398:44:10;2942:37322:83;7398:44:10;2942:37322:83;;;;-1:-1:-1;7398:44:10;8370:720:9;;-1:-1:-1;8507:421:9;8370:720;8507:421;;;;;;;;;;;;-1:-1:-1;8507:421:9;;8942:15;;2942:37322:83;;;;8960:26:9;:31;8942:68;8938:146;;8370:720;:::o;8938:146::-;2942:37322:83;9033:40:9;;-1:-1:-1;9033:40:9;2942:37322:83;9033:40:9;2942:37322:83;;-1:-1:-1;9033:40:9;8942:68;9009:1;8994:16;;8942:68;;9978:327:10;2942:37322:83;;;10045:16:10;10041:87;;2942:37322:83;10059:1:10;2942:37322:83;5824:7:10;2942:37322:83;;;;10059:1:10;2942:37322:83;;;21702:18;;:56;;;9978:327:10;21698:138:83;;21853:33;4266:47;;21853:33;10059:1:10;21853:33:83;2942:37322;21853:33;;:::i;:::-;2942:37322;;;;;;;;;;;;;;4266:47;;;;2942:37322;10203:96:10;;9978:327::o;10203:96::-;10257:31;10059:1;10257:31;10059:1;10257:31;2942:37322:83;;10059:1:10;10257:31;21702:56:83;2942:37322;;10059:1:10;2942:37322:83;21725:8;2942:37322;;;21725:33;2942:37322;10059:1:10;2942:37322:83;21725:33;2942:37322;;;;21724:34;21702:56;;9264:218:22;2942:37322:83;9344:25:22;;9340:105;;2942:37322:83;;9264:218:22;:::o;9340:105::-;9392:42;;;9423:3;9392:42;2942:37322:83;;;;9392:42:22;;22967:208:83;23093:75;22967:208;23136:10;23093:75;6401:272:10;;2942:37322:83;;;6539:21:10;;;;:127;;;;6401:272;6520:146;;;;6401:272;:::o;6539:127::-;2942:37322:83;;6577:16:10;;;;-1:-1:-1;2942:37322:83;;;;6577:52:10;;;;6539:127;6577:88;;;;;;6539:127;;;;;;;;;6577:88;2942:37322:83;;;6558:1:10;2942:37322:83;6059:15:10;2942:37322:83;;;;6558:1:10;2942:37322:83;;;6633:32:10;6577:88;;;;:52;2942:37322:83;;;;;4038:35:10;2942:37322:83;6558:1:10;2942:37322:83;4038:18:10;2942:37322:83;;;6558:1:10;2942:37322:83;;;;;;;;;;;;;4038:35:10;2942:37322:83;;6577:52:10;;;;",
    "linkReferences": {},
    "immutableReferences": { "15036": [{ "start": 15642, "length": 32 }] }
  },
  "methodIdentifiers": {
    "adjustRatePerSecond(uint256,uint128)": "a8a482a6",
    "aggregateAmount(address)": "ec01da3b",
    "approve(address,uint256)": "095ea7b3",
    "balanceOf(address)": "70a08231",
    "batch(bytes[])": "1e897afb",
    "calculateMinFeeWei(uint256)": "cca138e5",
    "comptroller()": "5fe3b567",
    "coveredDebtOf(uint256)": "42e3e23d",
    "create(address,address,uint128,uint40,address,bool)": "5f2a0beb",
    "createAndDeposit(address,address,uint128,uint40,address,bool,uint128)": "36af277f",
    "depletionTimeOf(uint256)": "d4b80884",
    "deposit(uint256,uint128,address,address)": "b61f7583",
    "depositAndPause(uint256,uint128)": "bcbd019e",
    "getApproved(uint256)": "081812fc",
    "getBalance(uint256)": "1e010439",
    "getRatePerSecond(uint256)": "80448da3",
    "getRecipient(uint256)": "6d0cee75",
    "getSender(uint256)": "b971302a",
    "getSnapshotDebtScaled(uint256)": "450ac908",
    "getSnapshotTime(uint256)": "eb5710d8",
    "getStream(uint256)": "894e9a0d",
    "getToken(uint256)": "e4b50cb8",
    "getTokenDecimals(uint256)": "a7de07cd",
    "isApprovedForAll(address,address)": "e985e9c5",
    "isStream(uint256)": "b8a3be66",
    "isTransferable(uint256)": "b2564569",
    "isVoided(uint256)": "569f4c59",
    "name()": "06fdde03",
    "nativeToken()": "e1758bd8",
    "nextStreamId()": "1e99d569",
    "nftDescriptor()": "44267570",
    "ongoingDebtScaledOf(uint256)": "7ddf9228",
    "ownerOf(uint256)": "6352211e",
    "pause(uint256)": "136439dd",
    "recover(address,address)": "648bf774",
    "refund(uint256,uint128)": "81632a86",
    "refundAndPause(uint256,uint128)": "379d871a",
    "refundMax(uint256)": "0c699624",
    "refundableAmountOf(uint256)": "1400ecec",
    "restart(uint256,uint128)": "ebb6f79a",
    "restartAndDeposit(uint256,uint128,uint128)": "1f0cce58",
    "safeTransferFrom(address,address,uint256)": "42842e0e",
    "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
    "setApprovalForAll(address,bool)": "a22cb465",
    "setComptroller(address)": "8bad38dd",
    "setNFTDescriptor(address)": "7cad6cd1",
    "setNativeToken(address)": "6da1e102",
    "statusOf(uint256)": "ad35efd4",
    "supportsInterface(bytes4)": "01ffc9a7",
    "symbol()": "95d89b41",
    "tokenURI(uint256)": "c87b56dd",
    "totalDebtOf(uint256)": "08b87923",
    "transferFeesToComptroller()": "78f82ce7",
    "transferFrom(address,address,uint256)": "23b872dd",
    "transferFromPayable(address,address,uint256)": "d90e27d7",
    "transferTokens(address,address,uint128)": "28f8b77d",
    "uncoveredDebtOf(uint256)": "bc7a2d6c",
    "void(uint256)": "5ea2145b",
    "withdraw(uint256,address,uint128)": "fdd46d60",
    "withdrawMax(uint256,address)": "ea5ead19",
    "withdrawableAmountOf(uint256)": "d975dfed"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.29+commit.ab55807c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialComptroller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialNFTDescriptor\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"comptroller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"Comptrollerable_CallerNotComptroller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousComptroller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newComptroller\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"minimalInterfaceId\",\"type\":\"bytes4\"}],\"name\":\"Comptrollerable_UnsupportedInterfaceId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelegateCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"SablierFlowState_Null\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"SablierFlowState_StreamPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"SablierFlowState_StreamVoided\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"SablierFlowState_Unauthorized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nativeToken\",\"type\":\"address\"}],\"name\":\"SablierFlow_CreateNativeToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SablierFlow_CreateRatePerSecondZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"SablierFlow_DepositAmountZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feePaid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minFeeWei\",\"type\":\"uint256\"}],\"name\":\"SablierFlow_InsufficientFeePayment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"availableAmount\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"SablierFlow_InvalidCalculation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SablierFlow_InvalidTokenDecimals\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nativeToken\",\"type\":\"address\"}],\"name\":\"SablierFlow_NativeTokenAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SablierFlow_NativeTokenZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"SablierFlow_NewRatePerSecondZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"streamRecipient\",\"type\":\"address\"}],\"name\":\"SablierFlow_NotStreamRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"streamSender\",\"type\":\"address\"}],\"name\":\"SablierFlow_NotStreamSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"SablierFlow_NotTransferable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"withdrawableAmount\",\"type\":\"uint128\"}],\"name\":\"SablierFlow_Overdraw\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"UD21x18\",\"name\":\"ratePerSecond\",\"type\":\"uint128\"}],\"name\":\"SablierFlow_RatePerSecondNotDifferent\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"SablierFlow_RefundAmountZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"refundAmount\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"refundableAmount\",\"type\":\"uint128\"}],\"name\":\"SablierFlow_RefundOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SablierFlow_SenderZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"SablierFlow_StreamBalanceZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"SablierFlow_StreamNotPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"snapshotTime\",\"type\":\"uint40\"}],\"name\":\"SablierFlow_StreamPending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"SablierFlow_Unauthorized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"SablierFlow_WithdrawAmountZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"SablierFlow_WithdrawToZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"SablierFlow_WithdrawalAddressNotRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDebt\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"UD21x18\",\"name\":\"oldRatePerSecond\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"UD21x18\",\"name\":\"newRatePerSecond\",\"type\":\"uint128\"}],\"name\":\"AdjustFlowStream\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_fromTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_toTokenId\",\"type\":\"uint256\"}],\"name\":\"BatchMetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"UD21x18\",\"name\":\"ratePerSecond\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint40\",\"name\":\"snapshotTime\",\"type\":\"uint40\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"transferable\",\"type\":\"bool\"}],\"name\":\"CreateFlowStream\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"funder\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"DepositFlowStream\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"MetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDebt\",\"type\":\"uint256\"}],\"name\":\"PauseFlowStream\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"RefundFromFlowStream\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"UD21x18\",\"name\":\"ratePerSecond\",\"type\":\"uint128\"}],\"name\":\"RestartFlowStream\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract ISablierComptroller\",\"name\":\"oldComptroller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ISablierComptroller\",\"name\":\"newComptroller\",\"type\":\"address\"}],\"name\":\"SetComptroller\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISablierComptroller\",\"name\":\"comptroller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IFlowNFTDescriptor\",\"name\":\"oldNFTDescriptor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IFlowNFTDescriptor\",\"name\":\"newNFTDescriptor\",\"type\":\"address\"}],\"name\":\"SetNFTDescriptor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISablierComptroller\",\"name\":\"comptroller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"nativeToken\",\"type\":\"address\"}],\"name\":\"SetNativeToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"comptroller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"}],\"name\":\"TransferFeesToComptroller\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalDebt\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"writtenOffDebt\",\"type\":\"uint256\"}],\"name\":\"VoidFlowStream\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"withdrawAmount\",\"type\":\"uint128\"}],\"name\":\"WithdrawFromFlowStream\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"UD21x18\",\"name\":\"newRatePerSecond\",\"type\":\"uint128\"}],\"name\":\"adjustRatePerSecond\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"aggregateAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"calls\",\"type\":\"bytes[]\"}],\"name\":\"batch\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"calculateMinFeeWei\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"minFeeWei\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"comptroller\",\"outputs\":[{\"internalType\":\"contract ISablierComptroller\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"coveredDebtOf\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"coveredDebt\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"UD21x18\",\"name\":\"ratePerSecond\",\"type\":\"uint128\"},{\"internalType\":\"uint40\",\"name\":\"startTime\",\"type\":\"uint40\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"transferable\",\"type\":\"bool\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"UD21x18\",\"name\":\"ratePerSecond\",\"type\":\"uint128\"},{\"internalType\":\"uint40\",\"name\":\"startTime\",\"type\":\"uint40\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"transferable\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"createAndDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"depletionTimeOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"depletionTime\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"depositAndPause\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"balance\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"getRatePerSecond\",\"outputs\":[{\"internalType\":\"UD21x18\",\"name\":\"ratePerSecond\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"getSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"getSnapshotDebtScaled\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotDebtScaled\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"getSnapshotTime\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"snapshotTime\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"getStream\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"balance\",\"type\":\"uint128\"},{\"internalType\":\"UD21x18\",\"name\":\"ratePerSecond\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint40\",\"name\":\"snapshotTime\",\"type\":\"uint40\"},{\"internalType\":\"bool\",\"name\":\"isStream\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isTransferable\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isVoided\",\"type\":\"bool\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"snapshotDebtScaled\",\"type\":\"uint256\"}],\"internalType\":\"struct Flow.Stream\",\"name\":\"stream\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"getToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"getTokenDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"isStream\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"isTransferable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"isVoided\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nativeToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextStreamId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nftDescriptor\",\"outputs\":[{\"internalType\":\"contract IFlowNFTDescriptor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"ongoingDebtScaledOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ongoingDebtScaled\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"recover\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"refund\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"refundAndPause\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"refundMax\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"refundedAmount\",\"type\":\"uint128\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"refundableAmountOf\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"refundableAmount\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"UD21x18\",\"name\":\"ratePerSecond\",\"type\":\"uint128\"}],\"name\":\"restart\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"UD21x18\",\"name\":\"ratePerSecond\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"restartAndDeposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISablierComptroller\",\"name\":\"newComptroller\",\"type\":\"address\"}],\"name\":\"setComptroller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IFlowNFTDescriptor\",\"name\":\"newNFTDescriptor\",\"type\":\"address\"}],\"name\":\"setNFTDescriptor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newNativeToken\",\"type\":\"address\"}],\"name\":\"setNativeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"statusOf\",\"outputs\":[{\"internalType\":\"enum Flow.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"totalDebtOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalDebt\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transferFeesToComptroller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"transferFromPayable\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"transferTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"uncoveredDebtOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"uncoveredDebt\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"void\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawMax\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"withdrawnAmount\",\"type\":\"uint128\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"withdrawableAmountOf\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"withdrawableAmount\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"events\":{\"AdjustFlowStream(uint256,uint256,uint128,uint128)\":{\"params\":{\"newRatePerSecond\":\"The new rate per second, denoted as a fixed-point number where 1e18 is 1 token per second.\",\"oldRatePerSecond\":\"The old rate per second, denoted as a fixed-point number where 1e18 is 1 token per second.\",\"streamId\":\"The ID of the stream.\",\"totalDebt\":\"The total debt at the time of the update, denoted in token's decimals.\"}},\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"BatchMetadataUpdate(uint256,uint256)\":{\"details\":\"This event emits when the metadata of a range of tokens is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFTs.\"},\"CreateFlowStream(uint256,address,address,address,uint128,uint40,address,bool)\":{\"params\":{\"creator\":\"The address creating the stream.\",\"ratePerSecond\":\"The amount by which the debt is increasing every second, denoted as a fixed-point number where 1e18 is 1 token per second.\",\"recipient\":\"The address receiving the tokens, as well as the NFT owner.\",\"sender\":\"The address streaming the tokens, which is able to adjust and pause the stream.\",\"snapshotTime\":\"The timestamp when the stream begins accumulating debt.\",\"streamId\":\"The ID of the newly created stream.\",\"token\":\"The contract address of the ERC-20 token to be streamed.\",\"transferable\":\"Boolean indicating whether the stream NFT is transferable or not.\"}},\"DepositFlowStream(uint256,address,uint128)\":{\"params\":{\"amount\":\"The amount of tokens deposited into the stream, denoted in token's decimals.\",\"funder\":\"The address that made the deposit.\",\"streamId\":\"The ID of the stream.\"}},\"MetadataUpdate(uint256)\":{\"details\":\"This event emits when the metadata of a token is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFT.\"},\"PauseFlowStream(uint256,address,address,uint256)\":{\"params\":{\"recipient\":\"The stream's recipient address.\",\"sender\":\"The stream's sender address.\",\"streamId\":\"The ID of the stream.\",\"totalDebt\":\"The amount of tokens owed by the sender to the recipient, denoted in token's decimals.\"}},\"RefundFromFlowStream(uint256,address,uint128)\":{\"params\":{\"amount\":\"The amount of tokens refunded to the sender, denoted in token's decimals.\",\"sender\":\"The stream's sender address.\",\"streamId\":\"The ID of the stream.\"}},\"RestartFlowStream(uint256,address,uint128)\":{\"params\":{\"ratePerSecond\":\"The amount by which the debt is increasing every second, denoted as a fixed-point number where 1e18 is 1 token per second.\",\"sender\":\"The stream's sender address.\",\"streamId\":\"The ID of the stream.\"}},\"SetNFTDescriptor(address,address,address)\":{\"params\":{\"comptroller\":\"The address of the current comptroller.\",\"newNFTDescriptor\":\"The address of the new NFT descriptor contract.\",\"oldNFTDescriptor\":\"The address of the old NFT descriptor contract.\"}},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"},\"VoidFlowStream(uint256,address,address,address,uint256,uint256)\":{\"params\":{\"caller\":\"The address that performed the void, which can be the sender, recipient or an approved operator.\",\"newTotalDebt\":\"The new total debt, denoted in token's decimals.\",\"recipient\":\"The stream's recipient address.\",\"sender\":\"The stream's sender address.\",\"streamId\":\"The ID of the stream.\",\"writtenOffDebt\":\"The amount of debt written off by the caller, denoted in token's decimals.\"}},\"WithdrawFromFlowStream(uint256,address,address,address,uint128)\":{\"params\":{\"caller\":\"The address that performed the withdrawal, which can be the recipient or an approved operator.\",\"streamId\":\"The ID of the stream.\",\"to\":\"The address that received the withdrawn tokens.\",\"token\":\"The contract address of the ERC-20 token that was withdrawn.\",\"withdrawAmount\":\"The amount withdrawn to the recipient, denoted in token's decimals.\"}}},\"kind\":\"dev\",\"methods\":{\"adjustRatePerSecond(uint256,uint128)\":{\"details\":\"Emits a {AdjustFlowStream} and {MetadataUpdate} event. Notes: - If the snapshot time is not in the future, it updates both the snapshot time and snapshot debt. Requirements: - Must not be delegate called. - `streamId` must not reference a null, paused, or voided stream. - `msg.sender` must be the stream's sender. - `newRatePerSecond` must be greater than zero and must be different from the current rate per second.\",\"params\":{\"newRatePerSecond\":\"The new rate per second, denoted as a fixed-point number where 1e18 is 1 token per second.\",\"streamId\":\"The ID of the stream to adjust.\"}},\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"batch(bytes[])\":{\"details\":\"Since `msg.value` can be reused across calls, be VERY CAREFUL when using it. Refer to https://paradigm.xyz/2021/08/two-rights-might-make-a-wrong for more information.\",\"params\":{\"calls\":\"An array of inputs for each call.\"},\"returns\":{\"results\":\"An array of results from each call. Empty when the calls do not return anything.\"}},\"calculateMinFeeWei(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"constructor\":{\"params\":{\"initialComptroller\":\"The address of the initial comptroller contract.\",\"initialNFTDescriptor\":\"The address of the initial NFT descriptor.\"}},\"coveredDebtOf(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"create(address,address,uint128,uint40,address,bool)\":{\"details\":\"Emits a {CreateFlowStream} and {MetadataUpdate} event. Requirements: - Must not be delegate called. - `sender` must not be the zero address. - `recipient` must not be the zero address. - If `startTime` is in the future, the `ratePerSecond` must be greater than zero. - The `token` must not be the native token. - The `token`'s decimals must be less than or equal to 18.\",\"params\":{\"ratePerSecond\":\"The amount by which the debt is increasing every second, denoted as a fixed-point number where 1e18 is 1 token per second.\",\"recipient\":\"The address receiving the tokens.\",\"sender\":\"The address streaming the tokens, which is able to adjust and pause the stream. It doesn't have to be the same as `msg.sender`.\",\"startTime\":\"The timestamp when the stream starts. A sentinel value of zero means the stream will be created with the snapshot time as `block.timestamp`.\",\"token\":\"The contract address of the ERC-20 token to be streamed.\",\"transferable\":\"Boolean indicating if the stream NFT is transferable.\"},\"returns\":{\"streamId\":\"The ID of the newly created stream.\"}},\"createAndDeposit(address,address,uint128,uint40,address,bool,uint128)\":{\"details\":\"Emits a {Transfer}, {CreateFlowStream}, {DepositFlowStream} and {MetadataUpdate} event. Notes: - Refer to the notes in {create} and {deposit}. Requirements: - Refer to the requirements in {create} and {deposit}.\",\"params\":{\"amount\":\"The deposit amount, denoted in token's decimals.\",\"ratePerSecond\":\"The amount by which the debt is increasing every second, denoted as a fixed-point number where 1e18 is 1 token per second.\",\"recipient\":\"The address receiving the tokens.\",\"sender\":\"The address streaming the tokens. It doesn't have to be the same as `msg.sender`.\",\"startTime\":\"The timestamp when the stream starts. A sentinel value of zero means the stream will be created with the snapshot time as `block.timestamp`.\",\"token\":\"The contract address of the ERC-20 token to be streamed.\",\"transferable\":\"Boolean indicating if the stream NFT is transferable.\"},\"returns\":{\"streamId\":\"The ID of the newly created stream.\"}},\"depletionTimeOf(uint256)\":{\"details\":\"Reverts on the following conditions: - If `streamId` references a paused or a null stream. - If stream balance is zero.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"deposit(uint256,uint128,address,address)\":{\"details\":\"Emits a {Transfer}, {DepositFlowStream} and {MetadataUpdate} event. Requirements: - Must not be delegate called. - `streamId` must not reference a null or a voided stream. - `amount` must be greater than zero. - `sender` and `recipient` must match the stream's sender and recipient addresses.\",\"params\":{\"amount\":\"The deposit amount, denoted in token's decimals.\",\"recipient\":\"The stream's recipient address.\",\"sender\":\"The stream's sender address.\",\"streamId\":\"The ID of the stream to deposit to.\"}},\"depositAndPause(uint256,uint128)\":{\"details\":\"Emits a {Transfer}, {DepositFlowStream}, {PauseFlowStream} and {MetadataUpdate} event. Notes: - Refer to the notes in {deposit} and {pause}. Requirements: - Refer to the requirements in {deposit} and {pause}.\",\"params\":{\"amount\":\"The deposit amount, denoted in token's decimals.\",\"streamId\":\"The ID of the stream to deposit to, and then pause.\"}},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"getBalance(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"getRatePerSecond(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The ID of the stream to make the query for.\"}},\"getRecipient(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"getSender(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"getSnapshotDebtScaled(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"getSnapshotTime(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The ID of the stream to make the query for.\"}},\"getStream(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"getToken(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The ID of the stream to make the query for.\"}},\"getTokenDecimals(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The ID of the stream to make the query for.\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"isStream(uint256)\":{\"details\":\"Does not revert if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"isTransferable(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"isVoided(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ongoingDebtScaledOf(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"pause(uint256)\":{\"details\":\"Emits a {PauseFlowStream} and {MetadataUpdate} event. Notes: - It updates snapshot debt and snapshot time. - It sets the rate per second to zero. Requirements: - Must not be delegate called. - `streamId` must not reference a null, pending or paused stream. - `msg.sender` must be the stream's sender.\",\"params\":{\"streamId\":\"The ID of the stream to pause.\"}},\"recover(address,address)\":{\"details\":\"Notes: - The surplus amount is defined as the difference between the total balance of the contract for the provided ERC-20 token and the sum of balances of all streams created using the same ERC-20 token. Requirements: - `msg.sender` must be the comptroller contract.\",\"params\":{\"to\":\"The address to send the surplus amount.\",\"token\":\"The contract address of the ERC-20 token to recover for.\"}},\"refund(uint256,uint128)\":{\"details\":\"Emits a {Transfer}, {RefundFromFlowStream} and {MetadataUpdate} event. Requirements: - Must not be delegate called. - `streamId` must not reference a null stream. - `msg.sender` must be the sender. - `amount` must be greater than zero and must not exceed the refundable amount.\",\"params\":{\"amount\":\"The amount to refund, denoted in token's decimals.\",\"streamId\":\"The ID of the stream to refund from.\"}},\"refundAndPause(uint256,uint128)\":{\"details\":\"Emits a {Transfer}, {RefundFromFlowStream}, {PauseFlowStream} and {MetadataUpdate} event. Notes: - Refer to the notes in {pause}. Requirements: - Refer to the requirements in {refund} and {pause}.\",\"params\":{\"amount\":\"The amount to refund, denoted in token's decimals.\",\"streamId\":\"The ID of the stream to refund from and then pause.\"}},\"refundMax(uint256)\":{\"details\":\"Emits a {Transfer}, {RefundFromFlowStream} and {MetadataUpdate} event. Requirements: - Refer to the requirements in {refund}.\",\"params\":{\"streamId\":\"The ID of the stream to refund from.\"},\"returns\":{\"refundedAmount\":\"The amount refunded to the stream sender, denoted in token's decimals.\"}},\"refundableAmountOf(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"restart(uint256,uint128)\":{\"details\":\"Emits a {RestartFlowStream} and {MetadataUpdate} event. Notes: - It updates snapshot debt and snapshot time. Requirements: - Must not be delegate called. - `streamId` must not reference a null stream, must be paused, and must not be voided. - `msg.sender` must be the stream's sender. - `ratePerSecond` must be greater than zero.\",\"params\":{\"ratePerSecond\":\"The amount by which the debt is increasing every second, denoted as a fixed-point number where 1e18 is 1 token per second.\",\"streamId\":\"The ID of the stream to restart.\"}},\"restartAndDeposit(uint256,uint128,uint128)\":{\"details\":\"Emits a {RestartFlowStream}, {Transfer}, {DepositFlowStream} and {MetadataUpdate} event. Notes: - Refer to the notes in {restart} and {deposit}. Requirements: - `amount` must be greater than zero. - Refer to the requirements in {restart}.\",\"params\":{\"amount\":\"The deposit amount, denoted in token's decimals.\",\"ratePerSecond\":\"The amount by which the debt is increasing every second, denoted as a fixed-point number where 1e18 is 1 token per second.\",\"streamId\":\"The ID of the stream to restart.\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setComptroller(address)\":{\"details\":\"Emits a {SetComptroller} event. Requirements: - `msg.sender` must be the current comptroller. - The new comptroller must return `true` from {supportsInterface} with the comptroller's minimal interface ID which is defined as the XOR of the following function selectors: 1. {calculateMinFeeWeiFor} 2. {convertUSDFeeToWei} 3. {execute} 4. {getMinFeeUSDFor}\",\"params\":{\"newComptroller\":\"The address of the new comptroller contract.\"}},\"setNFTDescriptor(address)\":{\"details\":\"Emits a {SetNFTDescriptor} and {BatchMetadataUpdate} event. Notes: - Does not revert if the NFT descriptor is the same. Requirements: - `msg.sender` must be the comptroller contract.\",\"params\":{\"newNFTDescriptor\":\"The address of the new NFT descriptor contract.\"}},\"setNativeToken(address)\":{\"details\":\"For more information, see the documentation for {nativeToken}. Emits a {SetNativeToken} event. Requirements: - `msg.sender` must be the comptroller contract. - `newNativeToken` must not be the zero address. - The native token must not be already set.\",\"params\":{\"newNativeToken\":\"The address of the native token.\"}},\"statusOf(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream. Integrators should exercise caution when depending on the return value of this function as streams can be paused and resumed at any moment.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"totalDebtOf(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"transferFeesToComptroller()\":{\"details\":\"Emits a {TransferFeesToComptroller} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferFromPayable(address,address,uint256)\":{\"params\":{\"from\":\"The owner of the stream ID.\",\"streamId\":\"The ID of the stream NFT to transfer.\",\"to\":\"The address of the new owner of the stream ID.\"}},\"transferTokens(address,address,uint128)\":{\"details\":\"Emits a {Transfer} event. Requirements: - `msg.sender` must have approved this contract to spend at least `amount` tokens.\",\"params\":{\"amount\":\"The amount of tokens to transfer, denoted in token's decimals.\",\"to\":\"The address receiving the tokens.\",\"token\":\"The contract address of the ERC-20 token to be transferred.\"}},\"uncoveredDebtOf(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"void(uint256)\":{\"details\":\"Emits a {VoidFlowStream} and {MetadataUpdate} event. Notes: - It sets snapshot time to the `block.timestamp`. - Voiding an insolvent stream sets the snapshot debt to the stream's balance making the uncovered debt to become zero. - Voiding a solvent stream updates the snapshot debt by adding up ongoing debt. - It sets the rate per second to zero. - A voided stream cannot be restarted. Requirements: - Must not be delegate called. - `streamId` must not reference a null or a voided stream. - `msg.sender` must either be the stream's sender, recipient or an approved third party.\",\"params\":{\"streamId\":\"The ID of the stream to void.\"}},\"withdraw(uint256,address,uint128)\":{\"details\":\"Emits a {Transfer}, {WithdrawFromFlowStream} and {MetadataUpdate} event. Notes: - It sets the snapshot time to the `block.timestamp` if `amount` is greater than snapshot debt. Requirements: - Must not be delegate called. - `streamId` must not reference a null stream. - `to` must not be the zero address. - `to` must be the recipient if `msg.sender` is not the stream's recipient or an approved third party. - `amount` must  be greater than zero and must not exceed the withdrawable amount. - `msg.value` must be greater than or equal to the minimum fee in wei for the stream's sender.\",\"params\":{\"amount\":\"The amount to withdraw, denoted in token's decimals.\",\"streamId\":\"The ID of the stream to withdraw from.\",\"to\":\"The address receiving the withdrawn tokens.\"}},\"withdrawMax(uint256,address)\":{\"details\":\"Emits a {Transfer}, {WithdrawFromFlowStream} and {MetadataUpdate} event. Notes: - Refer to the notes in {withdraw}. Requirements: - Refer to the requirements in {withdraw}.\",\"params\":{\"streamId\":\"The ID of the stream to withdraw from.\",\"to\":\"The address receiving the withdrawn tokens.\"},\"returns\":{\"withdrawnAmount\":\"The amount withdrawn to the recipient, denoted in token's decimals.\"}},\"withdrawableAmountOf(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"},\"returns\":{\"withdrawableAmount\":\"The amount that the recipient can withdraw.\"}}},\"title\":\"SablierFlow\",\"version\":1},\"userdoc\":{\"errors\":{\"Comptrollerable_CallerNotComptroller(address,address)\":[{\"notice\":\"Thrown when `msg.sender` is not the comptroller.\"}],\"Comptrollerable_UnsupportedInterfaceId(address,address,bytes4)\":[{\"notice\":\"Thrown when the new comptroller does not support the minimal interface ID from the previous comptroller.\"}],\"DelegateCall()\":[{\"notice\":\"Thrown when trying to delegate call to a function that disallows delegate calls.\"}],\"SablierFlowState_Null(uint256)\":[{\"notice\":\"Thrown when the ID references a null stream.\"}],\"SablierFlowState_StreamPaused(uint256)\":[{\"notice\":\"Thrown when trying to perform a disallowed action on a paused stream.\"}],\"SablierFlowState_StreamVoided(uint256)\":[{\"notice\":\"Thrown when trying to perform a disallowed action on a voided stream.\"}],\"SablierFlowState_Unauthorized(uint256,address)\":[{\"notice\":\"Thrown when `msg.sender` lacks authorization to perform an action.\"}],\"SablierFlow_CreateNativeToken(address)\":[{\"notice\":\"Thrown when trying to create a stream with the native token.\"}],\"SablierFlow_CreateRatePerSecondZero()\":[{\"notice\":\"Thrown when trying to create a pending stream with zero rate per second.\"}],\"SablierFlow_DepositAmountZero(uint256)\":[{\"notice\":\"Thrown when trying to create a stream with a zero deposit amount.\"}],\"SablierFlow_InsufficientFeePayment(uint256,uint256)\":[{\"notice\":\"Thrown when trying to withdraw with a fee amount less than the minimum fee.\"}],\"SablierFlow_InvalidCalculation(uint256,uint128,uint128)\":[{\"notice\":\"Thrown when an unexpected error occurs during the calculation of an amount.\"}],\"SablierFlow_InvalidTokenDecimals(address)\":[{\"notice\":\"Thrown when trying to create a stream with a token with decimals greater than 18.\"}],\"SablierFlow_NativeTokenAlreadySet(address)\":[{\"notice\":\"Thrown when trying to set the native token address when it is already set.\"}],\"SablierFlow_NativeTokenZeroAddress()\":[{\"notice\":\"Thrown when trying to set zero address as native token.\"}],\"SablierFlow_NewRatePerSecondZero(uint256)\":[{\"notice\":\"Thrown when trying to adjust the rate per second to zero.\"}],\"SablierFlow_NotStreamRecipient(address,address)\":[{\"notice\":\"Thrown when the recipient address does not match the stream's recipient.\"}],\"SablierFlow_NotStreamSender(address,address)\":[{\"notice\":\"Thrown when the sender address does not match the stream's sender.\"}],\"SablierFlow_NotTransferable(uint256)\":[{\"notice\":\"Thrown when trying to transfer Stream NFT when transferability is disabled.\"}],\"SablierFlow_Overdraw(uint256,uint128,uint128)\":[{\"notice\":\"Thrown when trying to withdraw an amount greater than the withdrawable amount.\"}],\"SablierFlow_RatePerSecondNotDifferent(uint256,uint128)\":[{\"notice\":\"Thrown when trying to change the rate per second with the same rate per second.\"}],\"SablierFlow_RefundAmountZero(uint256)\":[{\"notice\":\"Thrown when trying to refund zero tokens from a stream.\"}],\"SablierFlow_RefundOverflow(uint256,uint128,uint128)\":[{\"notice\":\"Thrown when trying to refund an amount greater than the refundable amount.\"}],\"SablierFlow_SenderZeroAddress()\":[{\"notice\":\"Thrown when trying to create a stream with the sender as the zero address.\"}],\"SablierFlow_StreamBalanceZero(uint256)\":[{\"notice\":\"Thrown when trying to get depletion time of a stream with zero balance.\"}],\"SablierFlow_StreamNotPaused(uint256)\":[{\"notice\":\"Thrown when trying to perform a disallowed action on a non-paused stream.\"}],\"SablierFlow_StreamPending(uint256,uint40)\":[{\"notice\":\"Thrown when trying to perform a disallowed action on a pending stream.\"}],\"SablierFlow_Unauthorized(uint256,address)\":[{\"notice\":\"Thrown when `msg.sender` lacks authorization to perform an action.\"}],\"SablierFlow_WithdrawAmountZero(uint256)\":[{\"notice\":\"Thrown when trying to withdraw zero tokens from a stream.\"}],\"SablierFlow_WithdrawToZeroAddress(uint256)\":[{\"notice\":\"Thrown when trying to withdraw to the zero address.\"}],\"SablierFlow_WithdrawalAddressNotRecipient(uint256,address,address)\":[{\"notice\":\"Thrown when trying to withdraw to an address other than the recipient's.\"}]},\"events\":{\"AdjustFlowStream(uint256,uint256,uint128,uint128)\":{\"notice\":\"Emitted when the rate per second is updated by the sender.\"},\"CreateFlowStream(uint256,address,address,address,uint128,uint40,address,bool)\":{\"notice\":\"Emitted when a Flow stream is created.\"},\"DepositFlowStream(uint256,address,uint128)\":{\"notice\":\"Emitted when a stream is funded.\"},\"PauseFlowStream(uint256,address,address,uint256)\":{\"notice\":\"Emitted when a stream is paused by the sender.\"},\"RefundFromFlowStream(uint256,address,uint128)\":{\"notice\":\"Emitted when a sender is refunded from a stream.\"},\"RestartFlowStream(uint256,address,uint128)\":{\"notice\":\"Emitted when a stream is restarted by the sender.\"},\"SetComptroller(address,address)\":{\"notice\":\"Emitted when the comptroller address is set by the admin.\"},\"SetNFTDescriptor(address,address,address)\":{\"notice\":\"Emitted when the comptroller sets a new NFT descriptor contract.\"},\"SetNativeToken(address,address)\":{\"notice\":\"Emitted when the native token address is set by the comptroller.\"},\"TransferFeesToComptroller(address,uint256)\":{\"notice\":\"Emitted when the fees are transferred to the comptroller contract.\"},\"VoidFlowStream(uint256,address,address,address,uint256,uint256)\":{\"notice\":\"Emitted when a stream is voided by the sender, recipient or an approved operator.\"},\"WithdrawFromFlowStream(uint256,address,address,address,uint128)\":{\"notice\":\"Emitted when tokens are withdrawn from a stream by a recipient or an approved operator.\"}},\"kind\":\"user\",\"methods\":{\"adjustRatePerSecond(uint256,uint128)\":{\"notice\":\"Changes the stream's rate per second.\"},\"aggregateAmount(address)\":{\"notice\":\"Retrieves the aggregate amount across all streams, denoted in units of the token's decimals.\"},\"batch(bytes[])\":{\"notice\":\"Allows batched calls to self, i.e., `this` contract.\"},\"calculateMinFeeWei(uint256)\":{\"notice\":\"Calculates the minimum fee in wei required to withdraw from the given stream ID.\"},\"comptroller()\":{\"notice\":\"Retrieves the address of the comptroller contract.\"},\"coveredDebtOf(uint256)\":{\"notice\":\"Returns the amount of debt covered by the stream balance, denoted in token's decimals.\"},\"create(address,address,uint128,uint40,address,bool)\":{\"notice\":\"Creates a new Flow stream by setting the snapshot time to `startTime` and leaving the balance to zero. The stream is wrapped in an ERC-721 NFT.\"},\"createAndDeposit(address,address,uint128,uint40,address,bool,uint128)\":{\"notice\":\"Creates a new Flow stream by setting the snapshot time to `startTime` and the balance to `amount`. The stream is wrapped in an ERC-721 NFT.\"},\"depletionTimeOf(uint256)\":{\"notice\":\"Returns the time at which the total debt exceeds stream balance. If the total debt exceeds the stream balance, it returns 0.\"},\"deposit(uint256,uint128,address,address)\":{\"notice\":\"Makes a deposit in a stream.\"},\"depositAndPause(uint256,uint128)\":{\"notice\":\"Deposits tokens in a stream and pauses it.\"},\"getBalance(uint256)\":{\"notice\":\"Retrieves the balance of the stream, i.e. the total deposited amounts subtracted by the total withdrawn amounts, denoted in token's decimals.\"},\"getRatePerSecond(uint256)\":{\"notice\":\"Retrieves the rate per second of the stream, denoted as a fixed-point number where 1e18 is 1 token per second.\"},\"getRecipient(uint256)\":{\"notice\":\"Retrieves the stream's recipient.\"},\"getSender(uint256)\":{\"notice\":\"Retrieves the stream's sender.\"},\"getSnapshotDebtScaled(uint256)\":{\"notice\":\"Retrieves the snapshot debt of the stream, denoted as a fixed-point number where 1e18 is 1 token.\"},\"getSnapshotTime(uint256)\":{\"notice\":\"Retrieves the snapshot time of the stream, which is a Unix timestamp.\"},\"getStream(uint256)\":{\"notice\":\"Retrieves the stream entity.\"},\"getToken(uint256)\":{\"notice\":\"Retrieves the token of the stream.\"},\"getTokenDecimals(uint256)\":{\"notice\":\"Retrieves the token decimals of the stream.\"},\"isStream(uint256)\":{\"notice\":\"Retrieves a flag indicating whether the stream exists.\"},\"isTransferable(uint256)\":{\"notice\":\"Retrieves a flag indicating whether the stream NFT is transferable.\"},\"isVoided(uint256)\":{\"notice\":\"Retrieves a flag indicating whether the stream is voided.\"},\"nativeToken()\":{\"notice\":\"Retrieves the address of the ERC-20 interface of the native token, if it exists.\"},\"nextStreamId()\":{\"notice\":\"Counter for stream ids.\"},\"nftDescriptor()\":{\"notice\":\"Contract that generates the non-fungible token URI.\"},\"ongoingDebtScaledOf(uint256)\":{\"notice\":\"Returns the amount of debt accrued since the snapshot time until now, denoted as a fixed-point number where 1e18 is 1 token. If the stream is pending, it returns zero.\"},\"pause(uint256)\":{\"notice\":\"Pauses the stream.\"},\"recover(address,address)\":{\"notice\":\"Recover the surplus amount of tokens.\"},\"refund(uint256,uint128)\":{\"notice\":\"Refunds the provided amount of tokens from the stream to the sender's address.\"},\"refundAndPause(uint256,uint128)\":{\"notice\":\"Refunds the provided amount of tokens from the stream to the sender's address.\"},\"refundMax(uint256)\":{\"notice\":\"Refunds the entire refundable amount of tokens from the stream to the sender's address.\"},\"refundableAmountOf(uint256)\":{\"notice\":\"Returns the amount that the sender can be refunded from the stream, denoted in token's decimals.\"},\"restart(uint256,uint128)\":{\"notice\":\"Restarts the stream with the provided rate per second.\"},\"restartAndDeposit(uint256,uint128,uint128)\":{\"notice\":\"Restarts the stream with the provided rate per second, and makes a deposit.\"},\"setComptroller(address)\":{\"notice\":\"Sets the comptroller to a new address.\"},\"setNFTDescriptor(address)\":{\"notice\":\"Sets a new NFT descriptor contract, which produces the URI describing the Sablier stream NFTs.\"},\"setNativeToken(address)\":{\"notice\":\"Sets the native token address. Once set, it cannot be changed.\"},\"statusOf(uint256)\":{\"notice\":\"Returns the stream's status.\"},\"totalDebtOf(uint256)\":{\"notice\":\"Returns the total amount owed by the sender to the recipient, denoted in token's decimals.\"},\"transferFeesToComptroller()\":{\"notice\":\"Transfers the fees to the comptroller contract.\"},\"transferFromPayable(address,address,uint256)\":{\"notice\":\"Wrapper for {IERC721.transferFrom} with the `payable` specifier so that it can be called in conjunction with other functions using {IBatch.batch}. Requirements: - Refer to the requirements of `transferFrom` in: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/e4f70216d759d8e6a64144a9e1f7bbeed78e7079/contracts/token/ERC721/IERC721.sol#L75-L91. \"},\"transferTokens(address,address,uint128)\":{\"notice\":\"A helper to transfer ERC-20 tokens from the caller to the provided address. Useful for paying one-time bonuses.\"},\"uncoveredDebtOf(uint256)\":{\"notice\":\"Returns the amount of debt not covered by the stream balance, denoted in token's decimals.\"},\"void(uint256)\":{\"notice\":\"Voids a stream.\"},\"withdraw(uint256,address,uint128)\":{\"notice\":\"Withdraws the provided `amount` to the provided `to` address.\"},\"withdrawMax(uint256,address)\":{\"notice\":\"Withdraws the entire withdrawable amount to the provided `to` address.\"},\"withdrawableAmountOf(uint256)\":{\"notice\":\"Calculates the amount that the recipient can withdraw from the stream, denoted in token decimals. This is an alias for `coveredDebtOf`.\"}},\"notice\":\"See the documentation in {ISablierFlow}.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/SablierFlow.sol\":\"SablierFlow\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":@arbitrum/=node_modules/@arbitrum/\",\":@chainlink/=node_modules/@chainlink/\",\":@eth-optimism/=node_modules/@eth-optimism/\",\":@offchainlabs/=node_modules/@offchainlabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":@prb/=node_modules/@prb/\",\":@sablier/=node_modules/@sablier/\",\":@scroll-tech/=node_modules/@scroll-tech/\",\":@zksync/=node_modules/@zksync/\",\":forge-std/=node_modules/forge-std/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC4906.sol\":{\"keccak256\":\"0x1b8691e244f6e11d987459993671db0af33e6a29f7805eac6a9925cc6b601957\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9e2a5efc2e14e98f5fe91bbab769199b4987a40dd3b96075b04957fda2ae80f\",\"dweb:/ipfs/QmbAjrSSVBiJ6MbgF7Jkr53m674iGMZ6haWbbRrWDZJraK\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC721.sol\":{\"keccak256\":\"0xc4d7ebf63eb2f6bf3fee1b6c0ee775efa9f31b4843a5511d07eea147e212932d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01c66a2fad66bc710db7510419a7eee569b40b67cd9f01b70a3fc90d6f76c03b\",\"dweb:/ipfs/QmT1CjJZq4eTNA4nu8E9ZrWfaZu6ReUsDbjcK8DbEFqwx5\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8150ceb4ac947e8a442b2a9c017e01e880b2be2dd958f1fa9bc405f4c5a86508\",\"dweb:/ipfs/QmbcBmFX66AY6Kbhnd5gx7zpkgqnUafo43XnmayAM7zVdB\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x39ed367e54765186281efcfe83e47cf0ad62cc879f10e191360712507125f29a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c5ae6d85bd48cca8d6d2fcec8c63efd86f56f8a5832577a47e403ce0e65cb09\",\"dweb:/ipfs/QmUtcS8AbRSWhuc61puYet58os8FvSqm329ChoW8wwZXZk\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://78586466c424f076c6a2a551d848cfbe3f7c49e723830807598484a1047b3b34\",\"dweb:/ipfs/Qmb717ovcFxm7qgNKEShiV6M9SPR3v1qnNpAGH84D6w29p\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":{\"keccak256\":\"0xddab643169f47a2c5291afafcbfdca045d9e6835553307d090bc048b6dabd0ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d0ffbacfee42977167b3c75bd4787f8b72a7ab1176abd544f3dff662c6528e24\",\"dweb:/ipfs/QmUprM1cWCyaQ3LDjHA2DhwiPs3wekQ6MWXHFZdMMxpcyX\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x81c274a60a7ae232ae3dc9ff3a4011b4849a853c13b0832cd3351bb1bb2f0dae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da0c20dc74358a2a76330818f3bac9d1e2ce3371aec847b9cbf5d147fbae4f6\",\"dweb:/ipfs/QmeczhmnFv1hbXKGLwbYXY6Rrytc9a5A2YaRi5QMMgjPnb\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8084aa71a4cc7d2980972412a88fe4f114869faea3fefa5436431644eb5c0287\",\"dweb:/ipfs/Qmbqfs5dRdPvHVKY8kTaeyc65NdqXRQwRK7h9s5UJEhD1p\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"]},\"node_modules/@prb/math/src/UD21x18.sol\":{\"keccak256\":\"0xb0176747ae9c9f329bce39730d4d315b839e73a815494ddf2de2094aa9056957\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://534a82fe091627f9d01e665ac763daf56981b30b3976269f8e5c33a84a2dbebc\",\"dweb:/ipfs/QmYiiGJNr4S4ypYB4KGBPMTMiNskert8Cp4s6uf1CU3k73\"]},\"node_modules/@prb/math/src/sd1x18/Casting.sol\":{\"keccak256\":\"0x5d365f655f01598926c5d4fe5cda277f2cc7736fe38f943c11a32009077ddd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://56b378bd6039819bc12e5f17dabd9492e1410b3281f9df496cf8210539101a11\",\"dweb:/ipfs/QmcMaE64ZWMg9cFhYxdTuG8nfzeDdNuTRHMMoFXi6tSZGu\"]},\"node_modules/@prb/math/src/sd1x18/Constants.sol\":{\"keccak256\":\"0xc14cc32061863d83912f9616de86f3c34f1ac58614b7d504c6ce07ee8efdb8e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22483b1282dda6a556b0232f008a5a3296bbfd76b1886e6b72bf351b7c554fab\",\"dweb:/ipfs/QmYX9cYkrFxBbhZNKsb6uUxtrc2chmAj7vuc7UKRPGMwos\"]},\"node_modules/@prb/math/src/sd1x18/Errors.sol\":{\"keccak256\":\"0xc3c8b1ab3d19889c356c222a3a2186d45dfc1d3a17b9ad88159bb64ee457baa6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84fbe57569246403f778330bd7723018dfcb5f0ec50d7b1d82cc983c94a54bca\",\"dweb:/ipfs/QmWssAAnovc2EVjt58rTnxraE9B1RMivwTvYCYgpnr6oSE\"]},\"node_modules/@prb/math/src/sd1x18/ValueType.sol\":{\"keccak256\":\"0xaa9dc7b562faf45264390d80e2ea10c5295bb8a4f10d76261a3f9c04363734c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6ca36acd15f5cb47cf124ddec289f84e1011f2d29056159e4570435629a3353\",\"dweb:/ipfs/QmUKdiLmZpAkNCq2TKxrPbQPUhiRFXGfjGSnY1VeHVu4y6\"]},\"node_modules/@prb/math/src/sd21x18/Casting.sol\":{\"keccak256\":\"0x4a16adddb9ab1f6939dd4567c77205015a11081cb840029b84bbb6fdaf78ee36\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5003b2f4cd2fc1413da36bc63107c6e83a88d29693e8f97b54f300fa78f9c6d2\",\"dweb:/ipfs/QmaNJn91NLrZmeeGqnFQV1FTrLVSW852zHyWTrWJ5pf1pd\"]},\"node_modules/@prb/math/src/sd21x18/Constants.sol\":{\"keccak256\":\"0x501c2d5cfdea9450422182059c8df1cb6a859901a07bd59631c3fa24edcc79d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4669a65001c92919671fd879d33ce0e5030b602a7ba4d36bd2308128d8d1f396\",\"dweb:/ipfs/QmUC3bJ3qdkCmLMw3WHBcEqvuC4tExT2LXzUhgu5KQ3vi3\"]},\"node_modules/@prb/math/src/sd21x18/Errors.sol\":{\"keccak256\":\"0xc5422ee47eb139274e538e758fb40177a1ba22c2113ef3b3446102f0150bfe0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1981e052e9e86e1b0e4e55a057a7af4739aedd4ead2d60e3eaa40fb703594ee\",\"dweb:/ipfs/QmPK5qSujnyk1R8ues4RhDMy1tRKKyjQ31YJTviTKq7GML\"]},\"node_modules/@prb/math/src/sd21x18/ValueType.sol\":{\"keccak256\":\"0x532bba888370bed393464412f4ef3462d654802e71c953ad02d078e3d2701092\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://922a4e8dd813602f72d165aa1dfdf2c29b971a2abe73bebca7cd81a32ee2c880\",\"dweb:/ipfs/QmTBAJnx1r3sZpbQAuTgQtsTtvjZbpDwhCJRzkhzUumbdf\"]},\"node_modules/@prb/math/src/sd59x18/Casting.sol\":{\"keccak256\":\"0xdf70d8e70c6d6325f3f7eb028c484bc7189ef902f1d4b5b220af2e550bb5fc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0b15bcd36129c5cb163d57a117435afb171182018dd6d1e766a5f49cf1f4b63d\",\"dweb:/ipfs/QmbjzkMBH4FM2rdxGbx9LQ65wVERijNcu7R9C8dQmH3y4n\"]},\"node_modules/@prb/math/src/sd59x18/Constants.sol\":{\"keccak256\":\"0x9bcb8dd6b3e886d140ad1c32747a4f6d29a492529ceb835be878ae837aa6cc3a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4045c633e3618e7e90a768d92415b2f20f781fe129b4f4e26fa88f7dbf9201f\",\"dweb:/ipfs/Qmbet95pizwPno82cJ383wJtgQRSQKESmhVZ1vDrgAu7Si\"]},\"node_modules/@prb/math/src/sd59x18/Errors.sol\":{\"keccak256\":\"0x0a79c28c85fc8a450b0801ff2e66114eac4ec565819f5d1d8738904658fe33e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e0d4fd3c998019fb8555d9e26c03bec42a8513bdf4185aeac2da3a000abaebf\",\"dweb:/ipfs/QmahFJHXcX4RwPxaQbUf6LVZEk8NSpjCV3Eif7i9iqC6Mk\"]},\"node_modules/@prb/math/src/sd59x18/Helpers.sol\":{\"keccak256\":\"0x208570f1657cf730cb6c3d81aa14030e0d45cf906cdedea5059369d7df4bb716\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c78ca900edafa9338d4e3649a55ab0c84f76468d8a22fb945ba6d01e70f8fed\",\"dweb:/ipfs/QmeP4hQYfNxcATd1FsasdD4ebyu2vrC9K1N68swxUJzzZD\"]},\"node_modules/@prb/math/src/sd59x18/Math.sol\":{\"keccak256\":\"0xd8e8b51db9b3e2fa31a60f6b8ce4ea0112c3364442ede5992aa0aa7a2c925c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c56913970e34ee7b142047b21f1856a511cbdc3473b7c50418a8490e19cd462\",\"dweb:/ipfs/QmfG1F9CBDjPYD7NXora9awFfdpvBMY9SCg5pMLCFRv9tD\"]},\"node_modules/@prb/math/src/sd59x18/ValueType.sol\":{\"keccak256\":\"0x76597ba64d37d66e0178512bc9bbc1a031a7634c45e5d5c6e9da87f46952dc9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36148899ad874814e9292636fb974d2eec61f1bcc0875ec39cf444d70ba40919\",\"dweb:/ipfs/QmadUe4kH2FPcdxvhCKy8yiezCvPWor4VcPzqLYSAaGDDb\"]},\"node_modules/@prb/math/src/ud21x18/Casting.sol\":{\"keccak256\":\"0x3821aa57604f6e5b7c9c5c5cc97a6d71116e673cf3fee5f76fcd42b4cefded65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a80399c6b38ab45cc10d0a6683d50340cd89d9a085b6d0dcfb81e7c4e5b3ce09\",\"dweb:/ipfs/QmWNW2YD2LMkqrpAtJYeeuHN329Rx7mvfmrjsCo1p6akTL\"]},\"node_modules/@prb/math/src/ud21x18/Constants.sol\":{\"keccak256\":\"0x0997574a1ced6c43bde6d9c9175edc5ad64cbb920a0969a9db68eea543747601\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c09f03345a6779b002b38ffc3954258accbb2b1d0d5506d42c3bd7f117304f60\",\"dweb:/ipfs/QmTeBXRCE7H2HpqKUNsZN7Nk3rdBnFmbAUFom3E1PJeGuV\"]},\"node_modules/@prb/math/src/ud21x18/Errors.sol\":{\"keccak256\":\"0x35a1fb789b90f8c90865884d3023deb17fcca5c7146b5ddef823496d835a5415\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0af359d07ba25bdc90de7c05ed6216833932caa75d4a02fcfc51ceeaba5a4e80\",\"dweb:/ipfs/QmavBFw73Xfp1qJiN6P1gk2Dfr8ByWo3dyCPVgDHtko2gq\"]},\"node_modules/@prb/math/src/ud21x18/ValueType.sol\":{\"keccak256\":\"0x24838b2b1da371b9259d8ee21534a9f0cb5796aba75a4efca2374627952bee25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://897e6b79308651671c7f3c91a0069e778b47356c9ba3f86e238398ab7f2623af\",\"dweb:/ipfs/QmZbLw3tJVRZFQnV9jWQUmF43gna841adSG2TAiwDAifGU\"]},\"node_modules/@prb/math/src/ud2x18/Casting.sol\":{\"keccak256\":\"0x0f3141ed054e7c29dbe1acb4b88b18eb05d60e998fba6b4e503a6799faa356d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1e2468fc4c458082aaf4aa2e35af9ba3702f207e3c8533dd1e7da11ad605eae\",\"dweb:/ipfs/QmSm7iRH1eo4cJCwcAiiXWRH9Hn1urSS4tMdbaFbFGuTyL\"]},\"node_modules/@prb/math/src/ud2x18/Constants.sol\":{\"keccak256\":\"0x29b0e050c865899e1fb9022b460a7829cdee248c44c4299f068ba80695eec3fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbaef16b662fac235349bcf97bc980dd0cba15d4e6230caae61224cdac8ea6d9\",\"dweb:/ipfs/QmZQa5XBhi7k3yhtCd8wVpnwW8htfU4sjXxWhxRypMBYkC\"]},\"node_modules/@prb/math/src/ud2x18/Errors.sol\":{\"keccak256\":\"0x3b27e2a57438cd30d9c130f84aace24d547e5ed58e8689691d7d92ad2db38ddd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841cf9fb45443899c6b659300bbf503c3fd2c1a1e83b7f0e28620eed457f7437\",\"dweb:/ipfs/QmUqg8WscP5yQPw3UMUCWaB9RLU6nryGzseuyhAjNnDc1i\"]},\"node_modules/@prb/math/src/ud2x18/ValueType.sol\":{\"keccak256\":\"0x975a2e69b48f34a4c0bd80e8a5609ac67b7264c91992c0944f9ebe7b9e3fc9d0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d012521c475295d7e70b7d526fcc0911d0f238ea938719d77251bba00c9b41\",\"dweb:/ipfs/QmexEvTQCCBPYRWAYnomZX5M7C2EkXQRAXqEYMNUZfazCs\"]},\"node_modules/@prb/math/src/ud60x18/Casting.sol\":{\"keccak256\":\"0x0803318ddc98b4ba8fbfe70e5ee08d78387fe6ae00982b9960518085a751d7b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e68a2f780b2e33fa5416eb60f9daa81f014c2591119f4b67bed1217d5530780\",\"dweb:/ipfs/QmZe7JTWvbfKqMnu4sxUwWCtLcCay9hH71VZUpoFCdENcr\"]},\"node_modules/@prb/math/src/ud60x18/Constants.sol\":{\"keccak256\":\"0x2b80d26153d3fdcfb3a9ca772d9309d31ed1275f5b8b54c3ffb54d3652b37d90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e3a6673a156f635db94dc176baaa7274db8f9bec4461cd1152596253550ee3b\",\"dweb:/ipfs/Qmc9zT4kNSbMYaXcnbxNVqmb3P3m46ieaQxkwxqLwsvRA5\"]},\"node_modules/@prb/math/src/ud60x18/Errors.sol\":{\"keccak256\":\"0xbab6b0e303d32f3a9d9e2fe881f0392b8c59a73051a4d34f21a403b3961b3044\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86a019bcf2510d0691287329dc057479cc0abc48a5e15f245e7f15c03052d2c8\",\"dweb:/ipfs/QmeXe5pbpDHvN5DZ8puXmH2RJ25zDHj55wpiStWtNQPvq6\"]},\"node_modules/@prb/math/src/ud60x18/Helpers.sol\":{\"keccak256\":\"0xf5faff881391d2c060029499a666cc5f0bea90a213150bb476fae8f02a5df268\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://76105fa22bb1b5f1fa99abf9c4fbc9577a02c7bc204f271754c407f0d75489f5\",\"dweb:/ipfs/QmVNGZSTniDuZus5DdbFubqJXCLtTaZit7YPm4ntjr5Lgr\"]},\"node_modules/@prb/math/src/ud60x18/Math.sol\":{\"keccak256\":\"0xc4e51dfd9af62938e277e90fa724099f239d33727a35909ed48c292a76faf2fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d731537cbc50b852c21d28625aeb2c329729afc23a7b86ff9d8ee5878f47e9d6\",\"dweb:/ipfs/QmS7Cj4pAdPZcTp7RqYXyxBc9EYX92CT8icfkNigktUsLr\"]},\"node_modules/@prb/math/src/ud60x18/ValueType.sol\":{\"keccak256\":\"0x1b200baf25d01a8b91b97b42114248636f742b5b7028487ef4daef6621e378a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b5708ed017206bda2197654e80bea9f37b3a9993434bb066c903c2865e028f47\",\"dweb:/ipfs/QmTyotZk2J5YvWkNvB2qhXBMgRGWW2UgPqR4JPocrXSr8n\"]},\"node_modules/@sablier/evm-utils/src/Batch.sol\":{\"keccak256\":\"0x489db1a48d7b4324aaf51ac81da759cf5cbe4926dff67aeff1eb355367a8006c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c1211c417550aee8f255f9418ad27b19ef61c652b3d9c25c7b3d4854f0a57cc9\",\"dweb:/ipfs/QmSdqBUCVVSBZwdnSRgcYG8iG7YFwBoQSqqqnt4soNm9qN\"]},\"node_modules/@sablier/evm-utils/src/Comptrollerable.sol\":{\"keccak256\":\"0xf48c3ba6a78b9f9f5735d72d07a10a8363d573c82251b5e53a0c7ce29ed1a921\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d62e6057b2202ee016aeec50b0ecd7e04324957237f1de53fb2a97c092b577cc\",\"dweb:/ipfs/QmaXSJam62Z7nkT8T1aN79fiAX2aQARHwufvXNRqFshFab\"]},\"node_modules/@sablier/evm-utils/src/NoDelegateCall.sol\":{\"keccak256\":\"0xd03a61ec509ad031decabcc1f4e2cb1846eebbbac78a1b18a039d19f9045fb3d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d47362745c490efa40bf33302542cdb5710cd76cca4fd3f60bc4eb5fc3431bc7\",\"dweb:/ipfs/QmNrjaHQthPJviT4j5DJeQJsEN2cSbW3hPTLqT28mZPhXm\"]},\"node_modules/@sablier/evm-utils/src/interfaces/IAdminable.sol\":{\"keccak256\":\"0x3228d63e9b0b951030c73c42bb071e64f0ff0eadbcbeefad3f29a48366539c26\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://acc90ad2bec0e84349b56611b35b56bfb75a5930fd1babb2bd638fbbb15bd126\",\"dweb:/ipfs/QmSLnHx6bo4BQeBKYferfEhZo1Z4xCXdDF1bzJoHUafHt4\"]},\"node_modules/@sablier/evm-utils/src/interfaces/IBatch.sol\":{\"keccak256\":\"0x6d3aab84cb0529afc1e8b4a2ad4f89feb15c76b6a515a14fdf4b98887d856ae4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://77e68471ec663dda763ac40bb7c35d47b2a87e262461dad9a2f03377f928e758\",\"dweb:/ipfs/QmdvAq7XyNAUA8uLhnFrWuBgZAjNjoq6BaY5AyjFKvC8Xh\"]},\"node_modules/@sablier/evm-utils/src/interfaces/IComptrollerable.sol\":{\"keccak256\":\"0xdbc32762b87590be38095a84789906fa7a23fd2c2c112859504549ef3be17522\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://14ac13726bb7435ce310dd437a9b58852ca0c35640949e898c803a33a30dee8b\",\"dweb:/ipfs/QmeeKPApvBHbUF3S98qCnB26Aw67KTQF2GFyGQZCxykyMW\"]},\"node_modules/@sablier/evm-utils/src/interfaces/IRoleAdminable.sol\":{\"keccak256\":\"0x391cb4bd4bae01e3efdb84f63635644ed6329b72e8a5105ad53833551e8ba825\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ccca9da1c044c15cf0b647a4572c05f5d498fb18b3685a85a8836f7110cb1bc4\",\"dweb:/ipfs/QmfAKHqvgKQUgpC6VomTjTkc1tDnsbVJD5bLn8wL8KuTFV\"]},\"node_modules/@sablier/evm-utils/src/interfaces/ISablierComptroller.sol\":{\"keccak256\":\"0x5c52e70a6c083611d4b5518d17d025f70d322ee2c61d81f20f3fe50f4bd824ba\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5c07b2076065f1c65a59176ada3459be53f78e59a2055d9ae92b226edafa484c\",\"dweb:/ipfs/QmXYRDkBSWUBza1pi439ErzeLoaLUT8Zvj2yWcFZ5F1rgX\"]},\"node_modules/@sablier/evm-utils/src/libraries/Errors.sol\":{\"keccak256\":\"0xc9a0fbcd6d582054420a32c538204ac7adb789320c6564f278ccf45baf4485c8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a4da46b25df4fe89ce9f0315e1ef6561554f72b2dc7edbc43bdcdf9d65e8b709\",\"dweb:/ipfs/QmNW4VtuPSsLULst92GJmmcTCRHu4n5ndU9Jb4MbVes1jp\"]},\"src/SablierFlow.sol\":{\"keccak256\":\"0xd5655ccd04554186921b732fbd677a3160d6e491354b45dab14204498c98a314\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5faff7775c0f5a7d376c68e235d2db48527f645a6876e7a3534333b0a0768424\",\"dweb:/ipfs/QmX1C6pvfoNTs7uLuo9N5BsoyBbr6AX1RtuMXnCTweRoB6\"]},\"src/abstracts/SablierFlowState.sol\":{\"keccak256\":\"0x2efc3c10f75fdefd5e06768672676ff3d1cb218512aea08041eb851b5f294cf4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b1e0edc113f56faf7d2bba3a41c537cb44342680ccf8f85b3593f3a9375db343\",\"dweb:/ipfs/QmYSp3mrzWa6M8TFG6utazHoJiqkXzDRwxzQZsKS2U94KQ\"]},\"src/interfaces/IFlowNFTDescriptor.sol\":{\"keccak256\":\"0xdf964042ae7c74f03909d020fbb63e0ae56aeb2fa47213e3775a1e3263d00e54\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0d4ede276be940185ea0b638c8f38f68232b6f4394ce0a69c2c729bc761aec82\",\"dweb:/ipfs/QmSgivdvgxrY7n6XbLQcGp645nRw1y2272iJUVhQyfnWUp\"]},\"src/interfaces/ISablierFlow.sol\":{\"keccak256\":\"0xdeca4fafe101540ce7112f1dd18ef74b19152960436e47a0b69198b2508b6bbe\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://627c9eae5e8bd5ff2732d542a0387643bcac278e0e9510dd4bb712905842d652\",\"dweb:/ipfs/QmcV4D7jLSqAP27R86fSugGYj4MrToWE7JpTkEYgKqrYAa\"]},\"src/interfaces/ISablierFlowState.sol\":{\"keccak256\":\"0x34de979793f5ae6efea67b31f6884e469f4436c8add0dc1c7e1151926db316e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c25ab6522693ad95750b56bd5f7b2889a9291395d77ae4f417f0c45f5f165f08\",\"dweb:/ipfs/QmZpeUNJzwriC9aSbKacojNCy3HtY7JBGthC4Vs3sWt83f\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0xf988233d12aba8eb5b16cb75c99fa6dc6cd564b865565628592b234d64b4ad7e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://49ccf532e3675c2dfae5e0fd20c23e5f543a51f281fd44024207e1706e880b2b\",\"dweb:/ipfs/QmTGwvZ316DEdpK2napUDoZq44A4X3qP3oQrXJz2VQJ7d1\"]},\"src/libraries/FlowHelpers.sol\":{\"keccak256\":\"0xe907f41bf3040b1364847c05c8343a0b20e1c23cc058c45c325a09289550df5c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fdc8c34c0d9dfb0248ef495ee187daf46a626a1170dfe97b9e1692000f278a7a\",\"dweb:/ipfs/QmYULqoqvP4dt8EJVzdDu64qSSj8QzzqaW2y81ou6FgMV4\"]},\"src/types/DataTypes.sol\":{\"keccak256\":\"0x73391073cf39bd553a0128aa4af5ea937d604a87393bbe37689727ccf10cf67f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b32bbf9314ec331953938b36102f91fa6e899879cc450a34bd0bd397e618a9e\",\"dweb:/ipfs/QmbtxAvTVpvWBipLm3ALAdHhGXa6BoXZreBFGW9pfinoYE\"]}},\"version\":1}",
  "metadata": {
    "compiler": { "version": "0.8.29+commit.ab55807c" },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [
            { "internalType": "address", "name": "initialComptroller", "type": "address" },
            { "internalType": "address", "name": "initialNFTDescriptor", "type": "address" }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [
            { "internalType": "address", "name": "comptroller", "type": "address" },
            { "internalType": "address", "name": "caller", "type": "address" }
          ],
          "type": "error",
          "name": "Comptrollerable_CallerNotComptroller"
        },
        {
          "inputs": [
            { "internalType": "address", "name": "previousComptroller", "type": "address" },
            { "internalType": "address", "name": "newComptroller", "type": "address" },
            { "internalType": "bytes4", "name": "minimalInterfaceId", "type": "bytes4" }
          ],
          "type": "error",
          "name": "Comptrollerable_UnsupportedInterfaceId"
        },
        { "inputs": [], "type": "error", "name": "DelegateCall" },
        {
          "inputs": [
            { "internalType": "address", "name": "sender", "type": "address" },
            { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
            { "internalType": "address", "name": "owner", "type": "address" }
          ],
          "type": "error",
          "name": "ERC721IncorrectOwner"
        },
        {
          "inputs": [
            { "internalType": "address", "name": "operator", "type": "address" },
            { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
          ],
          "type": "error",
          "name": "ERC721InsufficientApproval"
        },
        {
          "inputs": [{ "internalType": "address", "name": "approver", "type": "address" }],
          "type": "error",
          "name": "ERC721InvalidApprover"
        },
        {
          "inputs": [{ "internalType": "address", "name": "operator", "type": "address" }],
          "type": "error",
          "name": "ERC721InvalidOperator"
        },
        {
          "inputs": [{ "internalType": "address", "name": "owner", "type": "address" }],
          "type": "error",
          "name": "ERC721InvalidOwner"
        },
        {
          "inputs": [{ "internalType": "address", "name": "receiver", "type": "address" }],
          "type": "error",
          "name": "ERC721InvalidReceiver"
        },
        {
          "inputs": [{ "internalType": "address", "name": "sender", "type": "address" }],
          "type": "error",
          "name": "ERC721InvalidSender"
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "tokenId", "type": "uint256" }],
          "type": "error",
          "name": "ERC721NonexistentToken"
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "type": "error",
          "name": "SablierFlowState_Null"
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "type": "error",
          "name": "SablierFlowState_StreamPaused"
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "type": "error",
          "name": "SablierFlowState_StreamVoided"
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256" },
            { "internalType": "address", "name": "caller", "type": "address" }
          ],
          "type": "error",
          "name": "SablierFlowState_Unauthorized"
        },
        {
          "inputs": [{ "internalType": "address", "name": "nativeToken", "type": "address" }],
          "type": "error",
          "name": "SablierFlow_CreateNativeToken"
        },
        { "inputs": [], "type": "error", "name": "SablierFlow_CreateRatePerSecondZero" },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "type": "error",
          "name": "SablierFlow_DepositAmountZero"
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "feePaid", "type": "uint256" },
            { "internalType": "uint256", "name": "minFeeWei", "type": "uint256" }
          ],
          "type": "error",
          "name": "SablierFlow_InsufficientFeePayment"
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256" },
            { "internalType": "uint128", "name": "availableAmount", "type": "uint128" },
            { "internalType": "uint128", "name": "amount", "type": "uint128" }
          ],
          "type": "error",
          "name": "SablierFlow_InvalidCalculation"
        },
        {
          "inputs": [{ "internalType": "address", "name": "token", "type": "address" }],
          "type": "error",
          "name": "SablierFlow_InvalidTokenDecimals"
        },
        {
          "inputs": [{ "internalType": "address", "name": "nativeToken", "type": "address" }],
          "type": "error",
          "name": "SablierFlow_NativeTokenAlreadySet"
        },
        { "inputs": [], "type": "error", "name": "SablierFlow_NativeTokenZeroAddress" },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "type": "error",
          "name": "SablierFlow_NewRatePerSecondZero"
        },
        {
          "inputs": [
            { "internalType": "address", "name": "recipient", "type": "address" },
            { "internalType": "address", "name": "streamRecipient", "type": "address" }
          ],
          "type": "error",
          "name": "SablierFlow_NotStreamRecipient"
        },
        {
          "inputs": [
            { "internalType": "address", "name": "sender", "type": "address" },
            { "internalType": "address", "name": "streamSender", "type": "address" }
          ],
          "type": "error",
          "name": "SablierFlow_NotStreamSender"
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "type": "error",
          "name": "SablierFlow_NotTransferable"
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256" },
            { "internalType": "uint128", "name": "amount", "type": "uint128" },
            { "internalType": "uint128", "name": "withdrawableAmount", "type": "uint128" }
          ],
          "type": "error",
          "name": "SablierFlow_Overdraw"
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256" },
            { "internalType": "UD21x18", "name": "ratePerSecond", "type": "uint128" }
          ],
          "type": "error",
          "name": "SablierFlow_RatePerSecondNotDifferent"
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "type": "error",
          "name": "SablierFlow_RefundAmountZero"
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256" },
            { "internalType": "uint128", "name": "refundAmount", "type": "uint128" },
            { "internalType": "uint128", "name": "refundableAmount", "type": "uint128" }
          ],
          "type": "error",
          "name": "SablierFlow_RefundOverflow"
        },
        { "inputs": [], "type": "error", "name": "SablierFlow_SenderZeroAddress" },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "type": "error",
          "name": "SablierFlow_StreamBalanceZero"
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "type": "error",
          "name": "SablierFlow_StreamNotPaused"
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256" },
            { "internalType": "uint40", "name": "snapshotTime", "type": "uint40" }
          ],
          "type": "error",
          "name": "SablierFlow_StreamPending"
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256" },
            { "internalType": "address", "name": "caller", "type": "address" }
          ],
          "type": "error",
          "name": "SablierFlow_Unauthorized"
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "type": "error",
          "name": "SablierFlow_WithdrawAmountZero"
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "type": "error",
          "name": "SablierFlow_WithdrawToZeroAddress"
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256" },
            { "internalType": "address", "name": "caller", "type": "address" },
            { "internalType": "address", "name": "to", "type": "address" }
          ],
          "type": "error",
          "name": "SablierFlow_WithdrawalAddressNotRecipient"
        },
        {
          "inputs": [
            { "internalType": "uint8", "name": "bits", "type": "uint8" },
            { "internalType": "uint256", "name": "value", "type": "uint256" }
          ],
          "type": "error",
          "name": "SafeCastOverflowedUintDowncast"
        },
        {
          "inputs": [{ "internalType": "address", "name": "token", "type": "address" }],
          "type": "error",
          "name": "SafeERC20FailedOperation"
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256", "indexed": true },
            { "internalType": "uint256", "name": "totalDebt", "type": "uint256", "indexed": false },
            { "internalType": "UD21x18", "name": "oldRatePerSecond", "type": "uint128", "indexed": false },
            { "internalType": "UD21x18", "name": "newRatePerSecond", "type": "uint128", "indexed": false }
          ],
          "type": "event",
          "name": "AdjustFlowStream",
          "anonymous": false
        },
        {
          "inputs": [
            { "internalType": "address", "name": "owner", "type": "address", "indexed": true },
            { "internalType": "address", "name": "approved", "type": "address", "indexed": true },
            { "internalType": "uint256", "name": "tokenId", "type": "uint256", "indexed": true }
          ],
          "type": "event",
          "name": "Approval",
          "anonymous": false
        },
        {
          "inputs": [
            { "internalType": "address", "name": "owner", "type": "address", "indexed": true },
            { "internalType": "address", "name": "operator", "type": "address", "indexed": true },
            { "internalType": "bool", "name": "approved", "type": "bool", "indexed": false }
          ],
          "type": "event",
          "name": "ApprovalForAll",
          "anonymous": false
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "_fromTokenId", "type": "uint256", "indexed": false },
            { "internalType": "uint256", "name": "_toTokenId", "type": "uint256", "indexed": false }
          ],
          "type": "event",
          "name": "BatchMetadataUpdate",
          "anonymous": false
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256", "indexed": false },
            { "internalType": "address", "name": "creator", "type": "address", "indexed": false },
            { "internalType": "address", "name": "sender", "type": "address", "indexed": true },
            { "internalType": "address", "name": "recipient", "type": "address", "indexed": true },
            { "internalType": "UD21x18", "name": "ratePerSecond", "type": "uint128", "indexed": false },
            { "internalType": "uint40", "name": "snapshotTime", "type": "uint40", "indexed": false },
            { "internalType": "contract IERC20", "name": "token", "type": "address", "indexed": true },
            { "internalType": "bool", "name": "transferable", "type": "bool", "indexed": false }
          ],
          "type": "event",
          "name": "CreateFlowStream",
          "anonymous": false
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256", "indexed": true },
            { "internalType": "address", "name": "funder", "type": "address", "indexed": true },
            { "internalType": "uint128", "name": "amount", "type": "uint128", "indexed": false }
          ],
          "type": "event",
          "name": "DepositFlowStream",
          "anonymous": false
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "_tokenId", "type": "uint256", "indexed": false }],
          "type": "event",
          "name": "MetadataUpdate",
          "anonymous": false
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256", "indexed": true },
            { "internalType": "address", "name": "sender", "type": "address", "indexed": true },
            { "internalType": "address", "name": "recipient", "type": "address", "indexed": true },
            { "internalType": "uint256", "name": "totalDebt", "type": "uint256", "indexed": false }
          ],
          "type": "event",
          "name": "PauseFlowStream",
          "anonymous": false
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256", "indexed": true },
            { "internalType": "address", "name": "sender", "type": "address", "indexed": true },
            { "internalType": "uint128", "name": "amount", "type": "uint128", "indexed": false }
          ],
          "type": "event",
          "name": "RefundFromFlowStream",
          "anonymous": false
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256", "indexed": true },
            { "internalType": "address", "name": "sender", "type": "address", "indexed": true },
            { "internalType": "UD21x18", "name": "ratePerSecond", "type": "uint128", "indexed": false }
          ],
          "type": "event",
          "name": "RestartFlowStream",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "contract ISablierComptroller",
              "name": "oldComptroller",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "contract ISablierComptroller",
              "name": "newComptroller",
              "type": "address",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "SetComptroller",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "contract ISablierComptroller",
              "name": "comptroller",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "contract IFlowNFTDescriptor",
              "name": "oldNFTDescriptor",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "contract IFlowNFTDescriptor",
              "name": "newNFTDescriptor",
              "type": "address",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "SetNFTDescriptor",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "contract ISablierComptroller",
              "name": "comptroller",
              "type": "address",
              "indexed": true
            },
            { "internalType": "address", "name": "nativeToken", "type": "address", "indexed": false }
          ],
          "type": "event",
          "name": "SetNativeToken",
          "anonymous": false
        },
        {
          "inputs": [
            { "internalType": "address", "name": "from", "type": "address", "indexed": true },
            { "internalType": "address", "name": "to", "type": "address", "indexed": true },
            { "internalType": "uint256", "name": "tokenId", "type": "uint256", "indexed": true }
          ],
          "type": "event",
          "name": "Transfer",
          "anonymous": false
        },
        {
          "inputs": [
            { "internalType": "address", "name": "comptroller", "type": "address", "indexed": true },
            { "internalType": "uint256", "name": "feeAmount", "type": "uint256", "indexed": false }
          ],
          "type": "event",
          "name": "TransferFeesToComptroller",
          "anonymous": false
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256", "indexed": true },
            { "internalType": "address", "name": "sender", "type": "address", "indexed": true },
            { "internalType": "address", "name": "recipient", "type": "address", "indexed": true },
            { "internalType": "address", "name": "caller", "type": "address", "indexed": false },
            { "internalType": "uint256", "name": "newTotalDebt", "type": "uint256", "indexed": false },
            { "internalType": "uint256", "name": "writtenOffDebt", "type": "uint256", "indexed": false }
          ],
          "type": "event",
          "name": "VoidFlowStream",
          "anonymous": false
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256", "indexed": true },
            { "internalType": "address", "name": "to", "type": "address", "indexed": true },
            { "internalType": "contract IERC20", "name": "token", "type": "address", "indexed": true },
            { "internalType": "address", "name": "caller", "type": "address", "indexed": false },
            { "internalType": "uint128", "name": "withdrawAmount", "type": "uint128", "indexed": false }
          ],
          "type": "event",
          "name": "WithdrawFromFlowStream",
          "anonymous": false
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256" },
            { "internalType": "UD21x18", "name": "newRatePerSecond", "type": "uint128" }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "adjustRatePerSecond"
        },
        {
          "inputs": [{ "internalType": "contract IERC20", "name": "token", "type": "address" }],
          "stateMutability": "view",
          "type": "function",
          "name": "aggregateAmount",
          "outputs": [{ "internalType": "uint256", "name": "amount", "type": "uint256" }]
        },
        {
          "inputs": [
            { "internalType": "address", "name": "to", "type": "address" },
            { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "approve"
        },
        {
          "inputs": [{ "internalType": "address", "name": "owner", "type": "address" }],
          "stateMutability": "view",
          "type": "function",
          "name": "balanceOf",
          "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
        },
        {
          "inputs": [{ "internalType": "bytes[]", "name": "calls", "type": "bytes[]" }],
          "stateMutability": "payable",
          "type": "function",
          "name": "batch",
          "outputs": [{ "internalType": "bytes[]", "name": "results", "type": "bytes[]" }]
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "view",
          "type": "function",
          "name": "calculateMinFeeWei",
          "outputs": [{ "internalType": "uint256", "name": "minFeeWei", "type": "uint256" }]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "comptroller",
          "outputs": [{ "internalType": "contract ISablierComptroller", "name": "", "type": "address" }]
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "view",
          "type": "function",
          "name": "coveredDebtOf",
          "outputs": [{ "internalType": "uint128", "name": "coveredDebt", "type": "uint128" }]
        },
        {
          "inputs": [
            { "internalType": "address", "name": "sender", "type": "address" },
            { "internalType": "address", "name": "recipient", "type": "address" },
            { "internalType": "UD21x18", "name": "ratePerSecond", "type": "uint128" },
            { "internalType": "uint40", "name": "startTime", "type": "uint40" },
            { "internalType": "contract IERC20", "name": "token", "type": "address" },
            { "internalType": "bool", "name": "transferable", "type": "bool" }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "create",
          "outputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }]
        },
        {
          "inputs": [
            { "internalType": "address", "name": "sender", "type": "address" },
            { "internalType": "address", "name": "recipient", "type": "address" },
            { "internalType": "UD21x18", "name": "ratePerSecond", "type": "uint128" },
            { "internalType": "uint40", "name": "startTime", "type": "uint40" },
            { "internalType": "contract IERC20", "name": "token", "type": "address" },
            { "internalType": "bool", "name": "transferable", "type": "bool" },
            { "internalType": "uint128", "name": "amount", "type": "uint128" }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "createAndDeposit",
          "outputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }]
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "view",
          "type": "function",
          "name": "depletionTimeOf",
          "outputs": [{ "internalType": "uint256", "name": "depletionTime", "type": "uint256" }]
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256" },
            { "internalType": "uint128", "name": "amount", "type": "uint128" },
            { "internalType": "address", "name": "sender", "type": "address" },
            { "internalType": "address", "name": "recipient", "type": "address" }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "deposit"
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256" },
            { "internalType": "uint128", "name": "amount", "type": "uint128" }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "depositAndPause"
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "tokenId", "type": "uint256" }],
          "stateMutability": "view",
          "type": "function",
          "name": "getApproved",
          "outputs": [{ "internalType": "address", "name": "", "type": "address" }]
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "view",
          "type": "function",
          "name": "getBalance",
          "outputs": [{ "internalType": "uint128", "name": "balance", "type": "uint128" }]
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "view",
          "type": "function",
          "name": "getRatePerSecond",
          "outputs": [{ "internalType": "UD21x18", "name": "ratePerSecond", "type": "uint128" }]
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "view",
          "type": "function",
          "name": "getRecipient",
          "outputs": [{ "internalType": "address", "name": "recipient", "type": "address" }]
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "view",
          "type": "function",
          "name": "getSender",
          "outputs": [{ "internalType": "address", "name": "sender", "type": "address" }]
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "view",
          "type": "function",
          "name": "getSnapshotDebtScaled",
          "outputs": [{ "internalType": "uint256", "name": "snapshotDebtScaled", "type": "uint256" }]
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "view",
          "type": "function",
          "name": "getSnapshotTime",
          "outputs": [{ "internalType": "uint40", "name": "snapshotTime", "type": "uint40" }]
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "view",
          "type": "function",
          "name": "getStream",
          "outputs": [
            {
              "internalType": "struct Flow.Stream",
              "name": "stream",
              "type": "tuple",
              "components": [
                { "internalType": "uint128", "name": "balance", "type": "uint128" },
                { "internalType": "UD21x18", "name": "ratePerSecond", "type": "uint128" },
                { "internalType": "address", "name": "sender", "type": "address" },
                { "internalType": "uint40", "name": "snapshotTime", "type": "uint40" },
                { "internalType": "bool", "name": "isStream", "type": "bool" },
                { "internalType": "bool", "name": "isTransferable", "type": "bool" },
                { "internalType": "bool", "name": "isVoided", "type": "bool" },
                { "internalType": "contract IERC20", "name": "token", "type": "address" },
                { "internalType": "uint8", "name": "tokenDecimals", "type": "uint8" },
                { "internalType": "uint256", "name": "snapshotDebtScaled", "type": "uint256" }
              ]
            }
          ]
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "view",
          "type": "function",
          "name": "getToken",
          "outputs": [{ "internalType": "contract IERC20", "name": "token", "type": "address" }]
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "view",
          "type": "function",
          "name": "getTokenDecimals",
          "outputs": [{ "internalType": "uint8", "name": "tokenDecimals", "type": "uint8" }]
        },
        {
          "inputs": [
            { "internalType": "address", "name": "owner", "type": "address" },
            { "internalType": "address", "name": "operator", "type": "address" }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "isApprovedForAll",
          "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }]
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "view",
          "type": "function",
          "name": "isStream",
          "outputs": [{ "internalType": "bool", "name": "result", "type": "bool" }]
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "view",
          "type": "function",
          "name": "isTransferable",
          "outputs": [{ "internalType": "bool", "name": "result", "type": "bool" }]
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "view",
          "type": "function",
          "name": "isVoided",
          "outputs": [{ "internalType": "bool", "name": "result", "type": "bool" }]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "name",
          "outputs": [{ "internalType": "string", "name": "", "type": "string" }]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "nativeToken",
          "outputs": [{ "internalType": "address", "name": "", "type": "address" }]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "nextStreamId",
          "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "nftDescriptor",
          "outputs": [{ "internalType": "contract IFlowNFTDescriptor", "name": "", "type": "address" }]
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "view",
          "type": "function",
          "name": "ongoingDebtScaledOf",
          "outputs": [{ "internalType": "uint256", "name": "ongoingDebtScaled", "type": "uint256" }]
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "tokenId", "type": "uint256" }],
          "stateMutability": "view",
          "type": "function",
          "name": "ownerOf",
          "outputs": [{ "internalType": "address", "name": "", "type": "address" }]
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "payable",
          "type": "function",
          "name": "pause"
        },
        {
          "inputs": [
            { "internalType": "contract IERC20", "name": "token", "type": "address" },
            { "internalType": "address", "name": "to", "type": "address" }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "recover"
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256" },
            { "internalType": "uint128", "name": "amount", "type": "uint128" }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "refund"
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256" },
            { "internalType": "uint128", "name": "amount", "type": "uint128" }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "refundAndPause"
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "payable",
          "type": "function",
          "name": "refundMax",
          "outputs": [{ "internalType": "uint128", "name": "refundedAmount", "type": "uint128" }]
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "view",
          "type": "function",
          "name": "refundableAmountOf",
          "outputs": [{ "internalType": "uint128", "name": "refundableAmount", "type": "uint128" }]
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256" },
            { "internalType": "UD21x18", "name": "ratePerSecond", "type": "uint128" }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "restart"
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256" },
            { "internalType": "UD21x18", "name": "ratePerSecond", "type": "uint128" },
            { "internalType": "uint128", "name": "amount", "type": "uint128" }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "restartAndDeposit"
        },
        {
          "inputs": [
            { "internalType": "address", "name": "from", "type": "address" },
            { "internalType": "address", "name": "to", "type": "address" },
            { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "safeTransferFrom"
        },
        {
          "inputs": [
            { "internalType": "address", "name": "from", "type": "address" },
            { "internalType": "address", "name": "to", "type": "address" },
            { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
            { "internalType": "bytes", "name": "data", "type": "bytes" }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "safeTransferFrom"
        },
        {
          "inputs": [
            { "internalType": "address", "name": "operator", "type": "address" },
            { "internalType": "bool", "name": "approved", "type": "bool" }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setApprovalForAll"
        },
        {
          "inputs": [{ "internalType": "contract ISablierComptroller", "name": "newComptroller", "type": "address" }],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setComptroller"
        },
        {
          "inputs": [{ "internalType": "contract IFlowNFTDescriptor", "name": "newNFTDescriptor", "type": "address" }],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setNFTDescriptor"
        },
        {
          "inputs": [{ "internalType": "address", "name": "newNativeToken", "type": "address" }],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setNativeToken"
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "view",
          "type": "function",
          "name": "statusOf",
          "outputs": [{ "internalType": "enum Flow.Status", "name": "status", "type": "uint8" }]
        },
        {
          "inputs": [{ "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" }],
          "stateMutability": "view",
          "type": "function",
          "name": "supportsInterface",
          "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "symbol",
          "outputs": [{ "internalType": "string", "name": "", "type": "string" }]
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "view",
          "type": "function",
          "name": "tokenURI",
          "outputs": [{ "internalType": "string", "name": "uri", "type": "string" }]
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "view",
          "type": "function",
          "name": "totalDebtOf",
          "outputs": [{ "internalType": "uint256", "name": "totalDebt", "type": "uint256" }]
        },
        { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "transferFeesToComptroller" },
        {
          "inputs": [
            { "internalType": "address", "name": "from", "type": "address" },
            { "internalType": "address", "name": "to", "type": "address" },
            { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "transferFrom"
        },
        {
          "inputs": [
            { "internalType": "address", "name": "from", "type": "address" },
            { "internalType": "address", "name": "to", "type": "address" },
            { "internalType": "uint256", "name": "streamId", "type": "uint256" }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "transferFromPayable"
        },
        {
          "inputs": [
            { "internalType": "contract IERC20", "name": "token", "type": "address" },
            { "internalType": "address", "name": "to", "type": "address" },
            { "internalType": "uint128", "name": "amount", "type": "uint128" }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "transferTokens"
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "view",
          "type": "function",
          "name": "uncoveredDebtOf",
          "outputs": [{ "internalType": "uint256", "name": "uncoveredDebt", "type": "uint256" }]
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "payable",
          "type": "function",
          "name": "void"
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256" },
            { "internalType": "address", "name": "to", "type": "address" },
            { "internalType": "uint128", "name": "amount", "type": "uint128" }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "withdraw"
        },
        {
          "inputs": [
            { "internalType": "uint256", "name": "streamId", "type": "uint256" },
            { "internalType": "address", "name": "to", "type": "address" }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "withdrawMax",
          "outputs": [{ "internalType": "uint128", "name": "withdrawnAmount", "type": "uint128" }]
        },
        {
          "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
          "stateMutability": "view",
          "type": "function",
          "name": "withdrawableAmountOf",
          "outputs": [{ "internalType": "uint128", "name": "withdrawableAmount", "type": "uint128" }]
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {
          "adjustRatePerSecond(uint256,uint128)": {
            "details": "Emits a {AdjustFlowStream} and {MetadataUpdate} event. Notes: - If the snapshot time is not in the future, it updates both the snapshot time and snapshot debt. Requirements: - Must not be delegate called. - `streamId` must not reference a null, paused, or voided stream. - `msg.sender` must be the stream's sender. - `newRatePerSecond` must be greater than zero and must be different from the current rate per second.",
            "params": {
              "newRatePerSecond": "The new rate per second, denoted as a fixed-point number where 1e18 is 1 token per second.",
              "streamId": "The ID of the stream to adjust."
            }
          },
          "approve(address,uint256)": { "details": "See {IERC721-approve}." },
          "balanceOf(address)": { "details": "See {IERC721-balanceOf}." },
          "batch(bytes[])": {
            "details": "Since `msg.value` can be reused across calls, be VERY CAREFUL when using it. Refer to https://paradigm.xyz/2021/08/two-rights-might-make-a-wrong for more information.",
            "params": { "calls": "An array of inputs for each call." },
            "returns": { "results": "An array of results from each call. Empty when the calls do not return anything." }
          },
          "calculateMinFeeWei(uint256)": {
            "details": "Reverts if `streamId` references a null stream.",
            "params": { "streamId": "The stream ID for the query." }
          },
          "constructor": {
            "params": {
              "initialComptroller": "The address of the initial comptroller contract.",
              "initialNFTDescriptor": "The address of the initial NFT descriptor."
            }
          },
          "coveredDebtOf(uint256)": {
            "details": "Reverts if `streamId` references a null stream.",
            "params": { "streamId": "The stream ID for the query." }
          },
          "create(address,address,uint128,uint40,address,bool)": {
            "details": "Emits a {CreateFlowStream} and {MetadataUpdate} event. Requirements: - Must not be delegate called. - `sender` must not be the zero address. - `recipient` must not be the zero address. - If `startTime` is in the future, the `ratePerSecond` must be greater than zero. - The `token` must not be the native token. - The `token`'s decimals must be less than or equal to 18.",
            "params": {
              "ratePerSecond": "The amount by which the debt is increasing every second, denoted as a fixed-point number where 1e18 is 1 token per second.",
              "recipient": "The address receiving the tokens.",
              "sender": "The address streaming the tokens, which is able to adjust and pause the stream. It doesn't have to be the same as `msg.sender`.",
              "startTime": "The timestamp when the stream starts. A sentinel value of zero means the stream will be created with the snapshot time as `block.timestamp`.",
              "token": "The contract address of the ERC-20 token to be streamed.",
              "transferable": "Boolean indicating if the stream NFT is transferable."
            },
            "returns": { "streamId": "The ID of the newly created stream." }
          },
          "createAndDeposit(address,address,uint128,uint40,address,bool,uint128)": {
            "details": "Emits a {Transfer}, {CreateFlowStream}, {DepositFlowStream} and {MetadataUpdate} event. Notes: - Refer to the notes in {create} and {deposit}. Requirements: - Refer to the requirements in {create} and {deposit}.",
            "params": {
              "amount": "The deposit amount, denoted in token's decimals.",
              "ratePerSecond": "The amount by which the debt is increasing every second, denoted as a fixed-point number where 1e18 is 1 token per second.",
              "recipient": "The address receiving the tokens.",
              "sender": "The address streaming the tokens. It doesn't have to be the same as `msg.sender`.",
              "startTime": "The timestamp when the stream starts. A sentinel value of zero means the stream will be created with the snapshot time as `block.timestamp`.",
              "token": "The contract address of the ERC-20 token to be streamed.",
              "transferable": "Boolean indicating if the stream NFT is transferable."
            },
            "returns": { "streamId": "The ID of the newly created stream." }
          },
          "depletionTimeOf(uint256)": {
            "details": "Reverts on the following conditions: - If `streamId` references a paused or a null stream. - If stream balance is zero.",
            "params": { "streamId": "The stream ID for the query." }
          },
          "deposit(uint256,uint128,address,address)": {
            "details": "Emits a {Transfer}, {DepositFlowStream} and {MetadataUpdate} event. Requirements: - Must not be delegate called. - `streamId` must not reference a null or a voided stream. - `amount` must be greater than zero. - `sender` and `recipient` must match the stream's sender and recipient addresses.",
            "params": {
              "amount": "The deposit amount, denoted in token's decimals.",
              "recipient": "The stream's recipient address.",
              "sender": "The stream's sender address.",
              "streamId": "The ID of the stream to deposit to."
            }
          },
          "depositAndPause(uint256,uint128)": {
            "details": "Emits a {Transfer}, {DepositFlowStream}, {PauseFlowStream} and {MetadataUpdate} event. Notes: - Refer to the notes in {deposit} and {pause}. Requirements: - Refer to the requirements in {deposit} and {pause}.",
            "params": {
              "amount": "The deposit amount, denoted in token's decimals.",
              "streamId": "The ID of the stream to deposit to, and then pause."
            }
          },
          "getApproved(uint256)": { "details": "See {IERC721-getApproved}." },
          "getBalance(uint256)": {
            "details": "Reverts if `streamId` references a null stream.",
            "params": { "streamId": "The stream ID for the query." }
          },
          "getRatePerSecond(uint256)": {
            "details": "Reverts if `streamId` references a null stream.",
            "params": { "streamId": "The ID of the stream to make the query for." }
          },
          "getRecipient(uint256)": {
            "details": "Reverts if `streamId` references a null stream.",
            "params": { "streamId": "The stream ID for the query." }
          },
          "getSender(uint256)": {
            "details": "Reverts if `streamId` references a null stream.",
            "params": { "streamId": "The stream ID for the query." }
          },
          "getSnapshotDebtScaled(uint256)": {
            "details": "Reverts if `streamId` references a null stream.",
            "params": { "streamId": "The stream ID for the query." }
          },
          "getSnapshotTime(uint256)": {
            "details": "Reverts if `streamId` references a null stream.",
            "params": { "streamId": "The ID of the stream to make the query for." }
          },
          "getStream(uint256)": {
            "details": "Reverts if `streamId` references a null stream.",
            "params": { "streamId": "The stream ID for the query." }
          },
          "getToken(uint256)": {
            "details": "Reverts if `streamId` references a null stream.",
            "params": { "streamId": "The ID of the stream to make the query for." }
          },
          "getTokenDecimals(uint256)": {
            "details": "Reverts if `streamId` references a null stream.",
            "params": { "streamId": "The ID of the stream to make the query for." }
          },
          "isApprovedForAll(address,address)": { "details": "See {IERC721-isApprovedForAll}." },
          "isStream(uint256)": {
            "details": "Does not revert if `streamId` references a null stream.",
            "params": { "streamId": "The stream ID for the query." }
          },
          "isTransferable(uint256)": {
            "details": "Reverts if `streamId` references a null stream.",
            "params": { "streamId": "The stream ID for the query." }
          },
          "isVoided(uint256)": {
            "details": "Reverts if `streamId` references a null stream.",
            "params": { "streamId": "The stream ID for the query." }
          },
          "name()": { "details": "See {IERC721Metadata-name}." },
          "ongoingDebtScaledOf(uint256)": {
            "details": "Reverts if `streamId` references a null stream.",
            "params": { "streamId": "The stream ID for the query." }
          },
          "ownerOf(uint256)": { "details": "See {IERC721-ownerOf}." },
          "pause(uint256)": {
            "details": "Emits a {PauseFlowStream} and {MetadataUpdate} event. Notes: - It updates snapshot debt and snapshot time. - It sets the rate per second to zero. Requirements: - Must not be delegate called. - `streamId` must not reference a null, pending or paused stream. - `msg.sender` must be the stream's sender.",
            "params": { "streamId": "The ID of the stream to pause." }
          },
          "recover(address,address)": {
            "details": "Notes: - The surplus amount is defined as the difference between the total balance of the contract for the provided ERC-20 token and the sum of balances of all streams created using the same ERC-20 token. Requirements: - `msg.sender` must be the comptroller contract.",
            "params": {
              "to": "The address to send the surplus amount.",
              "token": "The contract address of the ERC-20 token to recover for."
            }
          },
          "refund(uint256,uint128)": {
            "details": "Emits a {Transfer}, {RefundFromFlowStream} and {MetadataUpdate} event. Requirements: - Must not be delegate called. - `streamId` must not reference a null stream. - `msg.sender` must be the sender. - `amount` must be greater than zero and must not exceed the refundable amount.",
            "params": {
              "amount": "The amount to refund, denoted in token's decimals.",
              "streamId": "The ID of the stream to refund from."
            }
          },
          "refundAndPause(uint256,uint128)": {
            "details": "Emits a {Transfer}, {RefundFromFlowStream}, {PauseFlowStream} and {MetadataUpdate} event. Notes: - Refer to the notes in {pause}. Requirements: - Refer to the requirements in {refund} and {pause}.",
            "params": {
              "amount": "The amount to refund, denoted in token's decimals.",
              "streamId": "The ID of the stream to refund from and then pause."
            }
          },
          "refundMax(uint256)": {
            "details": "Emits a {Transfer}, {RefundFromFlowStream} and {MetadataUpdate} event. Requirements: - Refer to the requirements in {refund}.",
            "params": { "streamId": "The ID of the stream to refund from." },
            "returns": { "refundedAmount": "The amount refunded to the stream sender, denoted in token's decimals." }
          },
          "refundableAmountOf(uint256)": {
            "details": "Reverts if `streamId` references a null stream.",
            "params": { "streamId": "The stream ID for the query." }
          },
          "restart(uint256,uint128)": {
            "details": "Emits a {RestartFlowStream} and {MetadataUpdate} event. Notes: - It updates snapshot debt and snapshot time. Requirements: - Must not be delegate called. - `streamId` must not reference a null stream, must be paused, and must not be voided. - `msg.sender` must be the stream's sender. - `ratePerSecond` must be greater than zero.",
            "params": {
              "ratePerSecond": "The amount by which the debt is increasing every second, denoted as a fixed-point number where 1e18 is 1 token per second.",
              "streamId": "The ID of the stream to restart."
            }
          },
          "restartAndDeposit(uint256,uint128,uint128)": {
            "details": "Emits a {RestartFlowStream}, {Transfer}, {DepositFlowStream} and {MetadataUpdate} event. Notes: - Refer to the notes in {restart} and {deposit}. Requirements: - `amount` must be greater than zero. - Refer to the requirements in {restart}.",
            "params": {
              "amount": "The deposit amount, denoted in token's decimals.",
              "ratePerSecond": "The amount by which the debt is increasing every second, denoted as a fixed-point number where 1e18 is 1 token per second.",
              "streamId": "The ID of the stream to restart."
            }
          },
          "safeTransferFrom(address,address,uint256)": { "details": "See {IERC721-safeTransferFrom}." },
          "safeTransferFrom(address,address,uint256,bytes)": { "details": "See {IERC721-safeTransferFrom}." },
          "setApprovalForAll(address,bool)": { "details": "See {IERC721-setApprovalForAll}." },
          "setComptroller(address)": {
            "details": "Emits a {SetComptroller} event. Requirements: - `msg.sender` must be the current comptroller. - The new comptroller must return `true` from {supportsInterface} with the comptroller's minimal interface ID which is defined as the XOR of the following function selectors: 1. {calculateMinFeeWeiFor} 2. {convertUSDFeeToWei} 3. {execute} 4. {getMinFeeUSDFor}",
            "params": { "newComptroller": "The address of the new comptroller contract." }
          },
          "setNFTDescriptor(address)": {
            "details": "Emits a {SetNFTDescriptor} and {BatchMetadataUpdate} event. Notes: - Does not revert if the NFT descriptor is the same. Requirements: - `msg.sender` must be the comptroller contract.",
            "params": { "newNFTDescriptor": "The address of the new NFT descriptor contract." }
          },
          "setNativeToken(address)": {
            "details": "For more information, see the documentation for {nativeToken}. Emits a {SetNativeToken} event. Requirements: - `msg.sender` must be the comptroller contract. - `newNativeToken` must not be the zero address. - The native token must not be already set.",
            "params": { "newNativeToken": "The address of the native token." }
          },
          "statusOf(uint256)": {
            "details": "Reverts if `streamId` references a null stream. Integrators should exercise caution when depending on the return value of this function as streams can be paused and resumed at any moment.",
            "params": { "streamId": "The stream ID for the query." }
          },
          "supportsInterface(bytes4)": { "details": "See {IERC165-supportsInterface}." },
          "symbol()": { "details": "See {IERC721Metadata-symbol}." },
          "tokenURI(uint256)": { "details": "See {IERC721Metadata-tokenURI}." },
          "totalDebtOf(uint256)": {
            "details": "Reverts if `streamId` references a null stream.",
            "params": { "streamId": "The stream ID for the query." }
          },
          "transferFeesToComptroller()": { "details": "Emits a {TransferFeesToComptroller} event." },
          "transferFrom(address,address,uint256)": { "details": "See {IERC721-transferFrom}." },
          "transferFromPayable(address,address,uint256)": {
            "params": {
              "from": "The owner of the stream ID.",
              "streamId": "The ID of the stream NFT to transfer.",
              "to": "The address of the new owner of the stream ID."
            }
          },
          "transferTokens(address,address,uint128)": {
            "details": "Emits a {Transfer} event. Requirements: - `msg.sender` must have approved this contract to spend at least `amount` tokens.",
            "params": {
              "amount": "The amount of tokens to transfer, denoted in token's decimals.",
              "to": "The address receiving the tokens.",
              "token": "The contract address of the ERC-20 token to be transferred."
            }
          },
          "uncoveredDebtOf(uint256)": {
            "details": "Reverts if `streamId` references a null stream.",
            "params": { "streamId": "The stream ID for the query." }
          },
          "void(uint256)": {
            "details": "Emits a {VoidFlowStream} and {MetadataUpdate} event. Notes: - It sets snapshot time to the `block.timestamp`. - Voiding an insolvent stream sets the snapshot debt to the stream's balance making the uncovered debt to become zero. - Voiding a solvent stream updates the snapshot debt by adding up ongoing debt. - It sets the rate per second to zero. - A voided stream cannot be restarted. Requirements: - Must not be delegate called. - `streamId` must not reference a null or a voided stream. - `msg.sender` must either be the stream's sender, recipient or an approved third party.",
            "params": { "streamId": "The ID of the stream to void." }
          },
          "withdraw(uint256,address,uint128)": {
            "details": "Emits a {Transfer}, {WithdrawFromFlowStream} and {MetadataUpdate} event. Notes: - It sets the snapshot time to the `block.timestamp` if `amount` is greater than snapshot debt. Requirements: - Must not be delegate called. - `streamId` must not reference a null stream. - `to` must not be the zero address. - `to` must be the recipient if `msg.sender` is not the stream's recipient or an approved third party. - `amount` must  be greater than zero and must not exceed the withdrawable amount. - `msg.value` must be greater than or equal to the minimum fee in wei for the stream's sender.",
            "params": {
              "amount": "The amount to withdraw, denoted in token's decimals.",
              "streamId": "The ID of the stream to withdraw from.",
              "to": "The address receiving the withdrawn tokens."
            }
          },
          "withdrawMax(uint256,address)": {
            "details": "Emits a {Transfer}, {WithdrawFromFlowStream} and {MetadataUpdate} event. Notes: - Refer to the notes in {withdraw}. Requirements: - Refer to the requirements in {withdraw}.",
            "params": {
              "streamId": "The ID of the stream to withdraw from.",
              "to": "The address receiving the withdrawn tokens."
            },
            "returns": { "withdrawnAmount": "The amount withdrawn to the recipient, denoted in token's decimals." }
          },
          "withdrawableAmountOf(uint256)": {
            "details": "Reverts if `streamId` references a null stream.",
            "params": { "streamId": "The stream ID for the query." },
            "returns": { "withdrawableAmount": "The amount that the recipient can withdraw." }
          }
        },
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {
          "adjustRatePerSecond(uint256,uint128)": { "notice": "Changes the stream's rate per second." },
          "aggregateAmount(address)": {
            "notice": "Retrieves the aggregate amount across all streams, denoted in units of the token's decimals."
          },
          "batch(bytes[])": { "notice": "Allows batched calls to self, i.e., `this` contract." },
          "calculateMinFeeWei(uint256)": {
            "notice": "Calculates the minimum fee in wei required to withdraw from the given stream ID."
          },
          "comptroller()": { "notice": "Retrieves the address of the comptroller contract." },
          "coveredDebtOf(uint256)": {
            "notice": "Returns the amount of debt covered by the stream balance, denoted in token's decimals."
          },
          "create(address,address,uint128,uint40,address,bool)": {
            "notice": "Creates a new Flow stream by setting the snapshot time to `startTime` and leaving the balance to zero. The stream is wrapped in an ERC-721 NFT."
          },
          "createAndDeposit(address,address,uint128,uint40,address,bool,uint128)": {
            "notice": "Creates a new Flow stream by setting the snapshot time to `startTime` and the balance to `amount`. The stream is wrapped in an ERC-721 NFT."
          },
          "depletionTimeOf(uint256)": {
            "notice": "Returns the time at which the total debt exceeds stream balance. If the total debt exceeds the stream balance, it returns 0."
          },
          "deposit(uint256,uint128,address,address)": { "notice": "Makes a deposit in a stream." },
          "depositAndPause(uint256,uint128)": { "notice": "Deposits tokens in a stream and pauses it." },
          "getBalance(uint256)": {
            "notice": "Retrieves the balance of the stream, i.e. the total deposited amounts subtracted by the total withdrawn amounts, denoted in token's decimals."
          },
          "getRatePerSecond(uint256)": {
            "notice": "Retrieves the rate per second of the stream, denoted as a fixed-point number where 1e18 is 1 token per second."
          },
          "getRecipient(uint256)": { "notice": "Retrieves the stream's recipient." },
          "getSender(uint256)": { "notice": "Retrieves the stream's sender." },
          "getSnapshotDebtScaled(uint256)": {
            "notice": "Retrieves the snapshot debt of the stream, denoted as a fixed-point number where 1e18 is 1 token."
          },
          "getSnapshotTime(uint256)": {
            "notice": "Retrieves the snapshot time of the stream, which is a Unix timestamp."
          },
          "getStream(uint256)": { "notice": "Retrieves the stream entity." },
          "getToken(uint256)": { "notice": "Retrieves the token of the stream." },
          "getTokenDecimals(uint256)": { "notice": "Retrieves the token decimals of the stream." },
          "isStream(uint256)": { "notice": "Retrieves a flag indicating whether the stream exists." },
          "isTransferable(uint256)": {
            "notice": "Retrieves a flag indicating whether the stream NFT is transferable."
          },
          "isVoided(uint256)": { "notice": "Retrieves a flag indicating whether the stream is voided." },
          "nativeToken()": {
            "notice": "Retrieves the address of the ERC-20 interface of the native token, if it exists."
          },
          "nextStreamId()": { "notice": "Counter for stream ids." },
          "nftDescriptor()": { "notice": "Contract that generates the non-fungible token URI." },
          "ongoingDebtScaledOf(uint256)": {
            "notice": "Returns the amount of debt accrued since the snapshot time until now, denoted as a fixed-point number where 1e18 is 1 token. If the stream is pending, it returns zero."
          },
          "pause(uint256)": { "notice": "Pauses the stream." },
          "recover(address,address)": { "notice": "Recover the surplus amount of tokens." },
          "refund(uint256,uint128)": {
            "notice": "Refunds the provided amount of tokens from the stream to the sender's address."
          },
          "refundAndPause(uint256,uint128)": {
            "notice": "Refunds the provided amount of tokens from the stream to the sender's address."
          },
          "refundMax(uint256)": {
            "notice": "Refunds the entire refundable amount of tokens from the stream to the sender's address."
          },
          "refundableAmountOf(uint256)": {
            "notice": "Returns the amount that the sender can be refunded from the stream, denoted in token's decimals."
          },
          "restart(uint256,uint128)": { "notice": "Restarts the stream with the provided rate per second." },
          "restartAndDeposit(uint256,uint128,uint128)": {
            "notice": "Restarts the stream with the provided rate per second, and makes a deposit."
          },
          "setComptroller(address)": { "notice": "Sets the comptroller to a new address." },
          "setNFTDescriptor(address)": {
            "notice": "Sets a new NFT descriptor contract, which produces the URI describing the Sablier stream NFTs."
          },
          "setNativeToken(address)": { "notice": "Sets the native token address. Once set, it cannot be changed." },
          "statusOf(uint256)": { "notice": "Returns the stream's status." },
          "totalDebtOf(uint256)": {
            "notice": "Returns the total amount owed by the sender to the recipient, denoted in token's decimals."
          },
          "transferFeesToComptroller()": { "notice": "Transfers the fees to the comptroller contract." },
          "transferFromPayable(address,address,uint256)": {
            "notice": "Wrapper for {IERC721.transferFrom} with the `payable` specifier so that it can be called in conjunction with other functions using {IBatch.batch}. Requirements: - Refer to the requirements of `transferFrom` in: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/e4f70216d759d8e6a64144a9e1f7bbeed78e7079/contracts/token/ERC721/IERC721.sol#L75-L91. "
          },
          "transferTokens(address,address,uint128)": {
            "notice": "A helper to transfer ERC-20 tokens from the caller to the provided address. Useful for paying one-time bonuses."
          },
          "uncoveredDebtOf(uint256)": {
            "notice": "Returns the amount of debt not covered by the stream balance, denoted in token's decimals."
          },
          "void(uint256)": { "notice": "Voids a stream." },
          "withdraw(uint256,address,uint128)": {
            "notice": "Withdraws the provided `amount` to the provided `to` address."
          },
          "withdrawMax(uint256,address)": {
            "notice": "Withdraws the entire withdrawable amount to the provided `to` address."
          },
          "withdrawableAmountOf(uint256)": {
            "notice": "Calculates the amount that the recipient can withdraw from the stream, denoted in token decimals. This is an alias for `coveredDebtOf`."
          }
        },
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        "@arbitrum/=node_modules/@arbitrum/",
        "@chainlink/=node_modules/@chainlink/",
        "@eth-optimism/=node_modules/@eth-optimism/",
        "@offchainlabs/=node_modules/@offchainlabs/",
        "@openzeppelin/=node_modules/@openzeppelin/",
        "@prb/=node_modules/@prb/",
        "@sablier/=node_modules/@sablier/",
        "@scroll-tech/=node_modules/@scroll-tech/",
        "@zksync/=node_modules/@zksync/",
        "forge-std/=node_modules/forge-std/"
      ],
      "optimizer": { "enabled": true, "runs": 1000000 },
      "metadata": { "bytecodeHash": "ipfs" },
      "compilationTarget": { "src/SablierFlow.sol": "SablierFlow" },
      "evmVersion": "shanghai",
      "libraries": {},
      "viaIR": true
    },
    "sources": {
      "node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol": {
        "keccak256": "0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7",
        "urls": [
          "bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b",
          "dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/interfaces/IERC165.sol": {
        "keccak256": "0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724",
        "urls": [
          "bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a",
          "dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol": {
        "keccak256": "0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c",
        "urls": [
          "bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba",
          "dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/interfaces/IERC4906.sol": {
        "keccak256": "0x1b8691e244f6e11d987459993671db0af33e6a29f7805eac6a9925cc6b601957",
        "urls": [
          "bzz-raw://a9e2a5efc2e14e98f5fe91bbab769199b4987a40dd3b96075b04957fda2ae80f",
          "dweb:/ipfs/QmbAjrSSVBiJ6MbgF7Jkr53m674iGMZ6haWbbRrWDZJraK"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/interfaces/IERC721.sol": {
        "keccak256": "0xc4d7ebf63eb2f6bf3fee1b6c0ee775efa9f31b4843a5511d07eea147e212932d",
        "urls": [
          "bzz-raw://01c66a2fad66bc710db7510419a7eee569b40b67cd9f01b70a3fc90d6f76c03b",
          "dweb:/ipfs/QmT1CjJZq4eTNA4nu8E9ZrWfaZu6ReUsDbjcK8DbEFqwx5"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol": {
        "keccak256": "0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d",
        "urls": [
          "bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196",
          "dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol": {
        "keccak256": "0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b",
        "urls": [
          "bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b",
          "dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {
        "keccak256": "0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7",
        "urls": [
          "bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db",
          "dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
        "keccak256": "0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330",
        "urls": [
          "bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf",
          "dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": {
        "keccak256": "0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5",
        "urls": [
          "bzz-raw://8150ceb4ac947e8a442b2a9c017e01e880b2be2dd958f1fa9bc405f4c5a86508",
          "dweb:/ipfs/QmbcBmFX66AY6Kbhnd5gx7zpkgqnUafo43XnmayAM7zVdB"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol": {
        "keccak256": "0x39ed367e54765186281efcfe83e47cf0ad62cc879f10e191360712507125f29a",
        "urls": [
          "bzz-raw://2c5ae6d85bd48cca8d6d2fcec8c63efd86f56f8a5832577a47e403ce0e65cb09",
          "dweb:/ipfs/QmUtcS8AbRSWhuc61puYet58os8FvSqm329ChoW8wwZXZk"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol": {
        "keccak256": "0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261",
        "urls": [
          "bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11",
          "dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": {
        "keccak256": "0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d",
        "urls": [
          "bzz-raw://78586466c424f076c6a2a551d848cfbe3f7c49e723830807598484a1047b3b34",
          "dweb:/ipfs/Qmb717ovcFxm7qgNKEShiV6M9SPR3v1qnNpAGH84D6w29p"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol": {
        "keccak256": "0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1",
        "urls": [
          "bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02",
          "dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol": {
        "keccak256": "0xddab643169f47a2c5291afafcbfdca045d9e6835553307d090bc048b6dabd0ac",
        "urls": [
          "bzz-raw://d0ffbacfee42977167b3c75bd4787f8b72a7ab1176abd544f3dff662c6528e24",
          "dweb:/ipfs/QmUprM1cWCyaQ3LDjHA2DhwiPs3wekQ6MWXHFZdMMxpcyX"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/utils/Context.sol": {
        "keccak256": "0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2",
        "urls": [
          "bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12",
          "dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/utils/Panic.sol": {
        "keccak256": "0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a",
        "urls": [
          "bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a",
          "dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/utils/Strings.sol": {
        "keccak256": "0x81c274a60a7ae232ae3dc9ff3a4011b4849a853c13b0832cd3351bb1bb2f0dae",
        "urls": [
          "bzz-raw://9da0c20dc74358a2a76330818f3bac9d1e2ce3371aec847b9cbf5d147fbae4f6",
          "dweb:/ipfs/QmeczhmnFv1hbXKGLwbYXY6Rrytc9a5A2YaRi5QMMgjPnb"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol": {
        "keccak256": "0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa",
        "urls": [
          "bzz-raw://8084aa71a4cc7d2980972412a88fe4f114869faea3fefa5436431644eb5c0287",
          "dweb:/ipfs/Qmbqfs5dRdPvHVKY8kTaeyc65NdqXRQwRK7h9s5UJEhD1p"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": {
        "keccak256": "0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8",
        "urls": [
          "bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621",
          "dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/utils/math/Math.sol": {
        "keccak256": "0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6",
        "urls": [
          "bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3",
          "dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol": {
        "keccak256": "0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54",
        "urls": [
          "bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8",
          "dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol": {
        "keccak256": "0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3",
        "urls": [
          "bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03",
          "dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/Common.sol": {
        "keccak256": "0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99",
        "urls": [
          "bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05",
          "dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/UD21x18.sol": {
        "keccak256": "0xb0176747ae9c9f329bce39730d4d315b839e73a815494ddf2de2094aa9056957",
        "urls": [
          "bzz-raw://534a82fe091627f9d01e665ac763daf56981b30b3976269f8e5c33a84a2dbebc",
          "dweb:/ipfs/QmYiiGJNr4S4ypYB4KGBPMTMiNskert8Cp4s6uf1CU3k73"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/sd1x18/Casting.sol": {
        "keccak256": "0x5d365f655f01598926c5d4fe5cda277f2cc7736fe38f943c11a32009077ddd5c",
        "urls": [
          "bzz-raw://56b378bd6039819bc12e5f17dabd9492e1410b3281f9df496cf8210539101a11",
          "dweb:/ipfs/QmcMaE64ZWMg9cFhYxdTuG8nfzeDdNuTRHMMoFXi6tSZGu"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/sd1x18/Constants.sol": {
        "keccak256": "0xc14cc32061863d83912f9616de86f3c34f1ac58614b7d504c6ce07ee8efdb8e8",
        "urls": [
          "bzz-raw://22483b1282dda6a556b0232f008a5a3296bbfd76b1886e6b72bf351b7c554fab",
          "dweb:/ipfs/QmYX9cYkrFxBbhZNKsb6uUxtrc2chmAj7vuc7UKRPGMwos"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/sd1x18/Errors.sol": {
        "keccak256": "0xc3c8b1ab3d19889c356c222a3a2186d45dfc1d3a17b9ad88159bb64ee457baa6",
        "urls": [
          "bzz-raw://84fbe57569246403f778330bd7723018dfcb5f0ec50d7b1d82cc983c94a54bca",
          "dweb:/ipfs/QmWssAAnovc2EVjt58rTnxraE9B1RMivwTvYCYgpnr6oSE"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/sd1x18/ValueType.sol": {
        "keccak256": "0xaa9dc7b562faf45264390d80e2ea10c5295bb8a4f10d76261a3f9c04363734c0",
        "urls": [
          "bzz-raw://c6ca36acd15f5cb47cf124ddec289f84e1011f2d29056159e4570435629a3353",
          "dweb:/ipfs/QmUKdiLmZpAkNCq2TKxrPbQPUhiRFXGfjGSnY1VeHVu4y6"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/sd21x18/Casting.sol": {
        "keccak256": "0x4a16adddb9ab1f6939dd4567c77205015a11081cb840029b84bbb6fdaf78ee36",
        "urls": [
          "bzz-raw://5003b2f4cd2fc1413da36bc63107c6e83a88d29693e8f97b54f300fa78f9c6d2",
          "dweb:/ipfs/QmaNJn91NLrZmeeGqnFQV1FTrLVSW852zHyWTrWJ5pf1pd"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/sd21x18/Constants.sol": {
        "keccak256": "0x501c2d5cfdea9450422182059c8df1cb6a859901a07bd59631c3fa24edcc79d4",
        "urls": [
          "bzz-raw://4669a65001c92919671fd879d33ce0e5030b602a7ba4d36bd2308128d8d1f396",
          "dweb:/ipfs/QmUC3bJ3qdkCmLMw3WHBcEqvuC4tExT2LXzUhgu5KQ3vi3"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/sd21x18/Errors.sol": {
        "keccak256": "0xc5422ee47eb139274e538e758fb40177a1ba22c2113ef3b3446102f0150bfe0a",
        "urls": [
          "bzz-raw://a1981e052e9e86e1b0e4e55a057a7af4739aedd4ead2d60e3eaa40fb703594ee",
          "dweb:/ipfs/QmPK5qSujnyk1R8ues4RhDMy1tRKKyjQ31YJTviTKq7GML"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/sd21x18/ValueType.sol": {
        "keccak256": "0x532bba888370bed393464412f4ef3462d654802e71c953ad02d078e3d2701092",
        "urls": [
          "bzz-raw://922a4e8dd813602f72d165aa1dfdf2c29b971a2abe73bebca7cd81a32ee2c880",
          "dweb:/ipfs/QmTBAJnx1r3sZpbQAuTgQtsTtvjZbpDwhCJRzkhzUumbdf"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/sd59x18/Casting.sol": {
        "keccak256": "0xdf70d8e70c6d6325f3f7eb028c484bc7189ef902f1d4b5b220af2e550bb5fc39",
        "urls": [
          "bzz-raw://0b15bcd36129c5cb163d57a117435afb171182018dd6d1e766a5f49cf1f4b63d",
          "dweb:/ipfs/QmbjzkMBH4FM2rdxGbx9LQ65wVERijNcu7R9C8dQmH3y4n"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/sd59x18/Constants.sol": {
        "keccak256": "0x9bcb8dd6b3e886d140ad1c32747a4f6d29a492529ceb835be878ae837aa6cc3a",
        "urls": [
          "bzz-raw://c4045c633e3618e7e90a768d92415b2f20f781fe129b4f4e26fa88f7dbf9201f",
          "dweb:/ipfs/Qmbet95pizwPno82cJ383wJtgQRSQKESmhVZ1vDrgAu7Si"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/sd59x18/Errors.sol": {
        "keccak256": "0x0a79c28c85fc8a450b0801ff2e66114eac4ec565819f5d1d8738904658fe33e2",
        "urls": [
          "bzz-raw://9e0d4fd3c998019fb8555d9e26c03bec42a8513bdf4185aeac2da3a000abaebf",
          "dweb:/ipfs/QmahFJHXcX4RwPxaQbUf6LVZEk8NSpjCV3Eif7i9iqC6Mk"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/sd59x18/Helpers.sol": {
        "keccak256": "0x208570f1657cf730cb6c3d81aa14030e0d45cf906cdedea5059369d7df4bb716",
        "urls": [
          "bzz-raw://4c78ca900edafa9338d4e3649a55ab0c84f76468d8a22fb945ba6d01e70f8fed",
          "dweb:/ipfs/QmeP4hQYfNxcATd1FsasdD4ebyu2vrC9K1N68swxUJzzZD"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/sd59x18/Math.sol": {
        "keccak256": "0xd8e8b51db9b3e2fa31a60f6b8ce4ea0112c3364442ede5992aa0aa7a2c925c84",
        "urls": [
          "bzz-raw://3c56913970e34ee7b142047b21f1856a511cbdc3473b7c50418a8490e19cd462",
          "dweb:/ipfs/QmfG1F9CBDjPYD7NXora9awFfdpvBMY9SCg5pMLCFRv9tD"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/sd59x18/ValueType.sol": {
        "keccak256": "0x76597ba64d37d66e0178512bc9bbc1a031a7634c45e5d5c6e9da87f46952dc9d",
        "urls": [
          "bzz-raw://36148899ad874814e9292636fb974d2eec61f1bcc0875ec39cf444d70ba40919",
          "dweb:/ipfs/QmadUe4kH2FPcdxvhCKy8yiezCvPWor4VcPzqLYSAaGDDb"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/ud21x18/Casting.sol": {
        "keccak256": "0x3821aa57604f6e5b7c9c5c5cc97a6d71116e673cf3fee5f76fcd42b4cefded65",
        "urls": [
          "bzz-raw://a80399c6b38ab45cc10d0a6683d50340cd89d9a085b6d0dcfb81e7c4e5b3ce09",
          "dweb:/ipfs/QmWNW2YD2LMkqrpAtJYeeuHN329Rx7mvfmrjsCo1p6akTL"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/ud21x18/Constants.sol": {
        "keccak256": "0x0997574a1ced6c43bde6d9c9175edc5ad64cbb920a0969a9db68eea543747601",
        "urls": [
          "bzz-raw://c09f03345a6779b002b38ffc3954258accbb2b1d0d5506d42c3bd7f117304f60",
          "dweb:/ipfs/QmTeBXRCE7H2HpqKUNsZN7Nk3rdBnFmbAUFom3E1PJeGuV"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/ud21x18/Errors.sol": {
        "keccak256": "0x35a1fb789b90f8c90865884d3023deb17fcca5c7146b5ddef823496d835a5415",
        "urls": [
          "bzz-raw://0af359d07ba25bdc90de7c05ed6216833932caa75d4a02fcfc51ceeaba5a4e80",
          "dweb:/ipfs/QmavBFw73Xfp1qJiN6P1gk2Dfr8ByWo3dyCPVgDHtko2gq"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/ud21x18/ValueType.sol": {
        "keccak256": "0x24838b2b1da371b9259d8ee21534a9f0cb5796aba75a4efca2374627952bee25",
        "urls": [
          "bzz-raw://897e6b79308651671c7f3c91a0069e778b47356c9ba3f86e238398ab7f2623af",
          "dweb:/ipfs/QmZbLw3tJVRZFQnV9jWQUmF43gna841adSG2TAiwDAifGU"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/ud2x18/Casting.sol": {
        "keccak256": "0x0f3141ed054e7c29dbe1acb4b88b18eb05d60e998fba6b4e503a6799faa356d6",
        "urls": [
          "bzz-raw://b1e2468fc4c458082aaf4aa2e35af9ba3702f207e3c8533dd1e7da11ad605eae",
          "dweb:/ipfs/QmSm7iRH1eo4cJCwcAiiXWRH9Hn1urSS4tMdbaFbFGuTyL"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/ud2x18/Constants.sol": {
        "keccak256": "0x29b0e050c865899e1fb9022b460a7829cdee248c44c4299f068ba80695eec3fc",
        "urls": [
          "bzz-raw://cbaef16b662fac235349bcf97bc980dd0cba15d4e6230caae61224cdac8ea6d9",
          "dweb:/ipfs/QmZQa5XBhi7k3yhtCd8wVpnwW8htfU4sjXxWhxRypMBYkC"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/ud2x18/Errors.sol": {
        "keccak256": "0x3b27e2a57438cd30d9c130f84aace24d547e5ed58e8689691d7d92ad2db38ddd",
        "urls": [
          "bzz-raw://841cf9fb45443899c6b659300bbf503c3fd2c1a1e83b7f0e28620eed457f7437",
          "dweb:/ipfs/QmUqg8WscP5yQPw3UMUCWaB9RLU6nryGzseuyhAjNnDc1i"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/ud2x18/ValueType.sol": {
        "keccak256": "0x975a2e69b48f34a4c0bd80e8a5609ac67b7264c91992c0944f9ebe7b9e3fc9d0",
        "urls": [
          "bzz-raw://65d012521c475295d7e70b7d526fcc0911d0f238ea938719d77251bba00c9b41",
          "dweb:/ipfs/QmexEvTQCCBPYRWAYnomZX5M7C2EkXQRAXqEYMNUZfazCs"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/ud60x18/Casting.sol": {
        "keccak256": "0x0803318ddc98b4ba8fbfe70e5ee08d78387fe6ae00982b9960518085a751d7b6",
        "urls": [
          "bzz-raw://2e68a2f780b2e33fa5416eb60f9daa81f014c2591119f4b67bed1217d5530780",
          "dweb:/ipfs/QmZe7JTWvbfKqMnu4sxUwWCtLcCay9hH71VZUpoFCdENcr"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/ud60x18/Constants.sol": {
        "keccak256": "0x2b80d26153d3fdcfb3a9ca772d9309d31ed1275f5b8b54c3ffb54d3652b37d90",
        "urls": [
          "bzz-raw://7e3a6673a156f635db94dc176baaa7274db8f9bec4461cd1152596253550ee3b",
          "dweb:/ipfs/Qmc9zT4kNSbMYaXcnbxNVqmb3P3m46ieaQxkwxqLwsvRA5"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/ud60x18/Errors.sol": {
        "keccak256": "0xbab6b0e303d32f3a9d9e2fe881f0392b8c59a73051a4d34f21a403b3961b3044",
        "urls": [
          "bzz-raw://86a019bcf2510d0691287329dc057479cc0abc48a5e15f245e7f15c03052d2c8",
          "dweb:/ipfs/QmeXe5pbpDHvN5DZ8puXmH2RJ25zDHj55wpiStWtNQPvq6"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/ud60x18/Helpers.sol": {
        "keccak256": "0xf5faff881391d2c060029499a666cc5f0bea90a213150bb476fae8f02a5df268",
        "urls": [
          "bzz-raw://76105fa22bb1b5f1fa99abf9c4fbc9577a02c7bc204f271754c407f0d75489f5",
          "dweb:/ipfs/QmVNGZSTniDuZus5DdbFubqJXCLtTaZit7YPm4ntjr5Lgr"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/ud60x18/Math.sol": {
        "keccak256": "0xc4e51dfd9af62938e277e90fa724099f239d33727a35909ed48c292a76faf2fc",
        "urls": [
          "bzz-raw://d731537cbc50b852c21d28625aeb2c329729afc23a7b86ff9d8ee5878f47e9d6",
          "dweb:/ipfs/QmS7Cj4pAdPZcTp7RqYXyxBc9EYX92CT8icfkNigktUsLr"
        ],
        "license": "MIT"
      },
      "node_modules/@prb/math/src/ud60x18/ValueType.sol": {
        "keccak256": "0x1b200baf25d01a8b91b97b42114248636f742b5b7028487ef4daef6621e378a3",
        "urls": [
          "bzz-raw://b5708ed017206bda2197654e80bea9f37b3a9993434bb066c903c2865e028f47",
          "dweb:/ipfs/QmTyotZk2J5YvWkNvB2qhXBMgRGWW2UgPqR4JPocrXSr8n"
        ],
        "license": "MIT"
      },
      "node_modules/@sablier/evm-utils/src/Batch.sol": {
        "keccak256": "0x489db1a48d7b4324aaf51ac81da759cf5cbe4926dff67aeff1eb355367a8006c",
        "urls": [
          "bzz-raw://c1211c417550aee8f255f9418ad27b19ef61c652b3d9c25c7b3d4854f0a57cc9",
          "dweb:/ipfs/QmSdqBUCVVSBZwdnSRgcYG8iG7YFwBoQSqqqnt4soNm9qN"
        ],
        "license": "GPL-3.0-or-later"
      },
      "node_modules/@sablier/evm-utils/src/Comptrollerable.sol": {
        "keccak256": "0xf48c3ba6a78b9f9f5735d72d07a10a8363d573c82251b5e53a0c7ce29ed1a921",
        "urls": [
          "bzz-raw://d62e6057b2202ee016aeec50b0ecd7e04324957237f1de53fb2a97c092b577cc",
          "dweb:/ipfs/QmaXSJam62Z7nkT8T1aN79fiAX2aQARHwufvXNRqFshFab"
        ],
        "license": "GPL-3.0-or-later"
      },
      "node_modules/@sablier/evm-utils/src/NoDelegateCall.sol": {
        "keccak256": "0xd03a61ec509ad031decabcc1f4e2cb1846eebbbac78a1b18a039d19f9045fb3d",
        "urls": [
          "bzz-raw://d47362745c490efa40bf33302542cdb5710cd76cca4fd3f60bc4eb5fc3431bc7",
          "dweb:/ipfs/QmNrjaHQthPJviT4j5DJeQJsEN2cSbW3hPTLqT28mZPhXm"
        ],
        "license": "GPL-3.0-or-later"
      },
      "node_modules/@sablier/evm-utils/src/interfaces/IAdminable.sol": {
        "keccak256": "0x3228d63e9b0b951030c73c42bb071e64f0ff0eadbcbeefad3f29a48366539c26",
        "urls": [
          "bzz-raw://acc90ad2bec0e84349b56611b35b56bfb75a5930fd1babb2bd638fbbb15bd126",
          "dweb:/ipfs/QmSLnHx6bo4BQeBKYferfEhZo1Z4xCXdDF1bzJoHUafHt4"
        ],
        "license": "GPL-3.0-or-later"
      },
      "node_modules/@sablier/evm-utils/src/interfaces/IBatch.sol": {
        "keccak256": "0x6d3aab84cb0529afc1e8b4a2ad4f89feb15c76b6a515a14fdf4b98887d856ae4",
        "urls": [
          "bzz-raw://77e68471ec663dda763ac40bb7c35d47b2a87e262461dad9a2f03377f928e758",
          "dweb:/ipfs/QmdvAq7XyNAUA8uLhnFrWuBgZAjNjoq6BaY5AyjFKvC8Xh"
        ],
        "license": "GPL-3.0-or-later"
      },
      "node_modules/@sablier/evm-utils/src/interfaces/IComptrollerable.sol": {
        "keccak256": "0xdbc32762b87590be38095a84789906fa7a23fd2c2c112859504549ef3be17522",
        "urls": [
          "bzz-raw://14ac13726bb7435ce310dd437a9b58852ca0c35640949e898c803a33a30dee8b",
          "dweb:/ipfs/QmeeKPApvBHbUF3S98qCnB26Aw67KTQF2GFyGQZCxykyMW"
        ],
        "license": "GPL-3.0-or-later"
      },
      "node_modules/@sablier/evm-utils/src/interfaces/IRoleAdminable.sol": {
        "keccak256": "0x391cb4bd4bae01e3efdb84f63635644ed6329b72e8a5105ad53833551e8ba825",
        "urls": [
          "bzz-raw://ccca9da1c044c15cf0b647a4572c05f5d498fb18b3685a85a8836f7110cb1bc4",
          "dweb:/ipfs/QmfAKHqvgKQUgpC6VomTjTkc1tDnsbVJD5bLn8wL8KuTFV"
        ],
        "license": "GPL-3.0-or-later"
      },
      "node_modules/@sablier/evm-utils/src/interfaces/ISablierComptroller.sol": {
        "keccak256": "0x5c52e70a6c083611d4b5518d17d025f70d322ee2c61d81f20f3fe50f4bd824ba",
        "urls": [
          "bzz-raw://5c07b2076065f1c65a59176ada3459be53f78e59a2055d9ae92b226edafa484c",
          "dweb:/ipfs/QmXYRDkBSWUBza1pi439ErzeLoaLUT8Zvj2yWcFZ5F1rgX"
        ],
        "license": "GPL-3.0-or-later"
      },
      "node_modules/@sablier/evm-utils/src/libraries/Errors.sol": {
        "keccak256": "0xc9a0fbcd6d582054420a32c538204ac7adb789320c6564f278ccf45baf4485c8",
        "urls": [
          "bzz-raw://a4da46b25df4fe89ce9f0315e1ef6561554f72b2dc7edbc43bdcdf9d65e8b709",
          "dweb:/ipfs/QmNW4VtuPSsLULst92GJmmcTCRHu4n5ndU9Jb4MbVes1jp"
        ],
        "license": "GPL-3.0-or-later"
      },
      "src/SablierFlow.sol": {
        "keccak256": "0xd5655ccd04554186921b732fbd677a3160d6e491354b45dab14204498c98a314",
        "urls": [
          "bzz-raw://5faff7775c0f5a7d376c68e235d2db48527f645a6876e7a3534333b0a0768424",
          "dweb:/ipfs/QmX1C6pvfoNTs7uLuo9N5BsoyBbr6AX1RtuMXnCTweRoB6"
        ],
        "license": "BUSL-1.1"
      },
      "src/abstracts/SablierFlowState.sol": {
        "keccak256": "0x2efc3c10f75fdefd5e06768672676ff3d1cb218512aea08041eb851b5f294cf4",
        "urls": [
          "bzz-raw://b1e0edc113f56faf7d2bba3a41c537cb44342680ccf8f85b3593f3a9375db343",
          "dweb:/ipfs/QmYSp3mrzWa6M8TFG6utazHoJiqkXzDRwxzQZsKS2U94KQ"
        ],
        "license": "GPL-3.0-or-later"
      },
      "src/interfaces/IFlowNFTDescriptor.sol": {
        "keccak256": "0xdf964042ae7c74f03909d020fbb63e0ae56aeb2fa47213e3775a1e3263d00e54",
        "urls": [
          "bzz-raw://0d4ede276be940185ea0b638c8f38f68232b6f4394ce0a69c2c729bc761aec82",
          "dweb:/ipfs/QmSgivdvgxrY7n6XbLQcGp645nRw1y2272iJUVhQyfnWUp"
        ],
        "license": "GPL-3.0-or-later"
      },
      "src/interfaces/ISablierFlow.sol": {
        "keccak256": "0xdeca4fafe101540ce7112f1dd18ef74b19152960436e47a0b69198b2508b6bbe",
        "urls": [
          "bzz-raw://627c9eae5e8bd5ff2732d542a0387643bcac278e0e9510dd4bb712905842d652",
          "dweb:/ipfs/QmcV4D7jLSqAP27R86fSugGYj4MrToWE7JpTkEYgKqrYAa"
        ],
        "license": "GPL-3.0-or-later"
      },
      "src/interfaces/ISablierFlowState.sol": {
        "keccak256": "0x34de979793f5ae6efea67b31f6884e469f4436c8add0dc1c7e1151926db316e3",
        "urls": [
          "bzz-raw://c25ab6522693ad95750b56bd5f7b2889a9291395d77ae4f417f0c45f5f165f08",
          "dweb:/ipfs/QmZpeUNJzwriC9aSbKacojNCy3HtY7JBGthC4Vs3sWt83f"
        ],
        "license": "GPL-3.0-or-later"
      },
      "src/libraries/Errors.sol": {
        "keccak256": "0xf988233d12aba8eb5b16cb75c99fa6dc6cd564b865565628592b234d64b4ad7e",
        "urls": [
          "bzz-raw://49ccf532e3675c2dfae5e0fd20c23e5f543a51f281fd44024207e1706e880b2b",
          "dweb:/ipfs/QmTGwvZ316DEdpK2napUDoZq44A4X3qP3oQrXJz2VQJ7d1"
        ],
        "license": "GPL-3.0-or-later"
      },
      "src/libraries/FlowHelpers.sol": {
        "keccak256": "0xe907f41bf3040b1364847c05c8343a0b20e1c23cc058c45c325a09289550df5c",
        "urls": [
          "bzz-raw://fdc8c34c0d9dfb0248ef495ee187daf46a626a1170dfe97b9e1692000f278a7a",
          "dweb:/ipfs/QmYULqoqvP4dt8EJVzdDu64qSSj8QzzqaW2y81ou6FgMV4"
        ],
        "license": "GPL-3.0-or-later"
      },
      "src/types/DataTypes.sol": {
        "keccak256": "0x73391073cf39bd553a0128aa4af5ea937d604a87393bbe37689727ccf10cf67f",
        "urls": [
          "bzz-raw://2b32bbf9314ec331953938b36102f91fa6e899879cc450a34bd0bd397e618a9e",
          "dweb:/ipfs/QmbtxAvTVpvWBipLm3ALAdHhGXa6BoXZreBFGW9pfinoYE"
        ],
        "license": "GPL-3.0-or-later"
      }
    },
    "version": 1
  },
  "id": 83
}
