7  9net/luminis/quic/stream/QuicStreamImpl$StreamOutputStreamthis$0(Lnet/luminis/quic/stream/QuicStreamImpl;   java/io/OutputStream()V  java/nio/ByteBufferallocate(I)Ljava/nio/ByteBuffer;  END_OF_STREAM_MARKERLjava/nio/ByteBuffer;java/lang/Object   lockLjava/lang/Object;*java/util/concurrent/ConcurrentLinkedDeque  " #$ sendQueueLjava/util/Queue; &'( )*&net/luminis/quic/stream/QuicStreamImplsendBufferSizeI , -* maxBufferSize/)java/util/concurrent/atomic/AtomicInteger . 2 34 bufferedBytes+Ljava/util/concurrent/atomic/AtomicInteger;6(java/util/concurrent/locks/ReentrantLock 5 9 :; bufferLock*Ljava/util/concurrent/locks/ReentrantLock; 5= >? newCondition(()Ljava/util/concurrent/locks/Condition; A BCnotFull&Ljava/util/concurrent/locks/Condition; &E FGflowController%Lnet/luminis/quic/stream/FlowControl; IJK LM#net/luminis/quic/stream/FlowControlregisterS(Lnet/luminis/quic/QuicStream;Lnet/luminis/quic/stream/FlowControlUpdateListener;)V O PQwrite([BII)V S T  checkState .V WXget()I 5Z  \]^ _`java/lang/Thread currentThread()Ljava/lang/Thread; b cdblockingWriterThreadLjava/lang/Thread; fgh i $java/util/concurrent/locks/Conditionawaitkjava/lang/InterruptedExceptionmjava/io/InterruptedIOException &o pqabortedZs+output aborted because connection is closedu lw x(Ljava/lang/String;)V 5z { unlock }~ java/util/Arrays copyOfRange([BII)[B  wrap([B)Ljava/nio/ByteBuffer;  java/util/Queueadd(Ljava/lang/Object;)Z .  getAndAdd(I)I  qsendRequestQueued &  connection%Lnet/luminis/quic/QuicConnectionImpl; applyZ(Lnet/luminis/quic/stream/QuicStreamImpl$StreamOutputStream;)Ljava/util/function/Function;  getEncryptionLevel$()Lnet/luminis/quic/EncryptionLevel; acceptZ(Lnet/luminis/quic/stream/QuicStreamImpl$StreamOutputStream;)Ljava/util/function/Consumer;  #net/luminis/quic/QuicConnectionImplsenda(Ljava/util/function/Function;ILnet/luminis/quic/EncryptionLevel;Ljava/util/function/Consumer;Z)V  qclosed  qresetjava/io/IOExceptionalready closedis reset makeConcatWithConstants&(Ljava/lang/String;)Ljava/lang/String; w isEmpty()Z I getFlowControlLimit (Lnet/luminis/quic/QuicStream;)J  q$assertionsDisabled   currentOffsetJjava/lang/AssertionError "net/luminis/quic/frame/StreamFrame &  quicVersionLnet/luminis/quic/Version; & *streamId "(Lnet/luminis/quic/Version;IJ[BZ)V XgetFrameLength  java/lang/Integermin(II)I I increaseFlowControlLimit!(Lnet/luminis/quic/QuicStream;J)J peek()Ljava/lang/Object;  X remaining  W([BII)Ljava/nio/ByteBuffer; poll f signal isFinal  finalFrameSent   blockedOffset  -net/luminis/quic/frame/StreamDataBlockedFrame getMaxSize    net/luminis/quic/EncryptionLevelApp"Lnet/luminis/quic/EncryptionLevel; &  stopFlowControl \   interrupt I getFlowControlBlockReasonD(Lnet/luminis/quic/QuicStream;)Lnet/luminis/quic/stream/BlockReason;  (net/luminis/quic/stream/QuicStreamImpl$1.$SwitchMap$net$luminis$quic$stream$BlockReason[I  X#net/luminis/quic/stream/BlockReasonordinal ! "(Lnet/luminis/quic/Version;IJ)V$'net/luminis/quic/frame/DataBlockedFrame I& '(getConnectionDataLimit()J #* +(J)V - .B(Lnet/luminis/quic/frame/QuicFrame;Ljava/util/function/Consumer;)V &0 12logLnet/luminis/quic/log/Logger;4 56(Lnet/luminis/quic/frame/QuicFrame;)Ljava/lang/String; 789 :xnet/luminis/quic/log/Loggerrecovery < = clear ? @resetErrorCode CDE FG'net/luminis/quic/frame/ResetStreamFramegetMaximumFrameSize(IJ)I CJ K(IJJ)V MNO Pjava/lang/ClassdesiredAssertionStatusR1net/luminis/quic/stream/FlowControlUpdateListenerMIN_FRAME_SIZE ConstantValue Signature(Ljava/util/Queue;+(Lnet/luminis/quic/stream/QuicStreamImpl;)VCodeLineNumberTableLocalVariableTablethis;Lnet/luminis/quic/stream/QuicStreamImpl$StreamOutputStream;([B)Vdata[B ExceptionsihalfBuffersizetimesreste Ljava/lang/InterruptedException;offlenavailableBufferSpace StackMapTable`njava/lang/Stringpjava/lang/Throwable(I)VdataByteflushclose sendFrame%(I)Lnet/luminis/quic/frame/QuicFrame;bufferposition nrOfBytesdummy$Lnet/luminis/quic/frame/StreamFrame;maxAllowedByFlowControl dataToSend finalFrame streamFrameflowControlLimitmaxBytesToSend maxFrameSizestreamNotBlockedinterruptBlockingThreadblockingsendBlockReason blockReason%Lnet/luminis/quic/stream/BlockReason;frame"Lnet/luminis/quic/frame/QuicFrame; net/luminis/quic/frame/QuicFrameretransmitSendBlockReason%(Lnet/luminis/quic/frame/QuicFrame;)V quicFrameretransmitStreamFramerestart errorCodecreateResetFrameretransmitResetFrame SourceFileQuicStreamImpl.javaNestHostBootstrapMethods  "java/lang/invoke/LambdaMetafactory metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;&(Ljava/lang/Object;)Ljava/lang/Object;  uv7(Ljava/lang/Integer;)Lnet/luminis/quic/frame/QuicFrame;(Ljava/lang/Object;)V    $java/lang/invoke/StringConcatFactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;output stream   v  !Retransmitted lost stream frame   v   InnerClassesStreamOutputStream%java/lang/invoke/MethodHandles$Lookupjava/lang/invoke/MethodHandlesLookup!QS*TU#$VW-*34:;BCqBqBqB@Bcdq XYZ*+** *Y*Y !*+%+*.Y01*5Y78**8<@+D+*HZ* r YZ]'s/t:uEvPxYy[Z\]ZP^YA *++NZ }~[ \] _`aPQY -*R*+I*+l6l66*+h`Np6*+h`N*+*1Ud6l*8Y*[a*+*1Ud.*R*@e:lY*nrtv*a*8y:*a*8y*!+`|W*1W*Y:*%*****ç :jt!$$)$Z# $28>CQR`fmt,[f b*>c*8d*>e*fg-\]-_`-h*-i*`j*kd!_jljljmNoNEoaPqYWYTM*,NZ [ \]r* _`as Y3*RZ [ \]at Y\*W*P*!*W**YL*%*****+çM+,(SVVYVZ& !(/4Q[[ \\]kQDoaT Y>* *Y**n YrZ)3=[ >\]k(mauvYh**YM*,çN,-*!>*D*Aš *Ŕ Y˿*1U6 *Ŕ6Y***:dd6*D**a*e66:6 j*!^*!: 6  d) `6   W*!W  dW6*! *!*6 *!W  *1hW*8Y*@*8y: *8y  |:Y*** : *Ya*!;*Y: * ç :   **** * **/**ŵ***Ҹ* Z7 +:QZhk"158TWakmy     '+!.&:(B-f1[z Jw Fx* ky*z{v|*g}`d~q _{ :,Z *h\]h*k| o1a lW( eo I lo 7 Y6* Z 56[ \]qYV****Z <=[\]* Y\*aL++Z@A B D[\] dk \vYe*D*MN,.J8Y***ŷ N#Y*D%)N-ZMNO4QNRQTcW[*e\]e*VTk 4Y]%***Ҹ* Z [$\[%\]%Y@š+̚ Y˿*&*+*,*/+36Z_`a-b?d[@\]@k)Y.Zg[ \] YJ* *!;*Zklmn[ \]+Yb*]*V**>**A*B*H*8Y*@*8y N*8y-DMWZ. wxy{=}DMTW_a[b\]bk Wo vYn-š* Y˿CY**>*ŷIZ [-\]-*kYl'š+C Y˿*+*H,Z&['\]'k Y4&L±ZSk @&J&