2Y       a                d_  G 2 u0c J K  ` u  !" # $ % & ' () A* + ,-. / 0123 4 5 67 89 H:; < P= > ? @A VB VC HDE HFG HH VI VJK LMNO IP IQR H1S VTUV WX }Y }Z [ \ ]^ _`a b uc da }e f gh }i }j kl mno 0p ,qr s t yu Ivwx Iy Iz {|} I~ | L ,  P H     D  V     P  1           L         L                  f   FixedRateTracker InnerClasses RateTrackerLOG#Lorg/eclipse/jetty/util/log/Logger; IPv4_GROUPLjava/lang/String; ConstantValue IPv4_PATTERNLjava/util/regex/Pattern; IPv6_GROUP IPv6_PATTERN CIDR_PATTERN __TRACKER __THROTTLED__DEFAULT_MAX_REQUESTS_PER_SECI__DEFAULT_DELAY_MSd__DEFAULT_THROTTLE__DEFAULT_MAX_WAIT_MS2__DEFAULT_THROTTLE_MSJ#__DEFAULT_MAX_REQUEST_MS_INIT_PARAM(__DEFAULT_MAX_IDLE_TRACKER_MS_INIT_PARAMMANAGED_ATTR_INIT_PARAMMAX_REQUESTS_PER_S_INIT_PARAMDELAY_MS_INIT_PARAMTHROTTLED_REQUESTS_INIT_PARAMMAX_WAIT_INIT_PARAMTHROTTLE_MS_INIT_PARAMMAX_REQUEST_MS_INIT_PARAMMAX_IDLE_TRACKER_MS_INIT_PARAMINSERT_HEADERS_INIT_PARAMTRACK_SESSIONS_INIT_PARAMREMOTE_PORT_INIT_PARAMIP_WHITELIST_INIT_PARAMENABLED_INIT_PARAM USER_AUTH USER_SESSIONUSER_IP USER_UNKNOWN_contextLjavax/servlet/ServletContext;_delayMs _throttleMs _maxWaitMs _maxRequestMs_maxIdleTrackerMs_insertHeadersZ_trackSessions _remotePort_enabled_passes Ljava/util/concurrent/Semaphore;_throttledRequests_maxRequestsPerSec_queue[Ljava/util/Queue; SignatureA[Ljava/util/Queue; _listeners6[Lorg/eclipse/jetty/continuation/ContinuationListener; _rateTrackers(Ljava/util/concurrent/ConcurrentHashMap;nLjava/util/concurrent/ConcurrentHashMap; _whitelistLjava/util/List;$Ljava/util/List;_requestTimeoutQ'Lorg/eclipse/jetty/util/thread/Timeout;_trackerTimeoutQ _timerThreadLjava/lang/Thread;_running()VCodeLineNumberTableLocalVariableTablethis&Lorg/eclipse/jetty/servlets/DoSFilter;init(Ljavax/servlet/FilterConfig;)Vpriorityp filterConfigLjavax/servlet/FilterConfig; maxRequests parameterdelaythrottledRequestsmaxWaitthrottle maxRequestMsmaxIdleTrackerMs whiteList StackMapTabledoFilter[(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljavax/servlet/FilterChain;)VrequestLjavax/servlet/ServletRequest;responseLjavax/servlet/ServletResponse; filterChainLjavax/servlet/FilterChain; Exceptionsm(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Ljavax/servlet/FilterChain;)V continuation-Lorg/eclipse/jetty/continuation/Continuation; overRateLimitdelayMs insertHeaders throttledLjava/lang/Boolean; throttleMse Ljava/lang/InterruptedException;'Ljavax/servlet/http/HttpServletRequest;(Ljavax/servlet/http/HttpServletResponse;nowtracker2Lorg/eclipse/jetty/servlets/DoSFilter$RateTracker;accepted;h23an doFilterChainm(Ljavax/servlet/FilterChain;Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)VchainthreadrequestTimeoutTask,Lorg/eclipse/jetty/util/thread/Timeout$Task;closeConnectiond(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Ljava/lang/Thread;)V!Ljava/lang/IllegalStateException;Ljava/io/IOException;} getPriority\(Ljavax/servlet/http/HttpServletRequest;Lorg/eclipse/jetty/servlets/DoSFilter$RateTracker;)IgetMaxPriority()IgetRateTrackerR(Ljavax/servlet/ServletRequest;)Lorg/eclipse/jetty/servlets/DoSFilter$RateTracker;typeallowedexistingsession Ljavax/servlet/http/HttpSession;loadIdcheckWhitelist%(Ljava/util/List;Ljava/lang/String;)Zaddressi$Ljava/util/Iterator; whitelist candidateLocalVariableTypeTable9(Ljava/util/List;Ljava/lang/String;)Z subnetMatch'(Ljava/lang/String;Ljava/lang/String;)Zx!Ljava/lang/NumberFormatException;i subnetAddress cidrMatcherLjava/util/regex/Matcher;subnetprefix subnetBytes[B addressByteslengthmaskaddressToBytes(Ljava/lang/String;)[Bresultword ipv6Matcher ipv4Matcher prefixToBytes(II)[Bindexdestroy extractUserId2(Ljavax/servlet/ServletRequest;)Ljava/lang/String;getMaxRequestsPerSecsetMaxRequestsPerSec(I)Vvalue getDelayMs()J setDelayMs(J)V getMaxWaitMs setMaxWaitMsgetThrottledRequestssetThrottledRequestspermits getThrottleMs setThrottleMsgetMaxRequestMssetMaxRequestMsgetMaxIdleTrackerMssetMaxIdleTrackerMsisInsertHeaders()ZsetInsertHeaders(Z)VisTrackSessionssetTrackSessions isRemotePort setRemotePort isEnabled setEnabledenabled getWhitelist()Ljava/lang/String;iteratorLjava/lang/StringBuilder;(Ljava/util/Iterator;A setWhitelist(Ljava/lang/String;)Varr$[Ljava/lang/String;len$clearWhitelistaddWhitelistAddress(Ljava/lang/String;)ZlistremoveWhitelistAddress access$000:(Lorg/eclipse/jetty/servlets/DoSFilter;)[Ljava/util/Queue;x0 access$100)(Lorg/eclipse/jetty/servlets/DoSFilter;)Z access$200O(Lorg/eclipse/jetty/servlets/DoSFilter;)Lorg/eclipse/jetty/util/thread/Timeout; access$300 access$400%()Lorg/eclipse/jetty/util/log/Logger; access$500P(Lorg/eclipse/jetty/servlets/DoSFilter;)Ljava/util/concurrent/ConcurrentHashMap; SourceFileDoSFilter.java +, 32 12 6 %& 78&java/util/concurrent/ConcurrentHashMap)java/util/concurrent/CopyOnWriteArrayList ./%org/eclipse/jetty/util/thread/Timeout   java/util/Queue3org/eclipse/jetty/continuation/ContinuationListener )**java/util/concurrent/ConcurrentLinkedQueue&org/eclipse/jetty/servlets/DoSFilter$1 7 8maxRequestsPerSec       maxWaitMs     ipWhitelist    trackSessions  remotePort      &org/eclipse/jetty/servlets/DoSFilter$2 7 45 8 managedAttr  %javax/servlet/http/HttpServletRequest&javax/servlet/http/HttpServletResponse Q[  Q DoSFilter.Tracker 0org/eclipse/jetty/servlets/DoSFilter$RateTracker   tu  java/lang/StringBuilderDOS ALERT: Request rejected ip=   ,session= ,user=   java/lang/Object  DoSFilter unavailable   DOS ALERT: Request throttled ip=DOS ALERT: Request delayed= ms ip=delayed   8 !"      DoSFilter.Throttledjava/lang/Boolean   b    +org/eclipse/jetty/continuation/Continuation  8 8javax.servlet.resumed 8java/lang/InterruptedExceptionDoS  &org/eclipse/jetty/servlets/DoSFilter$3 7  8   Connectionclose ! "#$ x8java/lang/IllegalStateException %&'java/io/IOException ( )8  * +,  - . / 0 1 23 5org/eclipse/jetty/servlets/DoSFilter$FixedRateTracker $ 74 56 7 8 9java/lang/String/ :;  < = >? @ ABjava/lang/NumberFormatException"Ignoring malformed CIDR address {} C $Ignoring malformed remote address {}  DE FG DH I Destroy {} J K8   # Ljava/util/concurrent/Semaphore 7M    ,java/util/ArrayList NO  PQWhitelisted IP addresses: {} R  S$org/eclipse/jetty/servlets/DoSFilterT UV*(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3}) WX(\p{XDigit}{1,4}):(\p{XDigit}{1,4}):(\p{XDigit}{1,4}):(\p{XDigit}{1,4}):(\p{XDigit}{1,4}):(\p{XDigit}{1,4}):(\p{XDigit}{1,4}):(\p{XDigit}{1,4}) ([^/]+)/(\d+)javax/servlet/Filter (\d{1,3})(\p{XDigit}{1,4})javax/servlet/FilterConfigjavax/servlet/ServletExceptionjavax/servlet/FilterChainjava/lang/Throwable*org/eclipse/jetty/util/thread/Timeout$Taskjava/lang/Threadjavax/servlet/http/HttpSessionjava/util/Iteratorjava/util/regex/Matcherjava/util/ListgetServletContext ()Ljavax/servlet/ServletContext;*(Lorg/eclipse/jetty/servlets/DoSFilter;I)VcleargetInitParameter&(Ljava/lang/String;)Ljava/lang/String;java/lang/IntegerparseInt(Ljava/lang/String;)Ijava/lang/Long parseLong(Ljava/lang/String;)J parseBooleansetNow setDuration)(Lorg/eclipse/jetty/servlets/DoSFilter;)Vstart getFilterNamejavax/servlet/ServletContext setAttribute'(Ljava/lang/String;Ljava/lang/Object;)V@(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)VgetNow getAttribute&(Ljava/lang/String;)Ljava/lang/Object;isRateExceeded(J)Zappend-(Ljava/lang/String;)Ljava/lang/StringBuilder; getRemoteAddrgetRequestedSessionIdgetUserPrincipal()Ljava/security/Principal;-(Ljava/lang/Object;)Ljava/lang/StringBuilder;toString!org/eclipse/jetty/util/log/Loggerwarn((Ljava/lang/String;[Ljava/lang/Object;)V addHeader'(Ljava/lang/String;Ljava/lang/String;)V sendError(J)Ljava/lang/StringBuilder;2org/eclipse/jetty/continuation/ContinuationSupportgetContinuationM(Ljavax/servlet/ServletRequest;)Lorg/eclipse/jetty/continuation/Continuation; setTimeoutsuspendjava/util/concurrent/TimeUnit MILLISECONDSLjava/util/concurrent/TimeUnit; tryAcquire#(JLjava/util/concurrent/TimeUnit;)ZTRUEaddContinuationListener8(Lorg/eclipse/jetty/continuation/ContinuationListener;)Vadd(Ljava/lang/Object;)Zpoll()Ljava/lang/Object; isSuspendedresumereleaseacquirelog*(Ljava/lang/String;Ljava/lang/Throwable;)V currentThread()Ljava/lang/Thread;(Lorg/eclipse/jetty/servlets/DoSFilter;Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Ljava/lang/Thread;)Vschedule/(Lorg/eclipse/jetty/util/thread/Timeout$Task;)Vcancel isCommitted setHeader getWriter()Ljava/io/PrintWriter;java/io/PrintWritergetOutputStream%()Ljavax/servlet/ServletOutputStream;!javax/servlet/ServletOutputStream(Ljava/lang/Throwable;)V interruptgetType getSession#(Z)Ljavax/servlet/http/HttpSession;isNewgetIdjavax/servlet/ServletRequest getRemotePort(I)Ljava/lang/StringBuilder;get&(Ljava/lang/Object;)Ljava/lang/Object;=(Lorg/eclipse/jetty/servlets/DoSFilter;Ljava/lang/String;II)V putIfAbsent8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;()Ljava/util/Iterator;hasNextnextcontains(Ljava/lang/CharSequence;)Zequalsjava/util/regex/Patternmatcher3(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;matchesgroup(I)Ljava/lang/String;infovalueOf'(Ljava/lang/String;)Ljava/lang/Integer; byteValue()B((Ljava/lang/String;I)Ljava/lang/Integer;intValuedebug cancelAllavailablePermits(IZ)Vsplit'(Ljava/lang/String;)[Ljava/lang/String;addAll(Ljava/util/Collection;)Ztrimremoveorg/eclipse/jetty/util/log/Log getLogger6(Ljava/lang/Class;)Lorg/eclipse/jetty/util/log/Logger;compile-(Ljava/lang/String;)Ljava/util/regex/Pattern;!a5Nt)))E #'+-/ 4 7 9 2 ;BBBBBBBBB !"B#B$%&'()*+,'-./'0123245B62789o1**Y * Y * Y* Y:}%0c; 1<=>?9*+**`**`=*'*YS>*Y*S*=+N--=*7+ N- -!7*"6+#N- -6*$%7+'N- -!7*()7 ++N- -!7 * ,)7 +-N- -!7 * .)7 +/N- -!7 * 01:+2N--:*3+4N*- -56+7N*- -58+9N*--5:+;N*- -5<*=X**>?*=X**@?**AY*BC*CD*!+E5*+F*G:C $/<>MSZ]fjoty  &*37:@I]f z  4678; >@&-A<=BC]DfEyFGeHGI )J   K *LM&,NNZOCO OPNNOWOCO OPNNO[O OPNNOWOCO OPNNOeQR9Z*+H,I-J: < =;*<=STUVWXYZQ[9&*K -+,L*M7+NOP:o*+Q:R6 *-+,S*T7*U6 rVYWXY+ZY[Y+\Y]Y+^_`ab ,cde,fVYWgY+ZY[Y+\Y]Y+^_`ab+NhVYWiYjkY+ZY[Y+\Y]Y+^_`ab ,cle+m: +Nh  n o6*p*qrs6+m:+tOu: *v7  w *+x6 +twh*U ,cye  no* 2z* 2{WF*6  0* 2|}:~ *p+Ow *p6 *-+,S*U ,cde,f*60*2|}:   ~  *p:*,f*60*2|}:   ~  *pP:F*60*2|}:~ *p0y0hyhhhjh:n[ACDGJ&L+Q2T;W@YGZH`NaTbpghijkp qrw`xeyozu{|}~ !05DUdknqy"1BQX[^ho~;u"\] ;\^NI_TC` U\]<5A @ \]ab c \] 5AdeB\] )5A\]v5A<=SfUgWXh&ijkM!7l'N LXmOnopld Onoplmq/1 1Ir#1Is Onopls1OnoplYZtu97:Y*,-:*+,-L :$,,.,:"$),6;>7<=7vX7Sf7Ug2w5$x{M,Opno|}s YZ~9>, ,,:,:-*-:.  !*-/9=;>! d/ d><=>Sf>Ug>w5M K B 9m*+,,: ; <=SfijM 9,:; <=9+HM*+N- 6T*,,,N63*"VYW+Y+` +N6*-P:s** +6Y*-*PY*-*:*-P::*, ,N:V1 357;/=6><BiClGyI~KLNOPRUWZ^;f 9`)j<=ST lyxijM* N %EN8lNll 9A+N-2-:*,,:"ce%g/h1l:m<o?p;4!8A<=A/A A0M)N '9  ²+N--:-6:aY+S*:aY+S*,:aY,S6*: 6  $ 3  3~ 3  3~ "%:juvwy}"%'9;CHZ\chz|;z '( <="Cc_A- M@ ONNN  !9t+M,+N6--,`T-+N-M:69-l`6~|T`~T:F/57?FLWky;\ $kO>LD?Q<=M"=9-N6l-T-dxdT-:"+;4-<=--)&M 89=aY*S**C**** :"%,3<; =<=96:;<=ST9/*:; <=9>*: ;<=9/*ƭ:; <=9>*Ʊ:  ;<=9/*ǭ:; <=9>*DZ: #$;<=9/*Ȭ:.; <=9-*p *p=*Y*d`˵p*ȱ:9:';,<; -<=-M F9/*̭:E; <=9>*̱: OP;<=9/*>:Z; <=9>*>: ef;<=9/*@:q; <=9>*@: }~;<=9/*ͬ:; <=9>*ͱ: ;<=9/*:; <=9>*: ;<=9/*:; <=9>*: ;<=9/*ά:; <=9>*α: ;<=9CVYWL* M,&,N+-YW, +жYW+`:"%+4;>;*%,C<=; ,M(9 XYM+жN-66-2:*,W* * ,WaY,S:"#+1:EW;H#"X<=XP/ P0MON898 * :  ;  <=9> ** +Ԭ:; <= 9{,M,؞+,: ; <=/ 0M@'9? * +:; <= 9/*:}; =9/*:}; =9/*:}; =9/*:}; =9:}9/*:}; =89F"۸ܳݸ޳߸޳޳: 2PAy z