7  java/lang/Object()Vjava/util/ArrayList   org/freertr/user/userTesterOneshowsLjava/util/List;org/freertr/tab/tabGen   procsLorg/freertr/tab/tabGen;unnamed  testNameLjava/lang/String;   testResI"c $ %window'org/freertr/util/cmds) &+ ,'(Ljava/lang/String;Ljava/lang/String;)V . /0cmdLorg/freertr/util/cmds;2init 4 5stage 7 8 lineN :.;org/freertr/user/userTester &= >?pipeLorg/freertr/pipe/pipeSide; :A B parallel DEF GHorg/freertr/pipe/pipeDiscardneedAny8(Lorg/freertr/pipe/pipeSide;)Lorg/freertr/pipe/pipeSide;Jorg/freertr/pipe/pipeProgress IL M(Lorg/freertr/pipe/pipeSide;)V O PQrdrLorg/freertr/pipe/pipeProgress; = :T Utemp W Xpath Z [prefix :] ^ slot ] :a bcconfigZ a :f gcunexit f :j kcwait j :n o reapply n :r s restart r :v wcfgarch v :z {runner z :~ chattyLorg/freertr/tab/tabIntMatcher; ~ : predelay :  postdelay : jvn : jvp makeConcatWithConstants8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; jvm : oobase : others : remoteD : remoteALorg/freertr/addr/addrIP; : remoteL : remoteP : remoteS : persistP : persistD : persistC Lorg/freertr/user/userTesterPrc; : capture : %c &(Ljava/lang/String;)Ljava/lang/String;failed:  qc pass: &  getOriginal()Ljava/lang/String; 9(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String; fileName getRes n(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; lineD  java/util/Listsize()I get(I)Ljava/lang/Object;java/lang/String   (I)Ljava/lang/Comparable;org/freertr/user/userTesterPrc stopNow  getLogName(I)Ljava/lang/String;  org/freertr/util/bitstxt2buf$(Ljava/lang/String;)Ljava/util/List;  buf2txt&(ZLjava/util/List;Ljava/lang/String;)Z    org/freertr/user/userFlashdelete(Ljava/lang/String;)Z    checkLogs(Ljava/util/List;)Z   tracesgenerating mdfile I debugRes(Ljava/lang/String;)V  add(Ljava/lang/Object;)Z## **Topology diagram**!## **Configuration** # $name'```) *9(Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String; , -.addAll(Ljava/util/Collection;)Z0## **Verification**2java/util/Collection 5 6 readConns 8 9conns;org/freertr/user/userTesterCon : :> ? remP :A B locP D EFfind.(Ljava/lang/Comparable;)Ljava/lang/Comparable; H IFdel :K LperP :N OPperC Lorg/freertr/user/userTesterCon;Rorg/freertr/spf/spfCalcTsfdp -Tpng > net.png << EOFV graph net {Xinode [fontname=ubuntu,shape=none,labelloc=b,image="../misc/router.svg"] edge [fontname=ubuntu,shape=none] :[ \ifc ^ _\(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;a}cEOF f gequalsisuccessknot applicablemrun o pgetLin r sdoLine u i x yzdoChattyB(Lorg/freertr/user/userTesterPrc;Lorg/freertr/tab/tabIntMatcher;)Z|$ ~ indexOf(Ljava/lang/String;)I  length   substring(II)Ljava/lang/String;rem    startsWith  str2num  :(Ljava/lang/String;IILjava/lang/String;)Ljava/lang/String;  valueOf&(Ljava/lang/Object;)Ljava/lang/String; ^(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;)Ljava/lang/String;perbp))   toLowerCaseexecuteswcommandjava.net.serversocket.bindjava.net.bindexception exception tracebackterminal table raw  putLine  doSync;   getSummary'(Ljava/lang/String;Ljava/lang/String;)I  org/freertr/tab/tabIntMatchermatches(I)Z & word!commentcomments description &  getRemainingexitoutputshow: config: addpersist '(ILjava/lang/String;)Ljava/lang/String; I  debugStat   repairHwCfg)  F  str2lst  applyCfg(Ljava/util/List;)V addremote '(Ljava/lang/String;I)Ljava/lang/String;  Y(Lorg/freertr/pipe/pipeProgress;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V  syncraddother controllerfeatureorg/freertr/user/userTesterImg ftr   otherP  nothave  random(II)Ihworg/freertr/addr/addrMac     fromString  ! "java/lang/Integer(I)Ljava/lang/Integer; % &otherC1 ( ) otherNS + ,otherNC :. /0 convert2udp}(Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;ILjava/util/List;Ljava/util/List;Ljava/util/List;)Ljava/lang/String; 234 56org/freertr/pipe/pipeShellexec9(Ljava/lang/String;Ljava/lang/String;ZZZ)Ljava/util/List; 8 9otherC2 ; <otherC3 = @AB CDorg/freertr/pipe/pipeSidesetTime(I)V F GotherS I JotherW IL MNsetMax(J)V P QgetLine IS TNsetCurr V Wtrim Y  [ \DputChar ^ _otherDa addrouter c dDsleepflnhextrajnoextralwritennowritepswcfgrnoswcfgtfancyvnofancyxtstampznotstamp|telnet~notelnetsourcenosourceextcfgnoextcfgreplaceorg/freertr/user/userTesterRep + noreplace  clear nodelete )   J(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; : :(Ljava/lang/String;ILjava/lang/String;I)Ljava/lang/String;!logging milliseconds"vrf definition tester exitserver telnet tester security protocol telnet vrf tester exec colorize header exec monitor  src  trg   replaceAll  set'(ILjava/lang/Object;)Ljava/lang/Object;  org/freertr/user/userFilter text2section"(Ljava/util/List;)Ljava/util/List;   getSection7(Ljava/util/List;Ljava/lang/String;ZZZ)Ljava/util/List;   section2text#(Ljava/util/List;Z)Ljava/util/List;%fn%%rn%s# o(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;$  (ILjava/lang/Object;)V java/io/File    exists()Z reload force  waitForterminal no monitorterminal length 0org/freertr/user/userTesterCap  rtr [% ](Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;terminal table fancyterminal timestamps reload in 10yconfigure reapply5d  getPrc4(Ljava/lang/String;)Lorg/freertr/user/userTesterPrc;&sync send pcap'charread  ping(  pingTest$(Lorg/freertr/user/userTesterPrc;Z)Zmpingtpingdping! size 1111 repeat 1111#org/freertr/addr/addrIP " " "' ( isMulticast)*,90-100 . /0 morePings5(Ljava/lang/String;Lorg/freertr/tab/tabIntMatcher;I)Z +3 4((ILjava/lang/String;I)Ljava/lang/String;, 7 8 getOutput Signature2Ljava/util/List;$Ljava/util/List;2Ljava/util/List;6Ljava/util/List;>;:Lorg/freertr/tab/tabGen;!(Lorg/freertr/user/userTester;I)VCodeLineNumberTable StackMapTablegetSuccgetFetgetCsvgetHtmstopAllsaveMddoTest'(Ljava/util/List;)Z SourceFileuserTester.javaBootstrapMethodsOQwS#--U;;;W8Y # Example: [![topology](/img/.png)]**:**_ -sw.txta.mdc//e0  --  [weight=10] [taillabel=] [headlabel=]g.doti127.0.0.1  127.0.0.1 k    mo 127.0.0.1 qtest: s/: configuring processu -hw.txtw telnet  y!{ } -   found  images for features test hwcfg tcp2vrf  hwid tester-slotrwpath save -statetcp2vrf  tester 23port    -  - : hostname logging file debug  router - hw.txt packet capture  -.pcapcmd:packet capture 100 1   delay 11cmd:$/: test failed: too much traffic /: output .  $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; InnerClasses%java/lang/invoke/MethodHandles$Lookupjava/lang/invoke/MethodHandlesLookup &>?PQ^ X[bcgckco s w{   9: 9;9; 9<9=9> % /059;8 ?@+S**Y *Y***!#*&Y((*-*13*6+9+E,R.BZ :@C@0 *A6B @D@N* LL+*A@A CEB  @J!**3**3*-κANO QB E@/+****A\F@/+****Afp@l6**Y6`6*6*߹**6Aop rs#t%vB G@a<*V*M,,N-,W,W*- -,W*Y`A2 } ~&1:BEPZ}`BBH@  *NY L+*W+(W+W+(W+*պW+(W+ W=*]*N+(W+-"%W+&W+*Y*_-"(+W+&W* +(W+/W=* :+(W+&W+* 1+W+&W+*V*պ3WY L=**4=**N6-7-7:::Y<::Y<:=@@@6*g*: - J 7C::   7C::   7 GW J M J*+SW+UW+WW=*x*N+-"YW6-7G-7::J(+-"J"ZMZ]W+`W+bW+*V*պdWA"H "+5>NWanz '-@HUciv!(/28>DNXbo{ BcdCB  :::"": )$:$@s3=*"*N+-"e-*A $&,1B #i@@**h3*&Y((*-A @@**j3*&Y((*-A I,@**,*+,*l3**nM,*&Y(,*-*q**t*v3>* ***w*tAV '( - 1 4 BIPTU\iB  !@[+{}=M+`+N+L-{}=-`-:-N-\--=*%*_dh`h`=+``L*`=+**Lb-R--=*%*_dh`h`=+``L"h*`=+`L --dh=*_dh``=--d-N-e-e+L +L+A$ !#$"%*&7'>(H)U*\+l,{-~/01345678:;<> ?@(A2B5D?ELGVIYJB n"?:  @f+=+U+N-}-}(-}-}-}ABTUWX Y*Z,\6]9_C`FbPcRe\f^WdiB# 9Jyz@g++++>** Atu vw!x#z){B#s@ ~*-L++ɶ+˶e+Ͷe*nL++ɶe+϶e**-ѵ*N*+նe*h*t+׶eMNY :*nL+}+ɶep+,++,+L* +1+W+-,+-+L*Y*_+(+W+W}*-ѸW+ݶe**t*-MY N*N*_,*nL+!+ɶe*+L-+W-*Y*_,W*,"**W(*WY N*nL++ɶe-+W-*Y*_,(W***-+e**t*-MY N*nL+!+ɶe*+L-+W**L-+W-*Y*_,WY*N*Y*_,*|+:**W(WY N*nL++ɶe-+W-*Y*_,(W*-+el**tMNu1*_dh`*`6*-:(:*-L+v+eVY*N*Y*_*-M,*,CM*-N-*-ƺN-*-ƺN+e*-:Y :6*o*: *&Y*-6 *-L+!   + }6    W*N*:Y : *nL+"+ɶe*+L +WػY : Y : Y : 6     :*&Y*-*-:*-:*-:Y:*-ƶW W*-W *-ƸW*-W *-ƸW ^,,-#,*|$'**_*Y*_   -1W*|7'**_*Y*_   -1W:'**_*Y*_   -L +W *Y*_WY*N*Y*_*|+:  =>? E* W( WY : *nL++ɶe +W *Y*_(WHH6*NK67 O:*NRU:HX   Z ]  +`e* *b*-M>66666: : Y : Y : *-L+6*nL++ɶe*&Ye+*-+ge 6+ie 6+ke>+me>+oe 6r+qe 6b+se 6R+ue 6B+we 62+ye 6"+{e 6+}e 6+e*-: +e : +e*-: +e : +e)*-LY+*-Ʒ:   W+e  r+eD*-L*&Ye(*- *-LY+(:   W'+e Y : *nL+"+ɶe*+L +W *_W *YW *Y*_,W **_dh`*`W*_dh`626*h`6 ```W *Y*_,WY :  (W (W (W *,*W *Y*_,WY :  ,W W *Y*_,W[ W W W W W W W W*nL++ɶe +W )*x : *  +W6 S :6 0 L+L +Wʄ D :6 & ::: 66 ' L*+L +W*L+*նL+,L(: :+*#*Y*_,L + L +  *Y*_,(WY ݶߚ   WY*N*Y*_,*|+:(WJ6*t>kY*N*Y*_,*|+:*W6*ĹE*:,e *Y*_,   k*l6*p*d * *b+e**-ѵ3+e*-Ƹ==b*+M,*-κ,W*-L+e,+e,*-Ѷ+ e,*-Ѻ + e,*-ƸZ+e,OL++*-Ѷ}+veYN-*-ƶW*,-wW+e$*&Y(*-Ѻ*-*,W+e *,W+e *,W+e *-N*-:**-ƶ:*-: :"Y$:*-ƶ%W& ):*W,,,-6 6  vY:  +W -,,-6   *  d6  6  1*N*_," 2 * +׶e=*-L*N*_,"+5,+6N- ** -W*A&'16:=GJKU`pq{)78BIMNV^otx{&'18<=EMRVYcflw   , 5 ; <FSWXZ\qz~ !"#$%'(), -../>0A2I3Q4T6r8w9z;-=>?@BCEFGIJLMOP QR$S2TBUKVTW]XfYsZ}[\]^R`abdeMf{ghijklmnpqrtuwy3z;{<}H~INXbisxy &)8;EHKUX[egjtvy       ) 2 5 ? B E O W h r u                       -  >  T  u      ! " # $  %  &  ' , ( 7 ) Q * V + a , l - w . / 0 1 2 5 6 7 9 : < > ? @ A B D F G  H * I 7 J F K Q H W F ] N g O n P } Q R P T V W X Y Z W ] ^ _ ` a  b  d  e # f , h : i ? j W l f m o p q r s t u v w s z { | } ~% 1 4 Q }W \ d i q u }                        ' / 9 = > H S T ^ n o y                       " # - 5 > K P Q Z _ h u }                    ' - 3 4 > F [ a e k l w x } B9 % /0   A ' | #% \ 0V   $  &   0   /)   8./'#*6C,    / %*-4"-,  " 7 @PYN-*-ƶW*-Ƹ6+*---W+*---*A*    $ 3 5 F H N B 5KLM-NPRTVXZ\^`bdfhjlnprtvxz|~