403Webshell
Server IP : 209.209.40.120  /  Your IP : 216.73.217.112
Web Server : Microsoft-IIS/10.0
System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586
User : NEWWWW$ ( 0)
PHP Version : 8.3.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/Program Files/Android/Android Studio/plugins/gradle/lib/ant/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Program Files/Android/Android Studio/plugins/gradle/lib/ant/ant-junit.jar
PK��X��META-INF/MANIFEST.MFManifest-Version: 1.0
Ant-Version: Apache Ant 1.10.13
Created-By: 20+36-2344 (Oracle Corporation)

Name: org/apache/tools/ant/taskdefs/optional/
Extension-Name: org.apache.tools.ant
Specification-Title: Apache Ant
Specification-Version: 1.10.14
Specification-Vendor: Apache Software Foundation
Implementation-Title: org.apache.tools.ant
Implementation-Version: 1.10.14
Implementation-Vendor: Apache Software Foundation

PK�.3��Norg/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer$Format.class���4Aorg/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer
.org/apache/tools/ant/types/EnumeratedAttribute<init>()V
java/lang/StringframesnoframesHorg/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer$FormatCodeLineNumberTableLocalVariableTablethisJLorg/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer$Format;	getValues()[Ljava/lang/String;
SourceFileAggregateTransformer.javaInnerClassesFormat!/*��E9�	YSY
S�L
	PK�a�&�&Gorg/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer.class���4�
java/lang/Object<init>()VAorg/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer
frames	
formatLjava/lang/String;	taskLorg/apache/tools/ant/Task;)org/apache/tools/ant/taskdefs/XSLTProcess
	xsltTask+Lorg/apache/tools/ant/taskdefs/XSLTProcess;
bindToOwner(Lorg/apache/tools/ant/Task;)V	 !privateDBFactory*Ljavax/xml/parsers/DocumentBuilderFactory;
#$%&'Horg/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer$FormatgetValue()Ljava/lang/String;	)*+documentLorg/w3c/dom/Document;
-./01(javax/xml/parsers/DocumentBuilderFactorynewDocumentBuilder%()Ljavax/xml/parsers/DocumentBuilder;
34567java/io/FiletoPath()Ljava/nio/file/Path;9java/nio/file/OpenOption
;<=>?java/nio/file/FilesnewInputStreamF(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/InputStream;
ABCDE!javax/xml/parsers/DocumentBuilderparse-(Ljava/io/InputStream;)Lorg/w3c/dom/Document;
GHIsetXmlDocument(Lorg/w3c/dom/Document;)V
KLMNjava/io/InputStreamclosePjava/lang/Throwable
ORST
addSuppressed(Ljava/lang/Throwable;)VVjava/lang/ExceptionX#org/apache/tools/ant/BuildExceptionZjava/lang/StringBuilder
Y]Error while parsing document: 
Y_`aappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;
Yc`d-(Ljava/lang/Object;)Ljava/lang/StringBuilder;
Yfg'toString
Wij*(Ljava/lang/String;Ljava/lang/Throwable;)V	lmnstyleDirLjava/io/File;	pqntoDirsextension is not used anymoreuorg/apache/tools/ant/Project
wxyz{org/apache/tools/ant/Tasklog(Ljava/lang/String;I)V
}~createParam3()Lorg/apache/tools/ant/taskdefs/XSLTProcess$Param;
���createClasspath#()Lorg/apache/tools/ant/types/Path;	���xsltFactory3Lorg/apache/tools/ant/taskdefs/XSLTProcess$Factory;
���
createFactory5()Lorg/apache/tools/ant/taskdefs/XSLTProcess$Factory;
��checkOptions
w���
getProject ()Lorg/apache/tools/ant/Project;�&org/apache/tools/ant/taskdefs/TempFile
�
�
���
getStylesheet'()Lorg/apache/tools/ant/types/Resource;
���setXslResource((Lorg/apache/tools/ant/types/Resource;)V�@org/apache/tools/ant/taskdefs/optional/junit/XMLResultAggregator
����getDestinationFile()Ljava/io/File;
���setIn(Ljava/io/File;)V
�����java/lang/Stringequals(Ljava/lang/Object;)Z
���getClass()Ljava/lang/Class;
����'java/lang/ClassgetName	���counterI
Y�`�(I)Ljava/lang/StringBuilder;	���
FILE_UTILS%Lorg/apache/tools/ant/util/FileUtils;
t���
getBaseDir�java.io.tmpdir
t���getProperty&(Ljava/lang/String;)Ljava/lang/String;
�����#org/apache/tools/ant/util/FileUtilsresolveFile0(Ljava/io/File;Ljava/lang/String;)Ljava/io/File;
����
setDestDir
����setProperty(Ljava/lang/String;)V
���execute
3���junit-noframes.html
3��#(Ljava/io/File;Ljava/lang/String;)V
���setOut
�����/org/apache/tools/ant/taskdefs/XSLTProcess$Param
setProject!(Lorg/apache/tools/ant/Project;)V�
output.dir
����setName
3��'getAbsolutePath
����
setExpression
��configureForRedirectExtension
�����java/lang/SystemcurrentTimeMillis()J
�'Errors while applying transformations: 
U'
getMessageTransform time: 
Y	`
(J)Ljava/lang/StringBuilder;ms
wz�$org/apache/tools/ant/taskdefs/Delete


�setFile
�
'
getXslName
�getClassLoader()Ljava/lang/ClassLoader;1org/apache/tools/ant/taskdefs/optional/junit/xsl/
!"#$%java/lang/ClassLoadergetResource"(Ljava/lang/String;)Ljava/net/URL;'0org/apache/tools/ant/types/resources/URLResource
&)*(Ljava/net/URL;)V,1org/apache/tools/ant/types/resources/FileResource
+.�
0�11org/apache/tools/ant/taskdefs/XSLTProcess$Factory3#net.sf.saxon.TransformerFactoryImpl5
-saxon.xsl7.xsl9noframes;junit-noframes=junit-frames?.
tA�B"(Ljava/lang/String;)Ljava/io/File;
3DEF
isAbsolute()Z
3HI'getPathKxsl/
�"Njava/io/FileNotFoundExceptionPCould not find jar resource 
M�
STUV'java/net/URLtoExternalForm
3XYFexists[Could not find file ']'
_`abc#org/apache/tools/ant/util/JAXPUtilsgetSystemId"(Ljava/io/File;)Ljava/lang/String;
�
fghij&javax/xml/transform/TransformerFactorynewInstance*()Ljavax/xml/transform/TransformerFactory;l8javax/xml/transform/TransformerFactoryConfigurationError
WnTpCcom.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImplr&org/apache/tools/ant/util/JavaEnvUtilst9
qvwxisAtLeastJavaVersion(Ljava/lang/String;)Zz9org/apache/tools/ant/taskdefs/XSLTProcess$Factory$Feature|Bhttp://www.oracle.com/xml/jaxp/properties/enableExtensionFunctions
y~(Ljava/lang/String;Z)V
0���
addFeature>(Lorg/apache/tools/ant/taskdefs/XSLTProcess$Factory$Feature;)V
-�i�,()Ljavax/xml/parsers/DocumentBuilderFactory;	��!	dbfactory
����getFileUtils'()Lorg/apache/tools/ant/util/FileUtils;FRAMES
ConstantValueNOFRAMESJDK_INTERNAL_FACTORYCodeLineNumberTableLocalVariableTablethisCLorg/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer;getDocumentBuilderFactory	setFormatM(Lorg/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer$Format;)VJLorg/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer$Format;doc
setXmlfileinLjava/io/InputStream;builder#Ljavax/xml/parsers/DocumentBuilder;eLjava/lang/Exception;xmlfile
StackMapTable
ExceptionssetStyledirstyledirsetTodirtodirsetExtensionext	transformtempFilePropertytmp
outputFiledelete&Lorg/apache/tools/ant/taskdefs/Delete;projectLorg/apache/tools/ant/Project;tempFileTask(Lorg/apache/tools/ant/taskdefs/TempFile;paramx1Lorg/apache/tools/ant/taskdefs/XSLTProcess$Param;t0Jdt
stylesheetURLLjava/net/URL;xslnamesuffixxsltFactoryNamegetStylesheetSystemIdurlfile�java/io/IOExceptionexc:Ljavax/xml/transform/TransformerFactoryConfigurationError;factoryfactoryName<clinit>
SourceFileAggregateTransformer.javaInnerClassesFormatParamFactoryFeature!��	��8��o
 !�!*+mnqn����J��
�k#*�*	�*+�*�Y��*�+�����
���"��#��#����������A	*+�"���
���	��	
�HI�>*+�(��
������+���=e��,M+�2�8�:N,-�@:*�F-�#-�J�:-�-�J�:�Q�� M�WY�YY�[\�^+�b�e,�h�� +O158ODGU�*
���� �+�D�G�H�d��>�+1��=��H��e��e�n�:�+3AKO�3AKOO�BU�W���>*+�k��
������n���>*+�o��
������n���C*�r�v��
�
�����~�2*��|���������2*������������R*���**�����*��������������
b*��*���L��Y��M,*���*�*����*�*�������	*����X�YY�[*�����^��Y`�����e:��+��+ƶȶ�:,��,��,�ٻ3Y+�ȷ�N��3Y*�o޷�N*�-��*��|:*�������*�o���*����7*���':�WY�YY�[�^��^�e�h���e7*��YY�[�^��^�e�
*�	��� �Y�:		*��	-�	�����U��$����'8Dfp	sx
~��
�������������8D M!V"\#a%�zf0�x�n��n�"��M��	b��V��N�����n��������L���0��t��
3�Bt�3�U#�R�W����H*�L*�k�+*����YY�[�^+�^�e� M�&Y,�(��+Y�3Y*�k+��-��,-0+246� +	��H��C���4�'�d*����
*���/M2,���
4L�6L8*�����YY�[:�^+�^�eN��YY�[<�^+�^�eN-��"DEF$H(K5LMNbP�>!�J�d��(<�Q�b��%F������$����;*�o�**���>�@�o�"*�o�C�**���*�o�G�@�o��XYZ%[:]�;����W�'��*�L*�k�D*���YY�[J�^+�^�e�LM,��MY�YY�[O�^+�^�e�Q�,�R��3Y*�k+��M,�W�%�MY�YY�[Z�^,�b\�^�e�Q�,�^��*
ijk(l,mHoMqZras�u�*(%�������Z.�n��H�S��53�����H*�dL+�/M,��e����M�
N�WY-�m�o,���s�u�+�yY{�}���k�.�
�����%�2�8�G��*	��H��C��
>���0�k	!��;��������������[\|����"#�	��	0�	y0�	PK�q�((;org/apache/tools/ant/taskdefs/optional/junit/BaseTest.class���4w
java/lang/Object<init>()V		
5org/apache/tools/ant/taskdefs/optional/junit/BaseTesthaltOnErrorZ	
haltOnFail	filtertrace	fork	
ifPropertyLjava/lang/String;	unlessPropertyjava/util/Vector
	!"#
formattersLjava/util/Vector;	%&'destDirLjava/io/File;	)*+ifCondLjava/lang/Object;
-./01java/lang/StringvalueOf&(Ljava/lang/Object;)Ljava/lang/String;
345setIf(Ljava/lang/Object;)V	78+
unlessCond
:;5	setUnless
=>5
addElement
@ABCDjava/io/FilegetAbsolutePath()Ljava/lang/String;	FGfailureProperty	IJ
errorProperty	LMskipNonTests	SignatureSLjava/util/Vector<Lorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement;>;CodeLineNumberTableLocalVariableTablethis7Lorg/apache/tools/ant/taskdefs/optional/junit/BaseTest;setFiltertrace(Z)VvaluegetFiltertrace()ZsetForkgetForksetHaltonerrorsetHaltonfailuregetHaltonerrorgetHaltonfailureifCondition
StackMapTable(Ljava/lang/String;)VpropertyNamegetIfCondition()Ljava/lang/Object;unlessConditiongetUnlessConditionaddFormatterB(Lorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement;)Velem?Lorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement;setTodir(Ljava/io/File;)VgetTodirgetFailurePropertysetFailurePropertygetErrorPropertysetErrorPropertysetSkipNonTestsisSkipNonTests
SourceFile
BaseTest.java!
"#NO&'GJ*+8+MP}3*�*�*�
*�*�*�*�*�Y�� *�$�Q&		 !"#"$-&R3STUVP>*��Q
56RSTWXYP/*��Q=RSTZVP>*��Q
EFRSTW[YP/*��QMRST\VP>*��Q
UVRSTW]VP>*�
�Q
]^RSTW^YP/*��QeRST_YP/*�
�QmRST45Pq*+�(*+�
+�,���QxyzRST`+aQ�-4bP>*+�2�Q
��RSTcdeP/*�(�Q�RST;5Pu*+�6*+�
+�,���Q��
��RSTf+aQ�-;bP>*+�9�Q
��RSTcgeP/*�6�Q�RSThiPA	*� +�<�Q
��R	ST	jklmP>*+�$�Q
��RST&'nDPL*�$�*�$�?��Q���RSTaoDP/*�E�Q�RSTpbP>*+�E�Q
��RSTGqDP/*�H�Q�RSTrbP>*+�H�Q
��RSTJsVP>*�K�Q
��RSTMtYP/*�K�Q�RSTuvPK�T�n��<org/apache/tools/ant/taskdefs/optional/junit/BatchTest.class���4U
5org/apache/tools/ant/taskdefs/optional/junit/BaseTest<init>()V.org/apache/tools/ant/types/resources/Resources
	
6org/apache/tools/ant/taskdefs/optional/junit/BatchTest	resources0Lorg/apache/tools/ant/types/resources/Resources;	projectLorg/apache/tools/ant/Project;
setCache(Z)V
add2(Lorg/apache/tools/ant/types/ResourceCollection;)V
 !"org/apache/tools/ant/types/FileSet
getProject ()Lorg/apache/tools/ant/Project;
#$%
setProject!(Lorg/apache/tools/ant/Project;)V

()*createAllJUnitTest;()[Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;
,-./0java/util/ArraysasList%([Ljava/lang/Object;)Ljava/util/List;
23456java/util/Collectionsenumeration/(Ljava/util/Collection;)Ljava/util/Enumeration;
89:;<java/util/Vectorsize()I
8>?@ensureCapacity(I)V
8BCD
addElement(Ljava/lang/Object;)V
FGHgetFilenames()[Ljava/lang/String;JKLMNjava/util/stream/Streamof.([Ljava/lang/Object;)Ljava/util/stream/Stream;PQRapply()Ljava/util/function/Function;JTUVmap8(Ljava/util/function/Function;)Ljava/util/stream/Stream;XQYW(Lorg/apache/tools/ant/taskdefs/optional/junit/BatchTest;)Ljava/util/function/Function;[Q\"()Ljava/util/function/IntFunction;J^_`toArray5(Ljava/util/function/IntFunction;)[Ljava/lang/Object;b9[Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;
defstream()Ljava/util/stream/Stream;hijtest ()Ljava/util/function/Predicate;Jlmnfilter9(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;PhP[t[Ljava/lang/String;	vwxyzjava/io/File
separatorCharC
|}~�java/lang/Stringreplace(CC)Ljava/lang/String;�6org/apache/tools/ant/taskdefs/optional/junit/JUnitTest
�
����setName(Ljava/lang/String;)V	���haltOnErrorZ
���setHaltonerror	���
haltOnFail
���setHaltonfailure	���filtertrace
���setFiltertrace	���fork
���setFork
���getIfCondition()Ljava/lang/Object;
���DsetIf
���getUnlessCondition
���D	setUnless	���destDirLjava/io/File;
����setTodir(Ljava/io/File;)V	���failurePropertyLjava/lang/String;
����setFailureProperty	���
errorProperty
����setErrorProperty
���isSkipNonTests()Z
���setSkipNonTests	���
formattersLjava/util/Vector;
�����java/util/ObjectsrequireNonNull&(Ljava/lang/Object;)Ljava/lang/Object;���acceptW(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;)Ljava/util/function/Consumer;
8���forEach (Ljava/util/function/Consumer;)V
|���lastIndexOf(I)I
|���	substring(II)Ljava/lang/String;�.java
|���endsWith(Ljava/lang/String;)Z�.classCodeLineNumberTableLocalVariableTablethis8Lorg/apache/tools/ant/taskdefs/optional/junit/BatchTest;
addFileSet'(Lorg/apache/tools/ant/types/FileSet;)Vfs$Lorg/apache/tools/ant/types/FileSet;
StackMapTablerc/Lorg/apache/tools/ant/types/ResourceCollection;elements()Ljava/util/Enumeration;	SignatureS()Ljava/util/Enumeration<Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;>;
addTestsTo(Ljava/util/Vector;)V8Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;vtestsLocalVariableTypeTableMLjava/util/Vector<-Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;>;P(Ljava/util/Vector<-Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;>;)VjavaToClass&(Ljava/lang/String;)Ljava/lang/String;filenamecreateJUnitTestL(Ljava/lang/String;)Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;	classnamelambda$getFilenames$3(I)[Ljava/lang/String;x$0Ilambda$getFilenames$2namelambda$getFilenames$1lambda$createAllJUnitTest$0<(I)[Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;
SourceFileBatchTest.javaBootstrapMethods
"java/lang/invoke/LambdaMetafactorymetafactory�(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;�
 #
$'(I)Ljava/lang/Object;)
*-(Ljava/lang/Object;)Z/
0123�#org/apache/tools/ant/types/ResourceisExists5((Lorg/apache/tools/ant/types/Resource;)Z7
089:getName()Ljava/lang/String;<9(Lorg/apache/tools/ant/types/Resource;)Ljava/lang/String;>
?��B
CE
F
DJ
KLMaddFormatterB(Lorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement;)VMInnerClassesQ%java/lang/invoke/MethodHandles$LookupSjava/lang/invoke/MethodHandlesLookup1
%�a*�*�Y�	�
*+�*�
���93:;<������^*+�+��+*��"��EOPR�������A	*�
+�&��
^_�	��	�����5*�'�+�1��g���������3*�'M++�7,�`�=,N-�66�-2:+�A�����qrs&t,s2v�*&i�3��3��.b3���8aa��)*�\**�E�I�O�S*�W�S�Z�]�a��~)~�*��GH�{=*�
�c�g�k�o�S�p�k�q�S�r�]�s���� �*�4�<��=��	�J*�u.�{/.�{\.�{���������q��Y��M,+��,*����,*����,*����,*����,*����,*����,*����,*����,*����,*�ö�*��,Y��W����,��:��
���%�-�5�=�E�M�U�]�o�� q��q	�ii�

�/�|����

�6**.�ܶ�����
��N*��*���������@
�/�����
\	!"%&(+,.46;,=@A!&DGHINO
PRTPK��P��Lorg/apache/tools/ant/taskdefs/optional/junit/BriefJUnitResultFormatter.class���4
java/lang/Object<init>()V
	
java/text/NumberFormatgetInstance()Ljava/text/NumberFormat;	Forg/apache/tools/ant/taskdefs/optional/junit/BriefJUnitResultFormatternumberFormatLjava/text/NumberFormat;	systemOutputLjava/lang/String;	systemErrorjava/io/StringWriter
	 resultsLjava/io/StringWriter;"java/io/BufferedWriter
!$%(Ljava/io/Writer;)V	'()resultWriterLjava/io/BufferedWriter;	+,-outLjava/io/OutputStream;/java/io/OutputStreamWriter
.12(Ljava/io/OutputStream;)V	45)output7Testsuite: %s%n
9:;<=6org/apache/tools/ant/taskdefs/optional/junit/JUnitTestgetName()Ljava/lang/String;
?@ABCjava/lang/Stringformat9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
!EFGwrite(Ljava/lang/String;)V
!IJflushLjava/io/IOExceptionN#org/apache/tools/ant/BuildException
MPQ(Ljava/lang/Throwable;)VSjava/lang/StringBuilderUTests run: 
RWG
9YZ[runCount()J
R]^_append(J)Ljava/lang/StringBuilder;a, Failures: 
Rc^d-(Ljava/lang/String;)Ljava/lang/StringBuilder;
9fg[failureCounti
, Errors: 
9kl[
errorCountn, Skipped: 
9pq[	skipCounts, Time elapsed: 
9uv[
getRunTime@�@
zB{(D)Ljava/lang/String;} sec%n%n
?��isEmpty()Z�/------------- Standard Output ---------------%n�0------------- ---------------- ---------------%n�0------------- Standard Error -----------------%n
R��=toString
!��close
�	���,�java/lang/SystemLjava/io/PrintStream;	����err
����2#org/apache/tools/ant/util/FileUtils�	FAILED
���formatError@(Ljava/lang/String;Ljunit/framework/Test;Ljava/lang/Throwable;)V
���
addFailure.(Ljunit/framework/Test;Ljava/lang/Throwable;)V�	Caused an ERROR�Null Test: 
R�
Testcase: ���junit/framework/Test�:
���endTest(Ljunit/framework/Test;)V
���
formatTest*(Ljunit/framework/Test;)Ljava/lang/String;
!��newLine
����=java/lang/Throwable
getMessage
?���valueOf&(Ljava/lang/Object;)Ljava/lang/String;
�����<org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunnergetFilteredTrace)(Ljava/lang/Throwable;)Ljava/lang/String;
�����?org/apache/tools/ant/taskdefs/optional/junit/JUnitVersionHelpergetIgnoreMessage
���
formatSkip+(Ljunit/framework/Test;Ljava/lang/String;)V�SKIPPED�: �Aorg/apache/tools/ant/taskdefs/optional/junit/JUnitResultFormatter�@org/apache/tools/ant/taskdefs/optional/junit/IgnoredTestListener
ONE_SECONDD
ConstantValueCodeLineNumberTableLocalVariableTablethisHLorg/apache/tools/ant/taskdefs/optional/junit/BriefJUnitResultFormatter;	setOutputsetSystemOutputsetSystemErrorstartTestSuite;(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;)VexLjava/io/IOException;suite8Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;
StackMapTableendTestSuitesbLjava/lang/StringBuilder;	startTesttestLjunit/framework/Test;tLjava/lang/Throwable;?(Ljunit/framework/Test;Ljunit/framework/AssertionFailedError;)V&Ljunit/framework/AssertionFailedError;addErrorerrorstracetypetestIgnoredmessagetestAssumptionFailurecause
SourceFileBriefJUnitResultFormatter.java!�����w,-5) ()�r0*�*��
*�*�*�Y��*�!Y*��#�&��SDINT U/V�0���2�U*+�**�!Y�.Y+�0�#�3��^_`���,-�G�>*+���
hi���,�G�>*+���
qr��������4*�3��*�36�Y+�8S�>�D*�3�H�
M�MY,�O��&)K�"{|�&�)�*�3�� *	��4��4���`K	����`�RYT�VM,+�X�\W,`�bW,+�e�\W,h�bW,+�j�\W,m�bW,+�o�\W,r�bW,*�
+�t�wo�y�bW,|��>�bW*��2*��~�(,���>�bW,*��bW,���>�bW*��2*��~�(,���>�bW,*��bW,���>�bW*�3��*�3,���D*�&��*�3*����D*�3�H�N*�*���M*�*���C*�*���9N�MY-�O�:*�3�H�:*�*���*�*���
*�*����
K�)K�35<?K)53��&�
���#�*�3�:�C�J�_�m�~�����������������������
���)�*�3�5�<�?�A�U�\�_��**	��`��`��
V���2
��R5pK]KI��9R�K����5�����������5�����������K	*�+,����
��� 	��	��	�����I*+,����
��� ���������K	*�+,����
��� 	��	��	�����j%+����RY����b+���b��b��������%��%���$���o,�*,��*�&�RY��*,���b+�b���D*�&��*�&-�����D*�&��-��:*�&�D*�&��*�&���:�MY�O��	_bK�:��	&-;BHQ	X
_
bdn�>H�d
��o��o�o��o���
	�XK���B
*++�˶б�
	�
��
������Q+�*+��*�&�RY��*+���bԶb���D,�*�&ֶD*�&,�D*�&���
N�MY-�O��	CFK�.	'+4 <"C%F#G$P'�*G	��Q��Q��Q��		2IK	���L
*+,���б�
+	,� 
��
��
��PK#+��Forg/apache/tools/ant/taskdefs/optional/junit/CompoundEnumeration.class���45
java/lang/Object<init>()V		
@org/apache/tools/ant/taskdefs/optional/junit/CompoundEnumerationindexI		enumArray[Ljava/util/Enumeration;java/util/EnumerationhasMoreElements()Z
nextElement()Ljava/lang/Object; java/util/NoSuchElementException
	Signature[Ljava/util/Enumeration<+TT;>;([Ljava/util/Enumeration;)VCodeLineNumberTableLocalVariableTablethisBLorg/apache/tools/ant/taskdefs/optional/junit/CompoundEnumeration;	enumarrayLocalVariableTypeTableGLorg/apache/tools/ant/taskdefs/optional/junit/CompoundEnumeration<TT;>;!([Ljava/util/Enumeration<+TT;>;)VRuntimeVisibleAnnotationsLjava/lang/SafeVarargs;
StackMapTable
Exceptions()TT;D<T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Enumeration<TT;>;
SourceFileEnumerations.java
DeprecatedLjava/lang/Deprecated;  �!"k*�*�*+�
�#li	mn$%&'(%)' *+,"�:*�*�
��/*�
*�2�*�
*�2���*Y�`�����#yz){+}8$:%&(:%)-*"k*��*�
*�2���Y��#���$%&(%)-./0123+4PK�8-���<org/apache/tools/ant/taskdefs/optional/junit/Constants.class���4B
java/lang/Object<init>()V6org/apache/tools/ant/taskdefs/optional/junit/ConstantsMETHOD_NAMESLjava/lang/String;
ConstantValue
methods=
HALT_ON_ERRORhaltOnError=HALT_ON_FAILUREhaltOnFailure=FILTERTRACEfiltertrace=	CRASHFILE
crashfile=BEFORE_FIRST_TESTBeforeFirstTest	PROPSFILE
propsfile=
SHOWOUTPUT"showoutput=OUTPUT_TO_FORMATTERS%outputtoformatters=	FORMATTER(
formatter=LOGTESTLISTENEREVENTS+logtestlistenerevents=	TESTSFILE.
testsfile=TERMINATED_SUCCESSFULLY1terminated successfullyLOG_FAILED_TESTS4logfailedtests=SKIP_NON_TESTS7
skipNonTests=THREADID:	threadid=CodeLineNumberTableLocalVariableTablethis8Lorg/apache/tools/ant/taskdefs/optional/junit/Constants;
SourceFileConstants.java!	






 
!#
$&
')
*,
-/
02
35
68
9;3*��<
=>?@APK���c&&Eorg/apache/tools/ant/taskdefs/optional/junit/DOMUtil$NodeFilter.class���4
?org/apache/tools/ant/taskdefs/optional/junit/DOMUtil$NodeFilterjava/lang/Objectaccept(Lorg/w3c/dom/Node;)Z
SourceFileDOMUtil.javaInnerClasses4org/apache/tools/ant/taskdefs/optional/junit/DOMUtil
NodeFilter	

	PK��%�//Gorg/apache/tools/ant/taskdefs/optional/junit/DOMUtil$NodeListImpl.class���41
java/util/Vector<init>()V
	
Aorg/apache/tools/ant/taskdefs/optional/junit/DOMUtil$NodeListImplsize()I
	elementAt(I)Ljava/lang/Object;org/w3c/dom/Node(java/lang/ArrayIndexOutOfBoundsExceptionorg/w3c/dom/NodeListserialVersionUIDJ
ConstantValue,��R�CodeLineNumberTableLocalVariableTablethisCLorg/apache/tools/ant/taskdefs/optional/junit/DOMUtil$NodeListImpl;	getLengthitem(I)Lorg/w3c/dom/Node;e*Ljava/lang/ArrayIndexOutOfBoundsException;iI
StackMapTable	Signature<Ljava/util/Vector<Lorg/w3c/dom/Node;>;Lorg/w3c/dom/NodeList;
SourceFileDOMUtil.javaInnerClasses/4org/apache/tools/ant/taskdefs/optional/junit/DOMUtilNodeListImpl!/*��Y !/*��b "#f*�
��M�	l	m
n 
$% &'(I)*+,-
.0	PK��O���:org/apache/tools/ant/taskdefs/optional/junit/DOMUtil.class���4�
java/lang/Object<init>()VAorg/apache/tools/ant/taskdefs/optional/junit/DOMUtil$NodeListImpl

org/w3c/dom/Node
getChildNodes()Lorg/w3c/dom/NodeList;org/w3c/dom/NodeList	getLength()Iitem(I)Lorg/w3c/dom/Node;?org/apache/tools/ant/taskdefs/optional/junit/DOMUtil$NodeFilteraccept(Lorg/w3c/dom/Node;)Z
!"#
addElement(Ljava/lang/Object;)V
%&'()4org/apache/tools/ant/taskdefs/optional/junit/DOMUtillistChildNodesl(Lorg/w3c/dom/Node;Lorg/apache/tools/ant/taskdefs/optional/junit/DOMUtil$NodeFilter;Z)Lorg/w3c/dom/NodeList;+org/w3c/dom/Element*-./getAttribute&(Ljava/lang/String;)Ljava/lang/String;123getNodeType()S567getNodeName()Ljava/lang/String;
9:;<=java/lang/Stringequals(Ljava/lang/Object;)Z?@AgetOwnerDocument()Lorg/w3c/dom/Document;Corg/w3c/dom/CDATASectionBEF7getDataHIJKLorg/w3c/dom/DocumentcreateCDATASection.(Ljava/lang/String;)Lorg/w3c/dom/CDATASection;Norg/w3c/dom/CommentMEHQRS
createComment)(Ljava/lang/String;)Lorg/w3c/dom/Comment;HUVWcreateDocumentFragment ()Lorg/w3c/dom/DocumentFragment;*YZ7
getTagNameH\]^
createElement)(Ljava/lang/String;)Lorg/w3c/dom/Element;`ab
getAttributes()Lorg/w3c/dom/NamedNodeMap;deorg/w3c/dom/NamedNodeMapdhorg/w3c/dom/Attrgjk7getNamegmn7getValue*pqrsetAttribute'(Ljava/lang/String;Ljava/lang/String;)VHtuvcreateEntityReference1(Ljava/lang/String;)Lorg/w3c/dom/EntityReference;x!org/w3c/dom/ProcessingInstructionwz{7	getTargetwEH~�createProcessingInstructionI(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/ProcessingInstruction;�org/w3c/dom/Text�EH���createTextNode&(Ljava/lang/String;)Lorg/w3c/dom/Text;�java/lang/IllegalStateException�java/lang/StringBuilder
��Invalid node type: 
����append-(Ljava/lang/String;)Ljava/lang/StringBuilder;
����(I)Ljava/lang/StringBuilder;
���7toString
���(Ljava/lang/String;)V
%���
importNode8(Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;�org/w3c/dom/DOMException���appendChild&(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;CodeLineNumberTableLocalVariableTablethis6Lorg/apache/tools/ant/taskdefs/optional/junit/DOMUtil;jI
recmatchesLorg/w3c/dom/NodeList;	reclengthchildLorg/w3c/dom/Node;ilenparentfilterALorg/apache/tools/ant/taskdefs/optional/junit/DOMUtil$NodeFilter;recurseZmatchesCLorg/apache/tools/ant/taskdefs/optional/junit/DOMUtil$NodeListImpl;children
StackMapTablegetNodeAttribute8(Lorg/w3c/dom/Node;Ljava/lang/String;)Ljava/lang/String;elementLorg/w3c/dom/Element;nodenameLjava/lang/String;getChildByTagName;(Lorg/w3c/dom/Node;Ljava/lang/String;)Lorg/w3c/dom/Element;tagname	childListcopyattrLorg/w3c/dom/Attr;sizeelem
attributesLorg/w3c/dom/NamedNodeMap;pi#Lorg/w3c/dom/ProcessingInstruction;newChilddocLorg/w3c/dom/Document;
SourceFileDOMUtil.javaInnerClassesNodeListImpl
NodeFilter1%�3*���
)*���	()���Y�	N*�
:�k�66�X�:+��	-� �2+�$:�6	6

	�-�� �
������-��BCDEFG(H3I>JDLHMQNZOdPqOwG}U�p]��
Q&��Z��	3D��!\��_��������w��o���?�!�"���	���i*�*�*�*M,+�,���{|}� �������	����S*��*�
M,�>6�7,�:�"�0��4+�8�	�*�������.���
���'�9�E�K�Q��>'$��:��S��S��
F��?����3�	���_	�*�>M+�0�k�;��Na,+�B�D�GN��,+�M�O�PN��,�TN��,+�*�X�[:N+�_:���c66�,�f�g:�i�l�o���ӧd,+�4�sN�T+�w:,�y�|�}N�6,+������N�#��Y��Y�����+�0�������+�
:�3�66� �:�
-��W���ߧ:*-��W-�9vy���&��H�X�[�k�n�u�x�������������������������������9�A�F�O�Y�d�i�p�v�y�{�����X��k��u������0���3���L���O���D������������d��R$��O'��A5��������~��9L���F�HH	�,H*d�/����B����%�	%�	PK�햅rr?org/apache/tools/ant/taskdefs/optional/junit/Enumerations.class���43
java/lang/Object<init>()V
	
java/util/ArraysasList%([Ljava/lang/Object;)Ljava/util/List;
java/util/Collectionsenumeration/(Ljava/util/Collection;)Ljava/util/Enumeration;@org/apache/tools/ant/taskdefs/optional/junit/CompoundEnumeration
([Ljava/util/Enumeration;)V9org/apache/tools/ant/taskdefs/optional/junit/EnumerationsCodeLineNumberTableLocalVariableTablethis;Lorg/apache/tools/ant/taskdefs/optional/junit/Enumerations;	fromArray,([Ljava/lang/Object;)Ljava/util/Enumeration;array[Ljava/lang/Object;LocalVariableTypeTable[TT;
Deprecated	Signature8<T:Ljava/lang/Object;>([TT;)Ljava/util/Enumeration<TT;>;RuntimeVisibleAnnotationsLjava/lang/Deprecated;Ljava/lang/SafeVarargs;fromCompound1([Ljava/util/Enumeration;)Ljava/util/Enumeration;enums[Ljava/util/Enumeration;[Ljava/util/Enumeration<+TT;>;R<T:Ljava/lang/Object;>([Ljava/util/Enumeration<+TT;>;)Ljava/util/Enumeration<TT;>;
SourceFileEnumerations.java13*��
"#� D*��
�/!"#!$%&'(
)*�+,E	�Y*��?	-.#	-/%&0(
)*12%()PK/N�W
W
Lorg/apache/tools/ant/taskdefs/optional/junit/FailureRecorder$TestInfos.class���4|
java/lang/Object<init>()V	
junit/framework/TestgetClass()Ljava/lang/Class;
java/lang/ClassgetName()Ljava/lang/String;	Forg/apache/tools/ant/taskdefs/optional/junit/FailureRecorder$TestInfos	classNameLjava/lang/String;toString
 !java/lang/StringindexOf(I)I
#$%	substring(II)Ljava/lang/String;	'(
methodName*java/lang/StringBuilder
)-new 
)/01append-(Ljava/lang/String;)Ljava/lang/StringBuilder;3("5")
)89:apply()Ljava/util/function/Function;<=>?@java/util/Comparator	comparing5(Ljava/util/function/Function;)Ljava/util/Comparator;<BCDcompare'(Ljava/lang/Object;Ljava/lang/Object;)I


HIJequals(Ljava/lang/Object;)Z
LMNhashCode()I
PQR	compareToK(Lorg/apache/tools/ant/taskdefs/optional/junit/FailureRecorder$TestInfos;)ITjava/lang/Comparable(Ljunit/framework/Test;)VCodeLineNumberTableLocalVariableTablethisHLorg/apache/tools/ant/taskdefs/optional/junit/FailureRecorder$TestInfos;testLjunit/framework/Test;otherobjLjava/lang/Object;
StackMapTable(Ljava/lang/Object;)I	SignaturerLjava/lang/Object;Ljava/lang/Comparable<Lorg/apache/tools/ant/taskdefs/optional/junit/FailureRecorder$TestInfos;>;
SourceFileFailureRecorder.javaBootstrapMethodsh
ijklm"java/lang/invoke/LambdaMetafactorymetafactory�(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;o&(Ljava/lang/Object;)Ljava/lang/Object;Fr&(Ljava/lang/Object;)Ljava/lang/String;InnerClassesu<org/apache/tools/ant/taskdefs/optional/junit/FailureRecorder	TestInfosx%java/lang/invoke/MethodHandles$Lookupzjava/lang/invoke/MethodHandlesLookup!S(UVv(*�*+��
�+�M*,,(��"�&�W_`ab'cX (YZ([\(VR(�)Y�+,�.*��.2�.*�&�.4�.�6�WnX(YZQRVD�7�;*+�A�WzXYZ]ZIJVh +*�+��*�E+�F�G���W
�X YZ ^_`@MNV2*�E�K�W�XYZAQaV3	*+��O�WSX	YZbcdefgnpqstv	wy{PK8cw�x$x$Borg/apache/tools/ant/taskdefs/optional/junit/FailureRecorder.class���4�
%org/apache/tools/ant/ProjectComponent<init>()V		
<org/apache/tools/ant/taskdefs/optional/junit/FailureRecorderlocationNameLjava/lang/String;ant.junit.failureCollector
java/lang/SystemgetProperty&(Ljava/lang/String;)Ljava/lang/String;

getProject ()Lorg/apache/tools/ant/Project;
org/apache/tools/ant/Projectjava/lang/StringBuilder
 DSystem property 'ant.junit.failureCollector' set, so use its value '
"#$append-(Ljava/lang/String;)Ljava/lang/StringBuilder;&"' as location for collector class.
()*toString()Ljava/lang/String;
,-.verbose(Ljava/lang/String;)V0AAnt property 'ant.junit.failureCollector' set, so use its value '	23DEFAULT_CLASS_LOCATION5eSystem property 'ant.junit.failureCollector' not set, so use value as location for collector class: '7'9java/io/File
8;.
8=>?
isAbsolute()Z
ABC
getBaseDir()Ljava/io/File;
8EF#(Ljava/io/File;Ljava/lang/String;)V
8HI*getAbsolutePathKLocation file is relative (
M#N-(Ljava/lang/Object;)Ljava/lang/StringBuilder;P) use absolute path instead (R)
TUV
setProject!(Lorg/apache/tools/ant/Project;)V
XYZgetBuildListeners()Ljava/util/Vector;
\]^_`java/util/Vectorstream()Ljava/util/stream/Stream;
bcdefjava/util/ObjectsrequireNonNull&(Ljava/lang/Object;)Ljava/lang/Object;hijtest1(Ljava/lang/Class;)Ljava/util/function/Predicate;lmnopjava/util/stream/Stream	noneMatch!(Ljava/util/function/Predicate;)ZrRegister FailureRecorder (@
tuvwxjava/lang/ObjecthashCode()I
z#{(I)Ljava/lang/StringBuilder;}) as BuildListener
��addBuildListener'(Lorg/apache/tools/ant/BuildListener;)V	���failedTestsLjava/util/SortedSet;�Forg/apache/tools/ant/taskdefs/optional/junit/FailureRecorder$TestInfos
���(Ljunit/framework/Test;)V�����java/util/SortedSetadd(Ljava/lang/Object;)Z	���outLjava/io/PrintStream;
�����#org/apache/tools/ant/util/FileUtilsclose(Ljava/io/OutputStream;)V
��*getLocationName�.java�Write collector class to '
8��?exists
8��?delete�java/io/IOException�could not delete 
�;�java/io/BufferedWriter�java/io/FileWriter
���(Ljava/io/File;)V
���(Ljava/io/Writer;)V	���writerLjava/io/BufferedWriter;
��createClassHeader
��createSuiteMethod
��createClassFooter
����
�����%org/apache/tools/ant/util/StringUtils
getStackTrace)(Ljava/lang/Throwable;)Ljava/lang/String;
��.log
�����java/lang/Stringreplace(CC)Ljava/lang/String;�/
����contains(Ljava/lang/CharSequence;)Z
����lastIndexOf(I)I
����	substring(I)Ljava/lang/String;�java/text/SimpleDateFormat�yyyy.MM.dd HH:mm:ss,SSS
�;�// generated on: 
���.write�java/util/Date
�
����format$(Ljava/util/Date;)Ljava/lang/String;
���newLine�import junit.framework.*;�
public class � extends TestCase {�    public (String testname) {        super(testname);    }     public static Test suite() {*        TestSuite suite = new TestSuite();�
iterator()Ljava/util/Iterator;?java/util/IteratorhasNextnext()Ljava/lang/Object;        suite.addTest(
�valueOf&(Ljava/lang/Object;)Ljava/lang/String;);        return suite;!}#    [junit] 
%�&(Ljava/lang/String;I)V�()?isEmpty
+,writeJavaClass.java.io.tmpdir0FailedTests2java/util/TreeSet
15Aorg/apache/tools/ant/taskdefs/optional/junit/JUnitResultFormatter7"org/apache/tools/ant/BuildListenerMAGIC_PROPERTY_CLASS_LOCATION
ConstantValue
LOG_PREFIX<    [junit]	Signature_Ljava/util/SortedSet<Lorg/apache/tools/ant/taskdefs/optional/junit/FailureRecorder$TestInfos;>;CodeLineNumberTableLocalVariableTablethis>Lorg/apache/tools/ant/taskdefs/optional/junit/FailureRecorder;fLjava/io/File;syspropValueantpropValuelocationFile
StackMapTableprojectLorg/apache/tools/ant/Project;endTestSuite;(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;)Vsuite8Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;
ExceptionsR#org/apache/tools/ant/BuildExceptionaddError.(Ljunit/framework/Test;Ljava/lang/Throwable;)VLjunit/framework/Test;	throwableLjava/lang/Throwable;
addFailure?(Ljunit/framework/Test;Ljunit/framework/AssertionFailedError;)Verror&Ljunit/framework/AssertionFailedError;	setOutputLjava/io/OutputStream;setSystemErrorerrsetSystemOutputstartTestSuiteendTest	startTest
sourceFileeLjava/io/IOException;hjava/lang/Throwable	classNamesdfLjava/text/SimpleDateFormat;	testInfosHLorg/apache/tools/ant/taskdefs/optional/junit/FailureRecorder$TestInfos;message
buildFinished$(Lorg/apache/tools/ant/BuildEvent;)Vevent!Lorg/apache/tools/ant/BuildEvent;buildStarted
messageLoggedtargetFinished
targetStartedtaskFinishedtaskStarted<clinit>
SourceFileFailureRecorder.javaBootstrapMethods~
����"java/lang/invoke/LambdaMetafactorymetafactory�(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;��
�����java/lang/Class
isInstance�'(Lorg/apache/tools/ant/BuildListener;)ZInnerClasses	TestInfos�%java/lang/invoke/MethodHandles$Lookup�java/lang/invoke/MethodHandlesLookup!4689
3:9;
��=>��?/*��@EABC�*?��*���
�L*�
�M+�'*+�*�Y��!+�!%�!�'�+�P,�'*,�*�Y�/�!,�!%�!�'�+�(*�1�*�Y�4�!�1�!6�!�'�+�8Y*��:N-�<�H�8Y*��@*��D:*�G�*�Y�J�!-�LO�!*��!Q�!�'�+*��@Fmn
oqr s?uCvHwgzn{������������A4�1DE
�F�G�LHE�BCI�?��'$�WUV?�E*+�S+�W�[Y�aW�g�k�'*�Y�q�!*�s�y|�!�'�++*�~�@�� �?�D�AEBCEJKI�DLM?5�@�ABCNOPQST?T����Y+����W�@
��A BCiUVWXY?T����Y+����W�@
��A BCiUZ[\�?Q+���+���@���ABC�]I^.?5�@�ABC_`.?5�@�ABC�aM?5�@�ABCNOPQb�?5�@�ABCiUc�?5�@�ABCiU,?c��8Y�Y�*���!��!�'�:L*�Y���!+�G�!6�!�'�++���%+�����Y�Y���!+�L�'���*��Y��Y+������*��*��*��*���ħ L*+�ƶ�*���ħ
M*����,����������@F��=�K�f�y}���	����	��	�
A gdE�ef�BCI�f8�(�Rg	�?c�*��\/��L+նי++/��`��L��Y��M*����*��,��Y����*����*�����*����*�����*��+��*�����*����*�����*��+��*�����*����*����*����*����*����@Z
",5GNW^gox��� �!�"�#�$�%A �BC�i,�jkI�"�P��?�*����*����*����*������	L+�
�6+���M*����*��,���*����*�����*����*����*����*����@>(
)*+",>-H.S/]0d1g2q3x4�5�6A>&lm�BCI�+�;P��?D*�� ��*����@9
:;ABCP��.?U*��Y�"�!+�!�'�$�@
EFABCn-.?U*��Y�"�!+�!�'�$�@
MNABCnop?5�@�ABCqrsp?5�@�ABCqrtp?5�@�ABCqrup?5�@�ABCqrvp?5�@�ABCqrwp?U���'�*�*�@���ABCqrIxp?5�@�ABCqry?G'�Y�-��!/�!�'�1�1Y�3���@S
TZz{|}������	���PK�s��[org/apache/tools/ant/taskdefs/optional/junit/FormatterElement$DelayedFileOutputStream.class���4D
java/io/OutputStream<init>()V		
Uorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement$DelayedFileOutputStreamfileLjava/io/File;	outputStreamLjava/io/BufferedOutputStream;java/io/BufferedOutputStream
java/io/FiletoPath()Ljava/nio/file/Path;java/nio/file/OpenOption
 java/nio/file/FilesnewOutputStreamG(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/OutputStream;
"#(Ljava/io/OutputStream;)V
%&'write(I)V
)*flush
,-close(Ljava/io/File;)VCodeLineNumberTableLocalVariableTablethisWLorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement$DelayedFileOutputStream;bI
StackMapTable8java/lang/Object:java/lang/Throwable
Exceptions=java/io/IOException
SourceFileFormatterElement.javaInnerClassesB=org/apache/tools/ant/taskdefs/optional/junit/FormatterElementDelayedFileOutputStream ./F
*�*+��0st	u1
23
&'/�7*YM�*�
�*�Y*�����!�
,çN,�-�*�
�$�&)),)0yz{$}.~617237456�$7D9�;<*/J*�
�
*�
�(�0���1236;<-/J*�
�
*�
�+�0���1236;<>?@
AC
PK��?6��Qorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement$TypeAttribute.class���4 
.org/apache/tools/ant/types/EnumeratedAttribute<init>()Vjava/lang/String
plainxmlbrieffailureKorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement$TypeAttributeCodeLineNumberTableLocalVariableTablethisMLorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement$TypeAttribute;	getValues()[Ljava/lang/String;
SourceFileFormatterElement.javaInnerClasses=org/apache/tools/ant/taskdefs/optional/junit/FormatterElement
TypeAttribute!/*��`C�Y	SYSY
SYS�d
	PK�&��Corg/apache/tools/ant/taskdefs/optional/junit/FormatterElement.class���4.
java/lang/Object<init>()V/org/apache/tools/ant/util/KeepAliveOutputStream	

java/lang/SystemoutLjava/io/PrintStream;
(Ljava/io/OutputStream;)V	
=org/apache/tools/ant/taskdefs/optional/junit/FormatterElementLjava/io/OutputStream;	useFileZ
 Korg/apache/tools/ant/taskdefs/optional/junit/FormatterElement$TypeAttributegetValue()Ljava/lang/String;
"#$%&java/lang/StringhashCode()I(xml
"*+,equals(Ljava/lang/Object;)Z.brief0failure2Dorg.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter
456setClassname(Ljava/lang/String;)V8Forg.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter:<org.apache.tools.ant.taskdefs.optional.junit.FailureRecorder<Forg.apache.tools.ant.taskdefs.optional.junit.PlainJUnitResultFormatter	>?@	classnameLjava/lang/String;B.xml
DE6setExtensionG.txt	IJ@	extension	LMNoutFileLjava/io/File;	
PQerr	STUifCondLjava/lang/Object;
WXYsetIf(Ljava/lang/Object;)V	[\U
unlessCond
^_Y	setUnless
abcdeorg/apache/tools/ant/Task
getProject ()Lorg/apache/tools/ant/Project;
ghijk#org/apache/tools/ant/PropertyHelpergetPropertyHelperE(Lorg/apache/tools/ant/Project;)Lorg/apache/tools/ant/PropertyHelper;
gmn,testIfCondition
gpq,testUnlessCondition
stucreateFormatterr(Ljava/lang/ClassLoader;)Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirror;	wxyprojectLorg/apache/tools/ant/Project;{#org/apache/tools/ant/BuildException}"you must specify type or classname
z6
�����java/lang/ClassforName%(Ljava/lang/String;)Ljava/lang/Class;
����=(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;� java/lang/ClassNotFoundException�java/lang/NoClassDefFoundError�java/lang/StringBuilder
��
Using loader 
����append-(Ljava/lang/String;)Ljava/lang/StringBuilder;
����-(Ljava/lang/Object;)Ljava/lang/StringBuilder;�
 on class �: 
��� toString
z��*(Ljava/lang/String;Ljava/lang/Throwable;)V�Worg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirror
����
asSubclass$(Ljava/lang/Class;)Ljava/lang/Class;
����getDeclaredConstructor3([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
�����java/lang/reflect/ConstructornewInstance'([Ljava/lang/Object;)Ljava/lang/Object;�java/lang/ClassCastException� %s is not a JUnitResultFormatter
z��((Ljava/lang/String;[Ljava/lang/Object;)V� java/lang/InstantiationException� java/lang/IllegalAccessException�java/lang/NoSuchMethodException�+java/lang/reflect/InvocationTargetException
z��(Ljava/lang/Throwable;)V�Uorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement$DelayedFileOutputStream
���(Ljava/io/File;)V���	setOutput����getClass()Ljava/lang/Class;x
����getField-(Ljava/lang/String;)Ljava/lang/reflect/Field;
�����java/lang/reflect/Fieldget&(Ljava/lang/Object;)Ljava/lang/Object;�org/apache/tools/ant/Project�java/lang/NoSuchFieldException���
setProject
����	getMethod@(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
�����java/lang/reflect/Methodinvoke9(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;XML_FORMATTER_CLASS_NAME
ConstantValueBRIEF_FORMATTER_CLASS_NAMEPLAIN_FORMATTER_CLASS_NAMEFAILURE_RECORDER_CLASS_NAMECodeLineNumberTableLocalVariableTablethis?Lorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement;setTypeP(Lorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement$TypeAttribute;)VtypeMLorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement$TypeAttribute;
StackMapTablegetClassnameextgetExtension
setOutfile
setUseFile(Z)V
getUseFile()Z	shouldUse(Lorg/apache/tools/ant/Task;)ZtLorg/apache/tools/ant/Task;ph%Lorg/apache/tools/ant/PropertyHelper;[()Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirror;
Exceptions!(Lorg/apache/tools/ant/Project;)VfLjava/lang/Class;eLjava/lang/Throwable;rYLorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirror;Ljava/lang/ClassCastException;(Ljava/lang/ReflectiveOperationException;fieldLjava/lang/reflect/Field;value"Ljava/lang/IllegalAccessException;setterLjava/lang/reflect/Method;loaderLjava/lang/ClassLoader;needToSetProjectReferenceLocalVariableTypeTableLjava/lang/Class<*>;!java/lang/ClassLoader#java/lang/Throwable%&java/lang/ReflectiveOperationException
SourceFileFormatterElement.javaInnerClasses
TypeAttribute+<org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorJUnitResultFormatterMirrorDelayedFileOutputStream!�@�1�@�7�@�;�@�9?@J@
MNTU\Uxy�J*�*�Y�	��*���>NP��������+�M>,�!�H�<1�=�!�hz/,'�)�!>�,-�)�>�,/�)�>�7%.*1�3�*7�3�*9�3�	*;�3��&	kpmvnypq�s�t�v�y��������	�,"

�56���*+�=+��+M>,�!�J�	*�#���6?4qm�1,1�)�!>�,;�)�>�,7�)�>�4%.*A�C�*F�C�	*F�C��&	��	�x�~��������������?@��4"

�� �/*�=������E6�>*+�H��
������@� �/*�H���������>*+�K��
�����
N��g+�	�
+�O��Y+�L*+����������
��>*���
������/*�������XY�>*+�R��
�����TUX6�>*+�V��
�����T@_Y�>*+�Z��
�����\U_6�>*+�]��
�����\@�~$+�`�fM,*�R�l�,*�Z�o����#� $��$	�
�"g@t
�0*�r��
���z��>*+�v��
���xytu�[>*�=�
�zY|�~�+�*�=��M�
*�=+��M�5N�zY��Y�����+�����*�=�����-����-���,������������N�&:�zY��Y*�=S���:�zY�¿*��*�K�*��Y*�K�ǵ-*���6-��Ѷ�:-��:�ܙ6�:�:�zY�¿�?-�����Y�S��:-�Y*�vS��W�:�:�zY�¿-�*-�*-�_wz�_w��_w��_w��_w����������(+�(0�(0���$$% '*--).*_1w7z2|3�4�6�9�:�<�>�@�A�B�D�J�F�J�H�I�LOP(U+Q-U0S2T<X��
*
.1w|�
��U�
2
>��>_�
���w 
*
_�
�E�	�� "�1�Z�V$���,B�D�o�D$z&'()	�*,	�-
PK�KKForg/apache/tools/ant/taskdefs/optional/junit/IgnoredTestListener.class���4
@org/apache/tools/ant/taskdefs/optional/junit/IgnoredTestListenerjava/lang/Objectjunit/framework/TestListenertestIgnored(Ljunit/framework/Test;)VtestAssumptionFailure.(Ljunit/framework/Test;Ljava/lang/Throwable;)V
SourceFileIgnoredTestListener.java	
PK2%��+	+	Dorg/apache/tools/ant/taskdefs/optional/junit/IgnoredTestResult.class���4^
junit/framework/TestResult<init>()Vjava/util/ArrayList
	
>org/apache/tools/ant/taskdefs/optional/junit/IgnoredTestResult	listenersLjava/util/List;	ignored	skipped@org/apache/tools/ant/taskdefs/optional/junit/IgnoredTestListenerjava/util/Listadd(Ljava/lang/Object;)Z
 !addListener!(Ljunit/framework/TestListener;)V#$remove
&'!removeListener)8org/apache/tools/ant/taskdefs/optional/junit/TestIgnored
(+,(Ljunit/framework/Test;)V./0iterator()Ljava/util/Iterator;23456java/util/IteratorhasNext()Z289:next()Ljava/lang/Object;<=,testIgnored?@Asize()ICDEtestAssumptionFailure.(Ljunit/framework/Test;Ljava/lang/Throwable;)V	SignatureTLjava/util/List<Lorg/apache/tools/ant/taskdefs/optional/junit/IgnoredTestListener;>;LLjava/util/List<Lorg/apache/tools/ant/taskdefs/optional/junit/TestIgnored;>;CodeLineNumberTableLocalVariableTablethis@Lorg/apache/tools/ant/taskdefs/optional/junit/IgnoredTestResult;listenerLjunit/framework/TestListener;
StackMapTableBLorg/apache/tools/ant/taskdefs/optional/junit/IgnoredTestListener;testLjunit/framework/Test;
ExceptionsVjava/lang/ExceptionignoredCount()JcauseLjava/lang/Throwable;skippedCount
SourceFileIgnoredTestResult.java!FGFHFHI`&*�*�Y�	�
*�Y�	�*�Y�	��J)$%&%*K&LM! !Id+��*�
+��W*+��J./12KLMNOP!'!Ia+��*�
+�"W*+�%�J679:KLMNOP!=,I�:*��(Y+�*�W*�
�-M,�1�,�7�N-+�;���JBC/D6E9FK /NQ:LM:RSP�2�TUWXI5*��>��JMKLMDEI�=*��(Y+�*�W*�
�-N-�1�-�7�:+,�B���JWX0Y9Z<[K*0	NQ=LM=RS=YZP�2�[XI5*��>��JbKLM\]PKX��q��Gorg/apache/tools/ant/taskdefs/optional/junit/JUnitResultFormatter.class���4Aorg/apache/tools/ant/taskdefs/optional/junit/JUnitResultFormatterjava/lang/Objectjunit/framework/TestListenerWorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirrorstartTestSuite;(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;)V
Exceptions
#org/apache/tools/ant/BuildExceptionendTestSuite	setOutput(Ljava/io/OutputStream;)VsetSystemOutput(Ljava/lang/String;)VsetSystemError
SourceFileJUnitResultFormatter.javaInnerClasses<org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorJUnitResultFormatterMirror	


	PK�M���Eorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$ForkMode.class���4(
.org/apache/tools/ant/types/EnumeratedAttribute<init>()V
	
?org/apache/tools/ant/taskdefs/optional/junit/JUnitTask$ForkModesetValue(Ljava/lang/String;)Vjava/lang/StringonceperTestperBatchONCELjava/lang/String;
ConstantValuePER_TEST	PER_BATCHCodeLineNumberTableLocalVariableTablethisALorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$ForkMode;value	getValues()[Ljava/lang/String;
SourceFileJUnitTask.javaInnerClasses&6org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskForkMode13*��
MNF
*�*+��UV	W

 !>�
YSYSYS�\"#$
%'PKu��rrTorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$ForkedTestConfiguration.class���4N
java/lang/Object<init>()V		
Norg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$ForkedTestConfigurationfilterTraceZ	haltOnError	
haltOnFailure	
errorPropertyLjava/lang/String;	failureProperty
6org/apache/tools/ant/taskdefs/optional/junit/JUnitTestgetFiltertrace()Z
!"getHaltonerror
$%getHaltonfailure
'()getErrorProperty()Ljava/lang/String;
+,)getFailureProperty
./*(ZZZLjava/lang/String;Ljava/lang/String;)V
123getClass()Ljava/lang/Class;
56789java/lang/Stringequals(Ljava/lang/Object;)ZCodeLineNumberTableLocalVariableTablethisPLorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$ForkedTestConfiguration;;(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;)Vtest8Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;otherLjava/lang/Object;o
StackMapTablehashCode()I
SourceFileJUnitTask.javaInnerClassesL6org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskForkedTestConfiguration0/:� *�*�*�
*�*�*��;��	��<> =>     ?:e*+�+� +�#+�&+�*�-�;	


	<=>@A89:��+�+�0��+�M*�,��c*�
,�
�X*�,��M*��
,��*��8*�,��4�**��
,��*��*�,��4���;"
R"u&�< �=>�BCmD>E
�3
@FG:�'*���*�
��`*���`�;123&1<'=>E!@J�K�HIJ
KMPK����&&Qorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$JUnitLogOutputStream.class���406org/apache/tools/ant/taskdefs/optional/junit/JUnitTask
-org/apache/tools/ant/taskdefs/LogOutputStream<init>(Lorg/apache/tools/ant/Task;I)V	

Korg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$JUnitLogOutputStreamtaskLorg/apache/tools/ant/Task;junit.framework.TestListener: 
java/lang/String
startsWith(Ljava/lang/String;)Zorg/apache/tools/ant/Project
org/apache/tools/ant/Tasklog(Ljava/lang/String;I)V
 !processLineCodeLineNumberTableLocalVariableTablethisMLorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$JUnitLogOutputStream;levelIlineLjava/lang/String;
StackMapTable
SourceFileJUnitTask.javaInnerClassesJUnitLogOutputStream!

"R*+�*+�	�#���$ %&
'(!"p+��*�	+��	*+��#�	���$ %&)*'(+,-.

/PKr
���Rorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$JUnitLogStreamHandler.class���4#Korg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$JUnitLogOutputStream
<init>(Lorg/apache/tools/ant/Task;I)V-org/apache/tools/ant/taskdefs/LogOutputStream


/org/apache/tools/ant/taskdefs/PumpStreamHandler/(Ljava/io/OutputStream;Ljava/io/OutputStream;)VLorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$JUnitLogStreamHandler (Lorg/apache/tools/ant/Task;II)VCodeLineNumberTableLocalVariableTablethisNLorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$JUnitLogStreamHandler;taskLorg/apache/tools/ant/Task;outlevelIerrlevel
SourceFileJUnitTask.javaInnerClasses 6org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskJUnitLogOutputStreamJUnitLogStreamHandler!c*�Y+��Y+�	�
�
��*!"PK}SV��Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$JunitTestThread.class���49	Forg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$JunitTestThreadthis$08Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask;
	
java/lang/Object<init>()V	
masterTask	iteratorLjava/util/Iterator;	idI
6org/apache/tools/ant/taskdefs/optional/junit/JUnitTask
access$000P(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask;Ljava/util/Iterator;I)V#org/apache/tools/ant/BuildException
!"#
access$102�(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask;Lorg/apache/tools/ant/BuildException;)Lorg/apache/tools/ant/BuildException;%java/lang/Runnable	Signature`Ljava/util/Iterator<Ljava/util/List<Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;>;>;�(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask;Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask;Ljava/util/Iterator;I)VCodeLineNumberTableLocalVariableTablethisHLorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$JunitTestThread;masterLocalVariableTypeTable�(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask;Ljava/util/Iterator<Ljava/util/List<Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;>;>;I)Vrunb%Lorg/apache/tools/ant/BuildException;
StackMapTable
SourceFileJUnitTask.javaInnerClassesJunitTestThread $&'()�*+�*�*,�
*-�*��*v	wxyz+*,-./'&01)v*�
*�*���
L*�+� W�*����+	23,-4R	567
8PKe_R�Morg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$SummaryAttribute.class���43
.org/apache/tools/ant/types/EnumeratedAttribute<init>()Vjava/lang/String
trueyesfalsenoonoff
withOutAndErr
Gorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$SummaryAttributegetValue()Ljava/lang/String;
 equals(Ljava/lang/Object;)ZCodeLineNumberTableLocalVariableTablethisILorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$SummaryAttribute;	getValues()[Ljava/lang/String;	asBoolean()ZvLjava/lang/String;
StackMapTable
SourceFileJUnitTask.javaInnerClasses16org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskSummaryAttribute!!/*��"p#$%&'!T*�Y	SYSY
SYSYSYSYS�"w#*$%()!�/*�L	+��+��+��+����"���#�.�#/$%**+,�)@-./
02	PKt��Morg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$TestResultHolder.class���4$
java/lang/Object<init>()VRorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitTestRunnerMirror	

Gorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$TestResultHolderexitCodeI	
timedOutZ	
crashedCodeLineNumberTableLocalVariableTablethisILorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$TestResultHolder;
SourceFileJUnitTask.javaInnerClasses<org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorJUnitTestRunnerMirror"6org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskTestResultHolder!

J*�*�	*�*����	�� 	
!#PK�Z"���<org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.class���4�	6org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskcaughtBuildException%Lorg/apache/tools/ant/BuildException;
	
oneJunitThread(Ljava/util/Iterator;I)V	
	reloadingZ	filterTrace	haltOnError	
errorPropertyLjava/lang/String;	
haltOnFail	failureProperty	 !fork	#$%forkModeALorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$ForkMode;	'()threadsI
+,-./Gorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$SummaryAttributegetValue()Ljava/lang/String;	12summaryValue
+456	asBoolean()Z	89summary	;<=timeoutLjava/lang/Integer;
?@AgetCommandline.()Lorg/apache/tools/ant/types/CommandlineJava;
CDEFG*org/apache/tools/ant/types/CommandlineJavasetMaxmemory(Ljava/lang/String;)V
CIJGsetVm
CLMNcreateVmArgument3()Lorg/apache/tools/ant/types/Commandline$Argument;	PQRdirLjava/io/File;
CTUVaddSysproperty4(Lorg/apache/tools/ant/types/Environment$Variable;)V
XYZ[//org/apache/tools/ant/types/Environment$Variable
getContent
]^_
getProject ()Lorg/apache/tools/ant/Project;ajava/lang/StringBuilder
`cde<init>()Vgsysproperty added : 
`ijkappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;
`mn/toStringporg/apache/tools/ant/Project
orstlog(Ljava/lang/String;I)V
CvwxaddSyspropertyset+(Lorg/apache/tools/ant/types/PropertySet;)V
Cz{|createClasspathA(Lorg/apache/tools/ant/Project;)Lorg/apache/tools/ant/types/Path;
~���org/apache/tools/ant/types/Path
createPath#()Lorg/apache/tools/ant/types/Path;
C��|createBootclasspath
C��|createModulepath
C��|createUpgrademodulepath	���env(Lorg/apache/tools/ant/types/Environment;
����V&org/apache/tools/ant/types/EnvironmentaddVariable	��newEnvironment
�����5org/apache/tools/ant/taskdefs/optional/junit/BaseTestsetFiltertrace(Z)V
����setHaltonerror
���GsetErrorProperty
����setHaltonfailure
���GsetFailureProperty
����setFork	���testsLjava/util/List;�����java/util/Listadd(Ljava/lang/Object;)Z
���preConfigure:(Lorg/apache/tools/ant/taskdefs/optional/junit/BaseTest;)V�6org/apache/tools/ant/taskdefs/optional/junit/BatchTest
��d�!(Lorg/apache/tools/ant/Project;)V	���
batchTests	���
formattersLjava/util/Vector;
���java/util/Vector	��includeAntRuntime	��
showOutput	��outputToFormatters	��logFailedTests
C���
getAssertions)()Lorg/apache/tools/ant/types/Assertions;�#org/apache/tools/ant/BuildException�)Only one assertion declaration is allowed
��dG
C���
setAssertions*(Lorg/apache/tools/ant/types/Assertions;)V	���perm(Lorg/apache/tools/ant/types/Permissions;�&org/apache/tools/ant/types/Permissions
�c
C���
setCloneVm
�c�org/apache/tools/ant/Task
�c�	���runnerTLorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitTestRunnerMirror;
�c	���antRuntimeClasses!Lorg/apache/tools/ant/types/Path;	��classLoader%Lorg/apache/tools/ant/AntClassLoader;?org/apache/tools/ant/taskdefs/optional/junit/JUnitTask$ForkModeperTest
�	
splitJUnit	
enableTestListenerEvents	
forkedPathChecked
6java/io/Fileexists
6isDirectory %s is not a valid temp directoryjava/lang/Object
�d((Ljava/lang/String;[Ljava/lang/Object;)V	 RtmpDir""ant.junit.enabletestlistenerevents
o$%&getProperty&(Ljava/lang/String;)Ljava/lang/String;
o()*	toBoolean(Ljava/lang/String;)Z
~�-/junit/framework/TestCase.class
/0*addClasspathResource2*/org/apache/tools/ant/launch/AntMain.class
45GaddClasspathEntry7 /org/apache/tools/ant/Task.class9C/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.class;K/org/apache/tools/ant/taskdefs/optional/junit/JUnit4TestMethodAdapter.class=junit.framework.Test
?@ABCjava/lang/ClassLoader	loadClass%(Ljava/lang/String;)Ljava/lang/Class;E java/lang/ClassNotFoundExceptionG`The <classpath> or <modulepath> for <junit> must include junit.jar if not in Ant's own classpath
IJKgetLocation!()Lorg/apache/tools/ant/Location;
�MdNI(Ljava/lang/String;Ljava/lang/Throwable;Lorg/apache/tools/ant/Location;)VP<org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror
RSTU/java/lang/ClassgetNameWImpl
RYZ[
asSubclass$(Ljava/lang/Class;)Ljava/lang/Class;
R]^_getClassLoader()Ljava/lang/ClassLoader;aOverdelegating loader
�cdd4(Ljava/lang/String;Lorg/apache/tools/ant/Location;)V
RfghgetConstructor3([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
jklmnjava/lang/reflect/ConstructornewInstance'([Ljava/lang/Object;)Ljava/lang/Object;pjava/lang/Exception
�rds7(Ljava/lang/Throwable;Lorg/apache/tools/ant/Location;)V
~u�v$(Lorg/apache/tools/ant/types/Path;)V
Cxy�getClasspath
C{|�
getModulepath
~�hasJunit$(Lorg/apache/tools/ant/types/Path;)Z
���expandModulePathD(Lorg/apache/tools/ant/types/Path;)Lorg/apache/tools/ant/types/Path;���run�(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask;Ljava/lang/ClassLoader;Lorg/apache/tools/ant/types/Path;)Ljava/security/PrivilegedAction;
�����java/security/AccessControllerdoPrivileged4(Ljava/security/PrivilegedAction;)Ljava/lang/Object;	���mirrorLoaderLjava/lang/ClassLoader;
���createMirror�(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask;Ljava/lang/ClassLoader;)Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror;	���delegate>Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror;
��echeckMethodLists
��echeckModules
��esetupJUnitDelegate�java/util/ArrayList
�c
,�once
�����java/lang/Stringequals
���getIndividualTests()Ljava/util/Enumeration;
���executeOrQueue0(Ljava/util/Enumeration;Z)Ljava/util/Collection;����addAll(Ljava/util/Collection;)Z����stream()Ljava/util/stream/Stream;���applyW(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask;)Ljava/util/function/Function;�����java/util/stream/Streammap8(Ljava/util/function/Function;)Ljava/util/stream/Stream;
�����java/util/ObjectsrequireNonNull&(Ljava/lang/Object;)Ljava/lang/Object;���accept/(Ljava/util/List;)Ljava/util/function/Consumer;����forEach (Ljava/util/function/Consumer;)V
�����java/util/Collectionsenumeration/(Ljava/util/Collection;)Ljava/util/Enumeration;
���runTestsInThreads(Ljava/util/List;I)V
��ecleanup����6java/util/IteratorhasNext����next()Ljava/lang/Object;�Starting test thread 
`�j�(I)Ljava/lang/StringBuilder;
r
���getNextTest&(Ljava/util/Iterator;)Ljava/util/List;�
Running test ����get(I)Ljava/lang/Object;�6org/apache/tools/ant/taskdefs/optional/junit/JUnitTest
m(�size()I) in thread 
	
execute<(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;I)V


�Ending test thread �iterator()Ljava/util/Iterator;java/lang/Thread
�
singletonList$(Ljava/lang/Object;)Ljava/util/List;Forg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$JunitTestThread
d�(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask;Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask;Ljava/util/Iterator;I)V
 d!(Ljava/lang/Runnable;)V
#$estart
&'ejoin)java/lang/InterruptedException
�+d,(Ljava/lang/Throwable;)V
�S
/0GvalidateTestName
�23�clone
�567	setThread(I)V
�9:/getTodir<.
o>?@resolveFile"(Ljava/lang/String;)Ljava/io/File;
�BCDsetTodir(Ljava/io/File;)V
�FG/
getOutfileITEST-
�KLG
setOutfile
�NO6getFork
QRScreateWatchdog1()Lorg/apache/tools/ant/taskdefs/ExecuteWatchdog;
UVWexecuteAsForked�(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;Lorg/apache/tools/ant/taskdefs/ExecuteWatchdog;Ljava/io/File;)Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$TestResultHolder;
YZ[executeInVM�(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;)Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$TestResultHolder;]Test 
_`aactOnTestResult�(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$TestResultHolder;Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;Ljava/lang/String;)V
�cd6isEmptyfnullhtest name must be specifiedjjunittestcases
lm@createTempPropertiesFileojava/io/BufferedWriterqjava/io/FileWriter
psdD
nudv(Ljava/io/Writer;)VxCreating casesfile '
z{/getAbsolutePath}' with content: java/io/PrintStream�-org/apache/tools/ant/taskdefs/LogOutputStream
��d�(Lorg/apache/tools/ant/Task;I)V
~�d�(Ljava/io/OutputStream;)V
���	printDualB(Ljava/io/BufferedWriter;Ljava/io/PrintStream;Ljava/lang/String;)V
����
getMethods()[Ljava/lang/String;�:
���/getMethodsString
����replace(CC)Ljava/lang/String;�,
`�j�-(Ljava/lang/Object;)Ljava/lang/StringBuilder;�,TEST-
���printlnDual
n��eflush�Tests
n��eclose�java/lang/Throwable
���,
addSuppressed	���
FILE_UTILS%Lorg/apache/tools/ant/util/FileUtils;
�����#org/apache/tools/ant/util/FileUtilstryHardToDelete(Ljava/io/File;)Z
om�java/io/IOException
�m�0Permissions ignored when running in forked mode!
C2�$java/lang/CloneNotSupportedException�This shouldn't happen
C��NcreateArgument
����G/org/apache/tools/ant/types/Commandline$ArgumentsetValue�6org/apache/tools/ant/taskdefs/optional/junit/Constants�methods=�%Running multiple tests in the same VM�
testsfile=�
skipNonTests=
���6isSkipNonTests
`�j�(Z)Ljava/lang/StringBuilder;�filtertrace=
���6getFiltertrace�haltOnError=
���6getHaltonerror�haltOnFailure=
���6getHaltonfailure
���checkIncludeAntRuntime/(Lorg/apache/tools/ant/types/CommandlineJava;)V
���checkIncludeSummary�showoutput=�outputtoformatters=�logfailedtests=�	threadid=
���	getThread�logtestlistenerevents=
6getEnableTestListenerEvents
`d7
mergeFormattersz(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;)[Lorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement;


=org/apache/tools/ant/taskdefs/optional/junit/FormatterElement	shouldUse(Lorg/apache/tools/ant/Task;)Z
formatter=

/getClassname
	getOutput�(Lorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement;Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;)Ljava/io/File;junitvmwatcher
crashfile=junit
propsfile=
o!"#
getProperties()Ljava/util/Hashtable;%java/util/Properties
$c
$()*putAll(Ljava/util/Map;)V
,-.toPath()Ljava/nio/file/Path;0java/nio/file/OpenOption
23456java/nio/file/FilesnewOutputStreamG(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/OutputStream;8'Ant JUnitTask generated properties file
$:;<store+(Ljava/io/OutputStream;Ljava/lang/String;)V
>�?java/io/OutputStreamA)Error creating temporary properties file.C%org/apache/tools/ant/taskdefs/ExecuteELorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$JUnitLogStreamHandler
DGdH (Lorg/apache/tools/ant/Task;II)V
BJdKf(Lorg/apache/tools/ant/taskdefs/ExecuteStreamHandler;Lorg/apache/tools/ant/taskdefs/ExecuteWatchdog;)V
CM@�
BOPQsetCommandline([Ljava/lang/String;)V
BST�	setAntRun
BVWDsetWorkingDirectory
�YZ�getVariables\Setting environment variable: 
B^_�setNewenvironment
BabQsetEnvironment
Cde/describeCommand
gh�checkForkedPathjGorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$TestResultHolder
ic
Bm
	iop)exitCoderunknowntjava/io/BufferedReadervjava/io/FileReader
us
sydz(Ljava/io/Reader;)V
s|}/readLineMonitor file (�N) missing, location not writable, testcase not started or mixing ant versions?
���z
�����%org/apache/tools/ant/util/StringUtils
getStackTrace)(Ljava/lang/Throwable;)Ljava/lang/String;
����6-org/apache/tools/ant/taskdefs/ExecuteWatchdog
killedProcess�terminated successfully
���createDummyTestForBatchTestr(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;)Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;	i��timedOut
���
logTimeout�([Lorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement;Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;Ljava/lang/String;)V	i��crashed
���
logVmCrash�,Could not delete temporary properties file '�'.�Process fork failed.
B���getEnvironmentVariables()Ljava/util/Map;�	CLASSPATH�����
java/util/Map
~�d�3(Lorg/apache/tools/ant/Project;Ljava/lang/String;)V
~�jv�Implicitly adding �
 to CLASSPATH�
withoutanderr
���*equalsIgnoreCase
��*equalsWithOutAndErr�OutErr�7formatter=org.apache.tools.ant.taskdefs.optional.junit.�SummaryJUnitResultFormatter
C��6
haveClasspath
�����#org/apache/tools/ant/AntClassLoadernewAntClassLoader~(Ljava/lang/ClassLoader;Lorg/apache/tools/ant/Project;Lorg/apache/tools/ant/types/Path;Z)Lorg/apache/tools/ant/AntClassLoader;
����setIsolated
����&%org/apache/tools/ant/util/LoaderUtilsclassNameToResource
����getResources+(Ljava/lang/String;)Ljava/util/Enumeration;
����list.(Ljava/util/Enumeration;)Ljava/util/ArrayList;
��java/net/URL
���	urlEquals(Ljava/net/URL;Ljava/net/URL;)Z�VWARNING: multiple versions of ant detected in path for junit%n         %s%n     and %s
����format9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
��
���maybeStripJarAndClass"(Ljava/net/URL;)Ljava/lang/String;�file:
���*
startsWith
���&fromURI
�
�
�mjar:
�indexOf(I)I
�length
�	
	substring(II)Ljava/lang/String;
.properties
o
getBaseDir()Ljava/io/File;
�createTempFileb(Lorg/apache/tools/ant/Project;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;ZZ)Ljava/io/File;junit.framework.TestListener: GRorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitTestRunnerMirrorhandleOutput
� !handleInput([BII)I
�$%GhandleFlush
�$()GhandleErrorOutput
�(,-GhandleErrorFlush
�,
�012
setProperties(Ljava/util/Hashtable;)V4/dir attribute ignored if running in the same VM6GChanges to environment variables are ignored if running in the same VM.
C89�getBootclasspath;3bootclasspath is ignored if running in the same VM.
C=>?getSystemProperties<()Lorg/apache/tools/ant/types/CommandlineJava$SysProperties;
ABCDe8org/apache/tools/ant/types/CommandlineJava$SysProperties	setSystemFUsing System properties 
HIJ"Kjava/lang/System()Ljava/util/Properties;OMNOgetClass()Ljava/lang/Class;
QRecreateClassLoader
�TUesetThreadContextLoaderOWXYnewJUnitTestRunner�(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;[Ljava/lang/String;ZZZZZLorg/apache/tools/ant/AntClassLoader;)Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitTestRunnerMirror;O[\]newSummaryJUnitResultFormatterb()Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$SummaryJUnitResultFormatterMirror;_`ab�^org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$SummaryJUnitResultFormatterMirrorsetWithOutAndErr
defgetDefaultOutput()Ljava/io/OutputStream;_hi�	setOutputklmaddFormatter\(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirror;)VopqsetPermissions+(Lorg/apache/tools/ant/types/Permissions;)V

sLD

h

vwxcreateFormatterr(Ljava/lang/ClassLoader;)Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirror;z�e|}
getRetCode
A�e
restoreSystem
���eresetThreadContextLoader
����java/lang/IntegerintValue
��d�(J)V���()Ljava/util/function/Function;����flatMap����concatM(Ljava/util/stream/Stream;Ljava/util/stream/Stream;)Ljava/util/stream/Stream;
�����java/util/stream/CollectorstoList()Ljava/util/stream/Collector;����collect0(Ljava/util/stream/Collector;)Ljava/lang/Object;�java/util/Collection�c���testX(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask;)Ljava/util/function/Predicate;����filter9(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;���()Ljava/util/function/Consumer;
���hasPath
C���getUpgrademodulepath��� ()Ljava/util/function/Predicate;����allMatch!(Ljava/util/function/Predicate;)Z��:The module path requires fork attribute to be set to true.
�@
~���
���
hasModuleInfo���()Ljava/io/FilenameFilter;
���	listFiles)(Ljava/io/FilenameFilter;)[Ljava/io/File;�%s%s%s	��	separator
S
�2
����addFormattersTo(Ljava/util/Vector;)V
�
����copyInto([Ljava/lang/Object;)V

��6
getUseFile�
IGNORETHIS

��/getExtension
�d�'(Ljava/lang/String;Ljava/lang/String;)V�/
��
�(I)Ljava/lang/String;�-org/apache/tools/ant/taskdefs/optional/junit/
����getResourceSource9(Ljava/lang/ClassLoader;Ljava/lang/String;)Ljava/io/File;�Found 
~��DsetLocation�Couldn't find �aTimeout occurred. Please note the time in the report does not reflect the time until the timeout.
���	logVmExit�([Lorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement;Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;Ljava/lang/String;Ljava/lang/String;)V�qForked Java VM exited abnormally. Please note the time in the report does not reflect the time until the VM exit.OM
�	setCounts(JJJJ)VO	addVmExit�(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirror;Ljava/io/OutputStream;Ljava/lang/String;Ljava/lang/String;)V

edeleteClassLoader
~2
oRH(Lorg/apache/tools/ant/types/Path;)Lorg/apache/tools/ant/AntClassLoader;
M
�	setParent(Ljava/lang/ClassLoader;)V
��setParentFirst
�eaddJavaLibrariesUsing CLASSPATH 
�y/
� !GaddSystemPackageRoot#	org.junit%org/apache/tools/ant/MagicNames'org.apache.tools.ant
��**org/apache/tools/ant/util/SplitClassLoader
)�	-./commandline,Lorg/apache/tools/ant/types/CommandlineJava;
Cc2<org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner
C45GsetClassname7java/util/HashMap
6c
�:;<	shouldRun!(Lorg/apache/tools/ant/Project;)Z>Norg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$ForkedTestConfiguration
=@dA;(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;)V	��DEFcomputeIfAbsentC(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;�HIJvalues()Ljava/util/Collection;L failedN
 (timeout)P
 (crashed)R FAILED
�TU/getErrorPropertyWtrue
oYZ�setNewProperty
�\]/getFailureProperty
�_`lastIndexOfbBatch-With-Multiple-Tests
�deGsetName
�ghivalueOf&(Ljava/lang/Object;)Ljava/lang/String;
nklGwrite
~noGprint
nqrenewLine
~tuGprintln
~xmodule-info.class
zd{#(Ljava/io/File;Ljava/lang/String;)V	}~��java/util/LocaleENGLISHLjava/util/Locale;
����toLowerCase&(Ljava/util/Locale;)Ljava/lang/String;�.jar
���*endsWith
���6hasMethodsSpecified
����elements
���BriefJUnitResultFormatter�JUnit4TestMethodAdapter�JUnitResultFormatter�JUnitTaskMirrorImpl�JUnitTestRunner�JUnitVersionHelper�!OutErrSummaryJUnitResultFormatter�PlainJUnitResultFormatter�TearDownOnVmCrash�XMLJUnitResultFormatter�IgnoredTestListener�IgnoredTestResult�CustomJUnit4TestAdapterCache�TestListenerWrapper
)�d�l(Ljava/lang/ClassLoader;Lorg/apache/tools/ant/types/Path;Lorg/apache/tools/ant/Project;[Ljava/lang/String;)V
����getFileUtils'()Lorg/apache/tools/ant/util/FileUtils;
ConstantValueSTRING_BUFFER_SIZE�TESTLISTENER_PREFIXENABLE_TESTLISTENER_EVENTS	SignatureJLjava/util/List<Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;>;JLjava/util/List<Lorg/apache/tools/ant/taskdefs/optional/junit/BatchTest;>;SLjava/util/Vector<Lorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement;>;TIMEOUT_MESSAGENAME_OF_DUMMY_TESTsetReloadingCodeLineNumberTableLocalVariableTablethis8Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask;valuepropertyNamesetForkModeD(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$ForkMode;)Vmode
setThreads
StackMapTablesetPrintsummaryL(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$SummaryAttribute;)VILorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$SummaryAttribute;
setTimeout(Ljava/lang/Integer;)VmaxsetJvmcreateJvmargsetDirsysp1Lorg/apache/tools/ant/types/Environment$Variable;
DeprecatedRuntimeVisibleAnnotationsLjava/lang/Deprecated;addConfiguredSysproperty
testString(Lorg/apache/tools/ant/types/PropertySet;addEnvvarnewenv7Lorg/apache/tools/ant/taskdefs/optional/junit/BaseTest;addTest8Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;createBatchTest:()Lorg/apache/tools/ant/taskdefs/optional/junit/BatchTest;8Lorg/apache/tools/ant/taskdefs/optional/junit/BatchTest;B(Lorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement;)Vfe?Lorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement;setIncludeantruntimeb
setShowOutputsetOutputToFormatterssetLogFailedTests
addAssertionsasserts'Lorg/apache/tools/ant/types/Assertions;createPermissions*()Lorg/apache/tools/ant/types/Permissions;cloneVm
Exceptions
setTempdirsetEnableTestListenerEventseinit"Ljava/lang/ClassNotFoundException;cLjava/lang/Class;consLjava/lang/reflect/Constructor;Ljava/lang/Exception;taskloaderLocalVariableTypeTableRLjava/lang/Class<+Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror;>;`Ljava/lang/reflect/Constructor<+Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror;>;pathextramyLoader	testListsforkPerTest\Ljava/util/List<Ljava/util/List<Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;>;>;iterLjava/util/Iterator;`Ljava/util/Iterator<Ljava/util/List<Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;>;>;�(Ljava/util/Iterator<Ljava/util/List<Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;>;>;)Ljava/util/List<Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;>;lthreadIdd(Ljava/util/Iterator<Ljava/util/List<Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;>;>;I)V Ljava/lang/InterruptedException;[Ljava/lang/Thread;iexceptionOccurrednewlisttestList
numThreads`(Ljava/util/List<Ljava/util/List<Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;>;>;I)Vwatchdog/Lorg/apache/tools/ant/taskdefs/ExecuteWatchdog;resultILorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$TestResultHolder;argthreadtestNamet	logWriterLjava/io/PrintStream;writerLjava/io/BufferedWriter;Ljava/io/IOException;	casesFileN(Ljava/util/List<Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;>;I)V(Ljava/util/List;)VM(Ljava/util/List<Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;>;)Vcmd&Ljava/lang/CloneNotSupportedException;outFile	outstreamLjava/io/OutputStream;variablemsg
vmCrashStringbrLjava/io/BufferedReader;crashformatterArgLjava/lang/StringBuilder;feArray@[Lorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement;	vmWatcher	propsFilepLjava/util/Hashtable;propsLjava/util/Properties;'Lorg/apache/tools/ant/taskdefs/Execute;environment[Ljava/lang/String;success;Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/Object;>;:Hjava/util/HashtableCLjava/util/Map;cp5Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
summaryOptionprefixcurrentLjava/net/URL;projectResourceNamepreviousu1u2url1url2plingusoutputbuffer[Boffsetf`Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$SummaryJUnitResultFormatterMirror;
sysProperties:Lorg/apache/tools/ant/types/CommandlineJava$SysProperties;S()Ljava/util/Enumeration<Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;>;exmodulemodules[Ljava/io/File;modulePathEntry
modulePathexpandedfallTestsR()Ljava/util/Enumeration<Lorg/apache/tools/ant/taskdefs/optional/junit/BaseTest;>;feVectorbasefilenamedestFileabsFilenameresourcetestCaseout	formatterYLorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirror;messageyWorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirror
userClasspathuserModulepathLjava/util/Enumeration;
runIndividualtestConfigurationsQLjava/util/Enumeration<Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;>;�Ljava/util/Map<Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$ForkedTestConfiguration;Ljava/util/List<Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;>;>;�(Ljava/util/Enumeration<Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;>;Z)Ljava/util/Collection<Ljava/util/List<Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;>;>;O(IZLorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;Ljava/lang/String;)V	exitValue	wasKillednamefatalerrorOccurredHerefailureOccurredHereindexpackwtextrootlambda$executeOrQueue$5b(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$ForkedTestConfiguration;)Ljava/util/List;kPLorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$ForkedTestConfiguration;lambda$expandModulePath$4#(Ljava/io/File;Ljava/lang/String;)Zlambda$checkMethodLists$3;(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;)Zlambda$getIndividualTests$2S(Lorg/apache/tools/ant/taskdefs/optional/junit/BatchTest;)Ljava/util/stream/Stream;lambda$execute$1P(Lorg/apache/tools/ant/taskdefs/optional/junit/BatchTest;)Ljava/util/Collection;lambda$setupJUnitDelegate$0Q(Ljava/lang/ClassLoader;Lorg/apache/tools/ant/types/Path;)Ljava/lang/ClassLoader;
access$000P(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask;Ljava/util/Iterator;I)Vx0x1x2
access$102�(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask;Lorg/apache/tools/ant/BuildException;)Lorg/apache/tools/ant/BuildException;<clinit>
SourceFileJUnitTask.javaBootstrapMethods�
�����"java/lang/invoke/LambdaMetafactorymetafactory�(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;)V	��(Ljava/util/Collection;)V�
������
�����
���eresolveMethodsA�
�N�;(Lorg/apache/tools/ant/taskdefs/optional/junit/BatchTest;)Z��
����
����InnerClassesForkModeSummaryAttribute�&org/apache/tools/ant/types/CommandlineArgumentVariableJUnitTestRunnerMirrorJunitTestThreadTestResultHolderJUnitLogStreamHandler
SysProperties!SummaryJUnitResultFormatterMirrorJUnitResultFormatterMirrorForkedTestConfiguration�Korg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$JUnitLogOutputStreamJUnitLogOutputStream�%java/lang/invoke/MethodHandles$Lookup�java/lang/invoke/MethodHandlesLookup!�)����)������!��./������������QR<=9
2����������� R���$%����B!()�����ae���>*���
���������>*���
���������>*���
�������G�>*+���
�������>*���
�����G�>*+���
 !�������>*���
12�������>*+�"��
HI����%�7�O
�*�&��WX	Z�
��
()�	���M*+�*�0*+�3�7��ijk��������>*+�:��
������=FG�A	*�>+�B��
���	��	��G�A	*�>+�H��
���	��	��N�2*�>�K�������D�>*+�O��
�����QRUV�A	*�>+�S��
���	��	������V�s)+�WM*�\�`Y�bf�h,�h�l�q*�>+�S���� �(�� )��)��$�wx�A	*�>+�u��
���	��	��{��9*�>*�\�y�}���������9*�>*�\���}��������9*�>*�\���}��������9*�>*�\���}������V�A	*��+����
$%�	��	��_��>*����
01��������?+*���+*���*��+*���+*���*��+*���+*�����&	>?@AC'D.E6G>H�?��?����A�M*��+��W*+����QRS��������^��Y*�\��L*��+��W*+��+��]^_`�����l��B
*��+��W��
j	k�
��
�����>*�ʱ�
tu�������>*�ͱ�
���������>*�б�
���������>*�ӱ�
���������f*�>���
��Yܷ޿*�>+����
������������R*���*��Y���*�������������A	*�>���
���	��	�de�Q�*��*��Y���*��Y���*��Y���*�O*�:*�7*�*�0*��*��*��Y����*��*��*��*��*��*��*��*�Y��"*�*�	*�*�*�*�*�*�*�&��z����%�*�/�4�9�?�D�I�T�Y�^�c�h�m�r�w��������������������������o�D�u++�$+��
+����Y�Y+S��*+�����%�*��+��+ R����>*�	��
������6�g*�\!�#L+�+�'�*�	��������������e��?*�~Y*�\�+��**,�.���*1�3*6�3*8�3*:�3��")07>	�?���^�
���Z�+<�>W�M��YF,*�H�L�+�`Y�bO�Q�hV�h�l�>O�XM,�\+���Y`*�H�b�,�RYS�eN-�Y*S�i�O�M��Y,*�H�q�Dtuo�2
@HWeuv�>��@5��e��v
������@5�e��KD�:R�?o�e�v�\L*��Z�~Y*�\�+M,*���t*�>�wN-�,-�t*�>�zN-�*,�}�,*-���t**+,�����?���*+��***��������>()
*+!,)--.20:1F2O4a>d?iAuB�*H�)8�v��p���2?~~�
e���*��*��*����Y��L*��*�"�������*�&=*�"����>��*�"�����+**������W�:*����*����+Y��W����+**��������W*+��*��:*�����������NLMNPR4TBUVViYZ�[�\�[�`�b�c�b�c�d�*�����4�()Bu	�
��+�C�"6L�������"+YM�+���+����,ð,ðN,�-� ���
����"��""
��C��	
�9�*�`Y�b�h��l��*��p*+��YN�f*�`Y�b��h-�������h�h-����h��l��-��*-��������*-����*�`Y�b�h��l���"��*�h�r��������*'f������)'f��
��j�������+�N�*-���:��Y��:*�"�����n+�:���Y����:		��	��W�2	�:

���
����:���W��ݧ���+:�N6�+�Y�Y**-`��S2�"����66�2�%����:6���*����Y*��*�����(�z�����$�4�R�]�j������������������������������������	���p�
��RG��	���(�h)�7$�����)*RG��	$�


����&	�����-���%��
���-����B(����
�<�*+�-�.+�1��N-�4-�8�-*�\;�=�A-�E�-�`Y�bH�h-�-�h�l�J-�M�*�P:*-�T:�
*-�X:*-�`Y�b\�h-�-�h�l�^��:���*1LSY
cfm��HY
c������ )|��m��*�!�i��
A�?*+���
������0G�k!+�+�b�
e+�����Yg�޿��&'( *�!��!!�
��
���*i�kN�nY�pY-�r�t:*�`Y�bw�h-�y�h|�h�l��~Y��Y*����::+�:��������::�4�-�����)�`Y�b��h��,+���h�l���8�*�`Y�b��h*�\;�=���l���"�`Y�b��h�8�h�l���E�%�`Y�b��h�-�h�l���"�`Y�b��h�E�h�l������*�P:*-�T:*��^���:���:�����-��W�D:*����5:*�����Y�*�:	��-��W�:
*
����	��mu�w|����o��������o�����,569;;M>P?n@rAxB�C�D�F�G�H�G�JMNO$N*QISLTQWWX]YbZm[u6�`�c�a�b�d�[�\�]�_�`�c�a�b�d�e��
n�"�M #$P��Wbr%&�
����'�
��
������ )�(R�����X�n~���Y�.)���(�n��	�n���JoN�U��
��o�����)
*�Q*+���
mn��������+VW��7*���*���*�>���C:�:��Y�*�H�L�-�8��+�-��+���I�Ż`Y�b϶h+���h�l�ȧ'*����Ż`Y�bӶh-���l���Ż`Y�bնh+�׶ڶl���Ż`Y�bݶh+�߶ڶl���Ż`Y�b�h+��ڶl���Ż`Y�b�h+��ڶl��*��*���Ż`Y�b�h*�Ͷڶl���Ż`Y�b��h*�жڶl���Ż`Y�b��h*�Ӷڶl���Ż`Y�b��h+����l���Ż`Y�b��h*��ڶl�Ȼ`Y��:*+�::�66		�b	2:

*�	�L�hW
��hW*
+�:���hW��W���l�Ȼ`Y�b:�	���*�k:�Ż`Y�b�h�y�h�l��*�k:�Ż`Y�b�h�y�h�l��*�\� :	�$Y�&:

	�'�+�/�1:
7�9�=�:����W��Y@*�H�L��BY�DY*�F,�I:�L�N*�\�R*�O�*�O�U*���X:�=:

�66�*
2:*�`Y�b[�h�h�l�����*���]�`*�c��*�f�iY�k:
6
�l�n6q::���sY�uY�w�x:�{:�#�`Y�b~�h�y�h��h�l:����O����W�C:*��������*����W�:��������W�,�
,��������6-�
�+��L,�,���
��*+����
��*+�������9�`Y�b��h�y�h��h�l:�
��Y�޿*��]:��Y�*�H�L�:q::���sY�uY�w�x:�{:�#�`Y�b~�h�y�h��h�l:����O����W�C:*��������*����W�:��������W�,�
,��������6-�
�+��L,�,���
��*+����
��*+�������9�`Y�b��h�y�h��h�l:�
��Y�޿*���
�
��������o���!��������;To�;yT`yy{y����j������ �1�5�A�H�j�r������������
���5�T�s��������������������������	���'�0�6�?�S�\�_�h�|�����������������������������������"�<�V�\�e�l�v�|��������������������������&.7:
JW
`epv��������� �"��������������*�;@HTV`emy����
��
���������
 * 1"4$�L!,/ �-,.R�R��
�/0��'<1�
���2�=3�:45W�6��'V
��2�=3�:45��67��7��77(R1,/�z78�s9:?�;Rh�<R��=>	��?@
�F
ABC��
��D��=E	�/N��C8#�A
��C`FF�I
������C`FG$��6B���C`FG$BII�-�d��C`FG$BIi�sXod����

@��9����C`FG$BIiB�R��-��C`FG$BIi��sXod����

@��9����C`FG$BIi����C`FG$BIi������k*�ʙf��M,�����N-�+*�\�y�}�~Y*�\-����*�`Y�b��h*������h�l��+*�\�y�}*������*
,-./0,163X5g6j8�*_�JRKk��k,/_�L��6���3�*�<�+����@���M����;*�7�6�M**�0����M+�Ż`Y�bŶh,�hǶh�l�ȱ�DE
FGI7J:N� 
0N;��;,/���� h����*���*�+�ɚ�*�\+*�\�y��M,��o�Q��N:,-�ڸ޶�:���G����:�/��%*��YSYS����,�,��:����:,� ,��N,�,��:-��-��8��o���o'������������fVWY
Z[]^_#^'a,b.c5d8f[gjh�s�l�n�o�r�p�s�]�t�>[5OP5cQ8`RP'�����,/�L�/C�����E��Bo�J��C����
����D*��M+��N,���--���#�Y��,�����Y��-�������,-����|}
~4�=>��*DSPDTP?U
:V��>��
����+*��L+����+!�=+�
+���L+������)�� W)+XP&Y�*�$��������m@��&��*�\+*��
*��
*�\������"��&��&N�7���o�����o��G��@+���*+��/*���#*�Й
*��+�*�͙*+��*+���&	�
���!�+�2�:�?��@��@Z� !�u*���*��+��*+�"������*��[\]))���%G�x&*���*��+�#*�͙*+�&�*+�&������ �%��&��&Z� )G�x&*���*��+�'*�͙*+�*�*+�*������ �%��&��&Z� -G�x&*���*��+�+*�͙*+�.�*+�.������ %�&��&Z� Z[��

�*���*��+�1��M,*�\� �/*�O�*3��*���*���X�*5��*�>�7�*:��*�>�<N-�-�@*�`Y�bE�h�G���l��*��**���L�\�͵��*�P*���
*���S**��,,��,��,��,��*�*���V	��*�7�3*���Z:**�0���^*�c�g*���j*��*��n*,�:�66�L2:*�	�6*,�:�
�r�*�c�t*��*���u�j����*��y�iY�k:*��{�n:-�-�~*���
*�����:	-�-�~*���
*����	�i�������6%-?G Q!Y%Z&a'e(i,�.�/�1�3�4�6�7�8�9�6�;�=�>�?�@ADF;GDHMIRJ\LeNwF}R�S�T�U�W�X�Z�[�U�W�X�Z�[�]�R�%^_M*.R;<���+��������at`a�l�!��A7
�]�F�.
���+ii
���A��	
��A�
��RS�T*�:����Y*�:�������hi	k����	��ef�4
��Y*����u�
�����h.*��������*�������������װ�����*��.���b�e�o,*������*����*������������
�&�+��,���
���e��R*�>�z���*�>�����:*���������*�����������Y��޿�����4�F�Q��R���+
��+D*�\+��M,<��W>,�,���N6,�,���N,�,��:-��-�o.�#.�37:��2�������� �#�+�.��* c�9D��D��M���~�o�o�~���~�������	
��~Y*�\�+M+��N-�66��-2:*�\�=:��k���c����:�O:		�6
6
�<	2:,�~Y*�\��YSY��SY��S����t���ç,�~Y*�\���t���d,��>��%�0�@�L�Q�k����������������Hk,dRLQef0�gR%�����h��i��\�~~I�D~~I�jj�?~~I���k��V$*����*�������������װ��� ��$���l��*�ö��M+,��,�ֽ
N,-��-��������*����m�9:m���M+�ۙG,�EN-��N�`Y�b-�h+��h�l:�Y,�8��:�y:*�\�=���&	�����+�:�AK�H?n+ o:pRA
qM��M��M������65G�?*+�.W��
���r0*��z+���+��L��`Y�b�h+�h�lL�\+��M,�,*�`Y�b�h,�y�h�l��*���},���*�`Y�b��h+�h�l����*
$
%'(+2-6.R/]0_2x3� z��zr2H^R�
�6���W*+,�-����
C
D�*��9:��s���W*+,�-����
N
S�*��9:��s����	9*���*��*�`Y�bE�h�G���l��*��**����\�͵��*�P*���
*���S,
	
	�,*�\� �/+:�66�i2:*�	�S*���u:		�C:
*,�:��+�/�1:
�:
�	*�c:
*��,	
-�����*�7�0*���Z:**�0���^*��,*�c-�*��� *�����:
*���
*����
������%%'%��$]^b&d-eCgGiNjUm]nho�p�q�r�s�t�u�v�x�{�y�}�~���o�����������%�.�5�8��f
�=t0
�4.R�Euv	�Y���"^_9��99:9��9w9s��7
�F�HF���F
x>�
�F���F�3P��F�����F���Re��*�>�wL*�>�zM+�,��*��
*����*�	�~Y*�\�+N+�-+��~�t,�*-�}�-*,���t*�ʙ-*�`Y�b��h*������h�l��-*����**�\-�
��*��\� *��\o�\�*��*��\�*���*���*�`Y�b�h*����h�l��*���*��"�*��&���b����&�*�6�:�E�Q�Z�a����������������������
��*6����z��{���~~
�~02�K�e�<
*�	*������	��
��e�y-*���*���(*��*���)�
*���)�+*���������'�,��-���@A�`!*�,�*�CY�0�,*�,1�3*�,�������!������*z�6Y�8N+�޶�:���[����:*�\�9�@��M�*�&�
*��"-�=Y�?�B�C����W���-�G��*
ln'o3rGsQu`vjxp{s|�4'I��z��z|z}r~Jzr~�����-�����`����iY�k:�n��*-�^���	�����>���)����	"`a��+���
+����6+�n���6+�n���6����
,���N,��G��Y�`Y�b-�hK�h+���	M��h+���	O��h�l*�H�b�*�ә@*�`Y�b-�hQ�h+���	M��h+���	O��h�l���,�S�*�\,�SV�X�,�[�*�\,�[V�X��N��)�<�F�X�^�s���������������������H������)��<���@�@�
@��!i��^^`�i��^^`��i��^^`�i��^^`�
�%i��`�i��`��i��`�i��`�	
����A*�1��L*�-.�^=�*�-`���N+�`Y�b-�ha�h�l�c+��		
	'	?	�*A��9"�/�)'��
�$�A�
���T*,�f�j+,�m��		
	� �&Y$���
���\*,�f�j*�p+,�s��				 � �&Y$���
���F*�*�v����	)���@
���9�Y*w�y���	3��R
���2��Y����w���
���B+�|���������QR����W+���+*�\�9�����������@
���5*���޶����������>
*+������Y�
��
������	v�)Y+,*�\��Y�SY�SY�SY�SY�SY�SY�SY�SY�SY	�SY
�SY�SY�SY
�SY�S����56u5� v��v�v����E*+����� ����)���;*+Z���������e�����������f
�����������������������������������������r�+�	���	X��	O�	�i�D�AC�	_O�	xO�	=������PK��D�ee]org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirror.class���4
Worg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirrorjava/lang/Object	setOutput(Ljava/io/OutputStream;)V
SourceFileJUnitTaskMirror.javaInnerClasses<org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorJUnitResultFormatterMirror	

	PK��&Xorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitTestRunnerMirror.class���4,Rorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitTestRunnerMirrorjava/lang/ObjectIGNORED_FILE_NAMELjava/lang/String;
ConstantValue	
IGNORETHISSUCCESSIFAILURESERRORSsetPermissions+(Lorg/apache/tools/ant/types/Permissions;)Vrun()VaddFormatter\(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirror;)V
getRetCode()IhandleErrorFlush(Ljava/lang/String;)VhandleErrorOutputhandleOutputhandleInput([BII)I
Exceptions!java/io/IOExceptionhandleFlush
SourceFileJUnitTaskMirror.javaInnerClasses'<org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorJUnitTestRunnerMirror*Worg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirrorJUnitResultFormatterMirror

	 "#$%&(	)&+	PK5H2��dorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$SummaryJUnitResultFormatterMirror.class���4^org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$SummaryJUnitResultFormatterMirrorjava/lang/ObjectWorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirrorsetWithOutAndErr(Z)V
SourceFileJUnitTaskMirror.javaInnerClasses
<org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror!SummaryJUnitResultFormatterMirrorJUnitResultFormatterMirror	
		PK{��f��Borg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror.class���4<org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorjava/lang/Object	addVmExit�(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirror;Ljava/io/OutputStream;Ljava/lang/String;Ljava/lang/String;)VnewJUnitTestRunner�(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;[Ljava/lang/String;ZZZZZLorg/apache/tools/ant/AntClassLoader;)Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitTestRunnerMirror;newSummaryJUnitResultFormatterb()Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$SummaryJUnitResultFormatterMirror;
SourceFileJUnitTaskMirror.javaInnerClassesRorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitTestRunnerMirrorJUnitTestRunnerMirror^org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$SummaryJUnitResultFormatterMirror!SummaryJUnitResultFormatterMirrorWorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirrorJUnitResultFormatterMirror	

			PK�1��Vorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorImpl$VmExitErrorTest.class���4A
junit/framework/TestCase<init>()V		
Porg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorImpl$VmExitErrorTestmessageLjava/lang/String;	test8Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;	testCase$junit/framework/AssertionFailedError
(Ljava/lang/String;)V
6org/apache/tools/ant/taskdefs/optional/junit/JUnitTestgetName()Ljava/lang/String; java/lang/StringBuilder

#$%append-(Ljava/lang/String;)Ljava/lang/StringBuilder;':
)*toString_(Ljava/lang/String;Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethisRLorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorImpl$VmExitErrorTest;aMessageanOriginalTest	aTestCasecountTestCases()Irun(Ljunit/framework/TestResult;)VrLjunit/framework/TestResult;getClassName
SourceFileJUnitTaskMirrorImpl.javaInnerClasses?@org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorImplVmExitErrorTest +,l*�*+�*,�
*-��-WX	YZ[.*/012345,,�-_./067,@�Y*���-d./089,/*��-i./0:,2*�
��-m./0*,K!�Y�!*�
��"&�"*��"�(�-r.!/0;<=
>@PK�����
�
Forg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorImpl.class���4f
java/lang/Object<init>()V		
@org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorImpltask8Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask;Aorg/apache/tools/ant/taskdefs/optional/junit/JUnitResultFormatter
	setOutput(Ljava/io/OutputStream;)V
startTestSuite;(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;)VPorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorImpl$VmExitErrorTest
_(Ljava/lang/String;Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;Ljava/lang/String;)V
	startTest(Ljunit/framework/Test;)V!$junit/framework/AssertionFailedError
 #$(Ljava/lang/String;)V
&'(addError.(Ljunit/framework/Test;Ljava/lang/Throwable;)V
*+endTestSuite-<org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner
,/0j(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;[Ljava/lang/String;ZZZZZLjava/lang/ClassLoader;)V2Horg/apache/tools/ant/taskdefs/optional/junit/SummaryJUnitResultFormatter
15<org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror;(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask;)VCodeLineNumberTableLocalVariableTablethisBLorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorImpl;	addVmExit�(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirror;Ljava/io/OutputStream;Ljava/lang/String;Ljava/lang/String;)Vtest8Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;
aFormatterYLorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirror;outLjava/io/OutputStream;messageLjava/lang/String;testCase	formatterCLorg/apache/tools/ant/taskdefs/optional/junit/JUnitResultFormatter;tLjunit/framework/TestCase;newJUnitTestRunner�(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;[Ljava/lang/String;ZZZZZLorg/apache/tools/ant/AntClassLoader;)Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitTestRunnerMirror;methods[Ljava/lang/String;haltOnErrorZfilterTrace
haltOnFailure
showOutputlogTestListenerEventsclassLoader%Lorg/apache/tools/ant/AntClassLoader;newSummaryJUnitResultFormatterb()Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$SummaryJUnitResultFormatterMirror;
SourceFileJUnitTaskMirrorImpl.javaInnerClassesVmExitErrorTest^Worg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirrorJUnitResultFormatterMirroraRorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitTestRunnerMirrorJUnitTestRunnerMirrord^org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$SummaryJUnitResultFormatterMirror!SummaryJUnitResultFormatterMirror1467F
*�*+��8-.	/9
:;
<=7�H,�
:-�+��Y+�:�� Y�"�%+�)�8"567;$<-=?>G?9RH:;H>?H@AHBCHDEHFEBGH$$IJKL7�
	�,Y+,�.�8G9\	:;>?MNOPQPRPSPTPUVWX72�1Y�3�8N9:;YZ["\]4_	`4b	c4e	PK�Q�>!>!<org/apache/tools/ant/taskdefs/optional/junit/JUnitTest.class���4#
5org/apache/tools/ant/taskdefs/optional/junit/BaseTest<init>()V		
6org/apache/tools/ant/taskdefs/optional/junit/JUnitTestnameLjava/lang/String;	methodsSpecifiedZ	methodsList	methods[Ljava/lang/String;	outfile	propsLjava/util/Properties;
 !,(Ljava/lang/String;ZZZ[Ljava/lang/String;I)V	#$haltOnError	&'
haltOnFail	)*filtertrace
,-./clone()Ljava/lang/Object;	123antThreadIDI
56resolveMethods8,
:;<=>java/lang/StringjoinE(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/String;
@ABparseTestMethodNamesList'(Ljava/lang/String;)[Ljava/lang/String;D"java/lang/IllegalArgumentExceptionF#org/apache/tools/ant/BuildExceptionHjava/lang/StringBuilder
GK(Invalid specification of test methods: "
GMNOappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;Q;"; expected: comma-separated list of valid Java identifiers
GSTUtoString()Ljava/lang/String;
EWX*(Ljava/lang/String;Ljava/lang/Throwable;)VZmethodNames is <null>
C\](Ljava/lang/String;)V
:_`Utrim
:bcdlength()I
:fghcharAt(I)C
:jkl	substring(II)Ljava/lang/String;nEmpty method name
:pqrtoCharArray()[C
tuvwxjava/lang/CharacterisJavaIdentifierStart(C)ZzIllegal start of method name: 
G|N}(C)Ljava/lang/StringBuilder;
t�xisJavaIdentifierPart�"Illegal character in method name: �Space in method name	���runsJ	���failures	���errors	���skips	���runTime�java/util/Properties
�
����putAll(Ljava/util/Map;)V
�����#org/apache/tools/ant/PropertyHelpergetPropertyHelperE(Lorg/apache/tools/ant/Project;)Lorg/apache/tools/ant/PropertyHelper;
��/getIfCondition
����testIfCondition(Ljava/lang/Object;)Z
��/getUnlessCondition
����testUnlessCondition	���
formattersLjava/util/Vector;
����djava/util/Vectorsize�=org/apache/tools/ant/taskdefs/optional/junit/FormatterElement
����copyInto([Ljava/lang/Object;)V
����	elementAt(I)Ljava/lang/Object;
����
addElement(Ljava/lang/Object;)V
�-�java/lang/Object
�-
�-�$java/lang/CloneNotSupportedException�java/lang/CloneableCodeLineNumberTableLocalVariableTablethis8Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;(Ljava/lang/String;ZZZ)V
haltOnFailure+(Ljava/lang/String;ZZZ[Ljava/lang/String;)Vthread
StackMapTable
setMethodsvalue([Ljava/lang/String;)VsetName	setThread(I)V
setOutfilehasMethodsSpecified()Z
getMethods()[Ljava/lang/String;getMethodsStringex$Ljava/lang/IllegalArgumentException;icCmethodNameschars[C	wordCountresultstateBeforeWordstateInsideWordstateAfterWordstatewordStartIndex	wordIndex�
ExceptionsgetName	getThread
getOutfile	setCounts(JJJ)V(JJJJ)V
setRunTime(J)VrunCount()JfailureCount
errorCount	skipCount
getRunTime
getProperties()Ljava/util/Properties;
setProperties(Ljava/util/Hashtable;)VpLjava/util/Hashtable;LocalVariableTypeTableLjava/util/Hashtable<**>;	Signature(Ljava/util/Hashtable<**>;)V	shouldRun!(Lorg/apache/tools/ant/Project;)ZLorg/apache/tools/ant/Project;ph%Lorg/apache/tools/ant/PropertyHelper;
getFormattersB()[Lorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement;fes@[Lorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement;addFormattersTo(Ljava/util/Vector;)VvcountTLjava/util/Vector<-Lorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement;>;W(Ljava/util/Vector<-Lorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement;>;)Vte&Ljava/lang/CloneNotSupportedException;
SourceFileJUnitTest.java!�����������23 �i#*�*�*�
*�*�*�*���"N+	258;K"O�#��]�|(*�*�*�
*�*�*�*�*+���&	U+	258;K"V'W�(��(��b*+���
bc�4��$�*��m
*+���
pq�>
��

$
�
*
!�Vc*�*�*�
*�*�*�*�*+�*�"*�%*�(*���
**�
��+�,��*�0��>~+	258;K"'�,�1�7�E�\�b��Hc��cc$c�c*cc�3�O�A:,�:,U�:,,�]�u*+�*+���
*������������N�:���u*+�*+���
*������������N�,�]�>*+���
���������>*�0��
������3�]�>*+���
���������/*�
���������R*�
�*��*�4*�����������U�[ *��*�
�*7*��9�*������� ���6��B*��=*�
�6**��?��(L�EY�GY�IJ�L*��LP�L�R+�V��C������A��$��B���\C$	AB��
�*�
�CYY�[�*�^K*�a<��:�*d�e,�"*d�i�^K*�a<�
�CYm�[�*�oM,4,�
�CYm�[�>6,��,4,�������::66666	6
6,���,46��b�,�
�CYm�[� ����s�
6	6���CY�GY�Iy�L�{�R�[�,�
�
*	�iS6�h �
�
*	�iS6�K�~��@�CY�GY�I��L�{�R�[�,�	6� ��
�CY��[����
�/�
�
*	,��iS����6	!-9>BLQYc"e#o$x%{#�)�+�,�-�/�0�1�2�3�4�6�7�8�:�;�<�>
BC$D*E1FAGGHRKnOuP{Q�T�2�[�^�`�a�e��h�3�������3���c3Qx��ed�3�B��?�3�<�3�9�3�6�3�3�3	�0�3
�G�*�����:�,�'	
	�	��C�U�/*���m����d�/*�0��u����U�/*���~������e*��*!��*������
���*�����������y	*��*!��*��*������
����4�������������>*����
���������/*���������/*���������/*���������/*���������/*���������/*��������b*��Y���*�+����������	
	
�{!+��M,*�����,*����������� �� !��!	�
��@�Q*������L*��+��+��������
��"*����=>�+*�����„��������!��*
�3"��"�3"�
�
�
./��4*��L+*���
*�����+*�������+�L*�01��!	/
12
� )�2 4���2��	���!"PK�5@))Dorg/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner$1.class���4 	>org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner$1this$0>Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner;
	
java/io/OutputStream<init>()VA(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner;)VCodeLineNumberTableLocalVariableTablethis@Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner$1;write(I)VbI
SourceFileJUnitTestRunner.javaEnclosingMethod<org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunnercreateEmptyStream()Ljava/io/PrintStream;InnerClasses 
>
*+�*��?

5�B
PK��ي��Dorg/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner$2.class���4?
java/lang/Object<init>()V
	
?org/apache/tools/ant/taskdefs/optional/junit/JUnitVersionHelpergetTestCaseName*(Ljunit/framework/Test;)Ljava/lang/String;
<org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner
access$000(Ljava/lang/String;)V>org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner$2Aorg/apache/tools/ant/taskdefs/optional/junit/JUnitResultFormatterCodeLineNumberTableLocalVariableTablethis@Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner$2;startTestSuite;(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;)Vsuite8Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;
Exceptions"#org/apache/tools/ant/BuildExceptionendTestSuite	setOutput(Ljava/io/OutputStream;)VoutLjava/io/OutputStream;setSystemOutputLjava/lang/String;setSystemErrorerraddError.(Ljunit/framework/Test;Ljava/lang/Throwable;)Varg0Ljunit/framework/Test;arg1Ljava/lang/Throwable;
addFailure?(Ljunit/framework/Test;Ljunit/framework/AssertionFailedError;)V&Ljunit/framework/AssertionFailedError;endTest(Ljunit/framework/Test;)V	startTest
SourceFileJUnitTestRunner.javaEnclosingMethod<=transferFormattersy(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner;Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;)VInnerClasses 
/*��5�" !#5�& !$%5�*&'(5�.&)*5�2+),-?�6 ./0123?�: ./04565�>./76@+��
�
BC./89:;>
PK�@�g
g
Dorg/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner$3.class���4a	>org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner$3this$0>Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner;		
val$testListenerLjunit/framework/TestListener;

@org/apache/tools/ant/taskdefs/optional/junit/TestListenerWrapper<init>!(Ljunit/framework/TestListener;)V
<org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner
access$100A(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner;)Z$junit/framework/AssertionFailedErrorjunit/framework/TestListener
addFailure?(Ljunit/framework/Test;Ljunit/framework/AssertionFailedError;)V java/lang/AssertionError
"#$%&java/lang/Throwable
getMessage()Ljava/lang/String;
()(Ljava/lang/String;)V
+,()V
"./0getCause()Ljava/lang/Throwable;
234	initCause,(Ljava/lang/Throwable;)Ljava/lang/Throwable;
"678
getStackTrace ()[Ljava/lang/StackTraceElement;
:;<
setStackTrace!([Ljava/lang/StackTraceElement;)V>?@addError.(Ljunit/framework/Test;Ljava/lang/Throwable;)VBCDendTest(Ljunit/framework/Test;)VFGD	startTest}(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner;Ljunit/framework/TestListener;Ljunit/framework/TestListener;)VCodeLineNumberTableLocalVariableTablethis@Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner$3;listenermessageLjava/lang/String;failure&Ljunit/framework/AssertionFailedError;testLjunit/framework/Test;tLjava/lang/Throwable;
StackMapTableYjava/lang/String
SourceFileJUnitTestRunner.javaEnclosingMethod^_wrapListenerb(Ljunit/framework/TestListener;)Lorg/apache/tools/ant/taskdefs/optional/junit/TestListenerWrapper;InnerClasses 	
HIN*+�*-�*,��J�K LMN
?@I~*���,��*�+,���^*���I,��B,�!N-��Y-�'�
�Y�*:,�-�1W,�5�9*�+��*�+,�=�J2��"�3�8�<�P�Z�c�o�r�}�K487OPPQR~LM~ST~UVW"�$XF�#
IN*�+,��J
��K LMSTUR@Ix$,��*�+,���*�+,�=�J���#�K $LM$ST$UVW
CDIC*�+�A�J
�
�KLMSTGDIC*�+�E�J
�
�KLMSTZ[\]`
PK��b�m�mBorg/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.class���4�	<org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunnerjunit4Z
	
registerTestCase(Ljava/lang/String;)V

<init>?(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;ZZZZ)V

@(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;ZZZZZ)V

j(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;[Ljava/lang/String;ZZZZZLjava/lang/ClassLoader;)V

V(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;ZZZZLjava/lang/ClassLoader;)V

W(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;ZZZZZLjava/lang/ClassLoader;)V

java/lang/Object()V!java/util/Vector
 	$%&
formattersLjava/util/Vector;	()
showOutput	+,outputToFormatters	./0perm(Lorg/apache/tools/ant/types/Permissions;	23haltOnError	56
haltOnFailure8Rorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitTestRunnerMirror	:;<retCodeI	>?forked	ABlogTestListenerEvents	DEFmethods[Ljava/lang/String;	HIJsavedOutLjava/io/PrintStream;	LMJsavedErr	OPfiltertrace	RST	junitTest8Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;
VWFXYclone()Ljava/lang/Object;	[\]loaderLjava/lang/ClassLoader;_java/io/PrintStreama>org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner$1
`c
dA(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner;)V
^f
g(Ljava/io/OutputStream;)Vi)org/apache/tools/ant/util/TeeOutputStream
hk
l/(Ljava/io/OutputStream;Ljava/io/OutputStream;)V	noJ	systemOut	qrJsystemError	tuvwJjava/lang/Systemout	tyzJerr
|}~createEmptyStream()Ljava/io/PrintStream;
t���setOut(Ljava/io/PrintStream;)V
t���setErr
���createTeePrintA(Ljava/io/PrintStream;Ljava/io/PrintStream;)Ljava/io/PrintStream;
����&org/apache/tools/ant/types/PermissionssetSecurityManager�>org/apache/tools/ant/taskdefs/optional/junit/IgnoredTestResult
�	���res@Lorg/apache/tools/ant/taskdefs/optional/junit/IgnoredTestResult;
���wrapListenerb(Ljunit/framework/TestListener;)Lorg/apache/tools/ant/taskdefs/optional/junit/TestListenerWrapper;
����addListener!(Ljunit/framework/TestListener;)V
 ���iterator()Ljava/util/Iterator;�����java/util/IteratorhasNext()Z���Ynext�Worg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirror�junit/framework/TestListener�java/io/ByteArrayOutputStream
�
���setupIOStreamsA(Ljava/io/ByteArrayOutputStream;Ljava/io/ByteArrayOutputStream;)V
�����6org/apache/tools/ant/taskdefs/optional/junit/JUnitTestgetName()Ljava/lang/String;
���getClass()Ljava/lang/Class;
�����java/lang/ClassgetClassLoader()Ljava/lang/ClassLoader;
����forName=(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;�suite
����	getMethod@(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;�java/lang/NoSuchMethodException
�����java/lang/reflect/Methodinvoke9(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;�junit/framework/Test�junit/framework/TestCase
����isAssignableFrom(Ljava/lang/Class;)Z�java.lang.annotation.Annotation
����%(Ljava/lang/String;)Ljava/lang/Class;�Iorg.apache.tools.ant.taskdefs.optional.junit.CustomJUnit4TestAdapterCache�!junit.framework.JUnit4TestAdapter�Dorg.apache.tools.ant.taskdefs.optional.junit.JUnit4TestMethodAdapter� java/lang/ClassNotFoundException
����isSkipNonTests
���
containsTests(Ljava/lang/Class;Z)Z
���restoreSecurityManager
^��close�java/lang/String
����toByteArray()[B
�
([B)Vjava/lang/OutOfMemoryErrorout of memory on output streamout of memory on error stream


sendOutAndErr'(Ljava/lang/String;Ljava/lang/String;)V&junit.framework.JUnit4TestAdapterCachegetInstance
�
asSubclass$(Ljava/lang/Class;)Ljava/lang/Class;
�getConstructor3([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
java/lang/reflect/ConstructornewInstance'([Ljava/lang/Object;)Ljava/lang/Object; junit/framework/TestSuite
"
#(Ljava/lang/Class;)V
%&'
createTest;(Ljava/lang/Class;Ljava/lang/String;)Ljunit/framework/Test;
��
*


,-.addTest(Ljunit/framework/Test;)V0java/lang/Throwable
t234currentTimeMillis()J
67fireStartTestSuite�9:;addError.(Ljunit/framework/Test;Ljava/lang/Throwable;)V
�=>?	setCounts(JJJJ)V
�ABC
setRunTime(J)VEjava/lang/StringBuilder
DHtests to run: 
DJKLappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;�NOPcountTestCases()I
DRKS(I)Ljava/lang/StringBuilder;
DUV�toString
XY
logTestListenerEvent�[\]run(Ljunit/framework/TestResult;)V��
�`abequals(Ljava/lang/Object;)Z
deffindJUnit4FailureErrorCount (Ljunit/framework/TestResult;)[I
�hiPrunCount
�kl4ignoredCount
�no4skippedCount
�qrPfailureCount
�tuP
errorCount
wxfireEndTestSuite
�zu4
�|r4~org.junit.Test�java/lang/annotation/Annotation�org.junit.Suite.SuiteClasses�org.junit.runner.RunWith
����getDeclaredClasses()[Ljava/lang/Class;
���PgetModifiers
�����java/lang/reflect/Modifier
isAbstract(I)Z
����isInterface
����
getAnnotation4(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
����
getMethods()[Ljava/lang/reflect/Method;
��
���test
����
startsWith(Ljava/lang/String;)Z
����getParameterTypes
��
����isProtected
����isPublic
����isStatic
�����?org/apache/tools/ant/taskdefs/optional/junit/JUnitVersionHelpergetTestCaseName*(Ljunit/framework/Test;)Ljava/lang/String;�
startTest(�)�endTest(
^��flush�java/util/StringTokenizer
����valueOf&(Ljava/lang/Object;)Ljava/lang/String;�

��
�((Ljava/lang/String;Ljava/lang/String;Z)V
����
hasMoreTokens�6org/apache/tools/ant/taskdefs/optional/junit/JUnitTask�junit.framework.TestListener: 
����	nextToken
^��
println�addFailure(�, 
/���
getMessage
���stop
��;
addFailure�	addError(
^��
print�Aorg/apache/tools/ant/taskdefs/optional/junit/JUnitResultFormatter���
setSystemOutput���
setSystemError����startTestSuite;(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;)V����endTestSuite
 ���
addElement(Ljava/lang/Object;)V�java/util/Properties
�'required argument TestClassName missing
texit(I)V6org/apache/tools/ant/taskdefs/optional/junit/Constants

testsfile=	

multipleTests
�Plength
�	substring(I)Ljava/lang/String;methods=
�parseTestMethodNamesList'(Ljava/lang/String;)[Ljava/lang/String;"java/lang/IllegalArgumentException,Invalid specification of test method names:  haltOnError=
"#$%�org/apache/tools/ant/Project	toBoolean'haltOnFailure=)filtertrace=+
crashfile=	-./	crashFileLjava/lang/String;1BeforeFirstTest3
formatter=
56
createAndStoreFormatter8#org/apache/tools/ant/BuildException
7�;
propsfile=
=>?@Ajava/nio/file/Pathsget;(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;Cjava/nio/file/OpenOption
EFGHIjava/nio/file/FilesnewInputStreamF(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/InputStream;
�KLMload(Ljava/io/InputStream;)V
O�Pjava/io/InputStreamRshowoutput=Tlogtestlistenerevents=Voutputtoformatters=Xlogfailedtests=Z
skipNonTests=\	threadid=
^_`abjava/lang/IntegerparseInt(Ljava/lang/String;)I
tdef
getProperties()Ljava/util/Properties;
�hijputAll(Ljava/util/Map;)Vljava/io/BufferedReadernjava/io/FileReader
m*
kq
r(Ljava/io/Reader;)V
ktu�readLinew,
�y

�{|}indexOf(I)I
��(II)Ljava/lang/String;
����replace(CC)Ljava/lang/String;
�*�java/io/File
�*
����setTodir(Ljava/io/File;)V
���

setOutfile
����
setProperties(Ljava/util/Hashtable;)V
����setSkipNonTests(Z)V
���	setThread
���launchT(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;[Ljava/lang/String;ZZZZZZ)I
��registerNonCrash�TEST � FAILED
k�
/���
addSuppressed(Ljava/lang/Throwable;)V�java/io/IOException
���printStackTrace�>org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner$2
�
���addFormatterF(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitResultFormatter;)V	��&fromCmdLine�=org/apache/tools/ant/taskdefs/optional/junit/FormatterElement
����
getUseFile
����getTodir
����
getOutfile
����getExtension
�y
����
����createFormatter[()Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirror;
�
���
setClassname
����
setUseFile�
IGNORETHIS
��|b
���
setExtension
�����%org/apache/tools/ant/util/StringUtils
getStackTrace)(Ljava/lang/Throwable;)Ljava/lang/String;
���filterStack&(Ljava/lang/String;)Ljava/lang/String;�java/io/StringWriter
��java/io/BufferedWriter
��
�(Ljava/io/Writer;)V�java/io/StringReader
�*
���
filterLine
���
write
���newLine
�����#org/apache/tools/ant/util/FileUtilsjava/lang/Exception
�U	FDEFAULT_TRACE_FILTERS
�contains(Ljava/lang/CharSequence;)Z

transferFormattersy(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner;Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;)V
\
P
getRetCodejava/io/FileWriter
*terminated successfully

�
�
�
>org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner$3

 }(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner;Ljunit/framework/TestListener;Ljunit/framework/TestListener;)V
"#$%&junit/framework/TestResultfailures()Ljava/util/Enumeration;()*+�java/util/EnumerationhasMoreElements(-.YnextElement
"01&errors3junit/framework/TestFailure
2567thrownException()Ljava/lang/Throwable;9$junit/framework/AssertionFailedError;java/lang/AssertionError=junit.framework.TestCase?junit.framework.TestResultAjunit.framework.TestSuiteCjunit.framework.Assert.Ejunit.swingui.TestRunnerGjunit.awtui.TestRunnerIjunit.textui.TestRunnerK java.lang.reflect.Method.invoke(Msun.reflect.Oorg/apache/tools/ant/MagicNamesQorg.apache.tools.ant.S
org.junit.U moreJUNIT_4_TEST_ADAPTER
ConstantValue	SignaturemLjava/util/Vector<Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirror;>;SLjava/util/Vector<Lorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement;>;>(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;ZZZ)VCodeLineNumberTableLocalVariableTablethis>Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner;S(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;[Ljava/lang/String;ZZZZZ)VU(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;ZZZLjava/lang/ClassLoader;)V
StackMapTableejava/lang/ClassLoaderps1ps2oLjava/io/ByteArrayOutputStream;efYLorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirror;	testClassLjava/lang/Class;exLjava/lang/OutOfMemoryError;formalParams[Ljava/lang/Class;actualParams[Ljava/lang/Object;method	testSuiteLjunit/framework/TestSuite;junit4TestAdapterClassjunit4TestAdapterCacheClassuseSingleMethodAdaptertestMethodsSpecifiedsuiteMethodLjava/lang/reflect/Method;Ljava/lang/Throwable;cnts[IstartJerrStrmoutStrmLjunit/framework/Test;	exceptionstartTestSuiteSuccessLocalVariableTypeTableLjava/lang/Class<*>;[Ljava/lang/Class<*>;rt"Ljava/lang/ClassNotFoundException;
innerClassmisJUnit4testAnnotationsuiteAnnotationrunWithAnnotation5Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;�java/lang/reflect/Method;(Ljava/lang/Class<*>;Z)Z	startTestttestNameendTestmessageLinesLjava/util/StringTokenizer;message?(Ljunit/framework/Test;Ljunit/framework/AssertionFailedError;)V&Ljunit/framework/AssertionFailedError;setPermissions+(Lorg/apache/tools/ant/types/Permissions;)VpermissionshandleOutputoutputhandleInput([BII)Ibuffer[Boffset
ExceptionshandleErrorOutputhandleFlushhandleErrorFlush	formatterCLorg/apache/tools/ant/taskdefs/optional/junit/JUnitResultFormatter;\(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirror;)Vmain([Ljava/lang/String;)VmethodsList$Ljava/lang/IllegalArgumentException;be%Lorg/apache/tools/ant/BuildException;inLjava/io/InputStream;argtestCaseNametestMethodNamessttestListSpec
colonIndexcode
errorOccurredfailureOccurredlinereaderLjava/io/BufferedReader;Ljava/io/IOException;args	haltErrorhaltFailstackfilterpropsLjava/util/Properties;showOutoutputToFormatlogFailedTestsskipNonTestsantThreadID
returnCodedestFileLjava/io/File;fe?Lorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement;runnerfNameposgetFilteredTracetrace	firstLineLjava/lang/Exception;stackswLjava/io/StringWriter;pwLjava/io/BufferedWriter;srLjava/io/StringReader;brfilterLjava/io/FileWriter;testCasetestListenerLjunit/framework/TestListener;Ljava/util/Enumeration;resultLjunit/framework/TestResult;6Ljava/util/Enumeration<Ljunit/framework/TestFailure;>;
access$000x0
access$100A(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner;)Z<clinit>
SourceFileJUnitTestRunner.javaInnerClasses�<org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorJUnitTestRunnerMirrorJUnitResultFormatterMirror!�7V/W�F
P


./%&XY��),/036;<STrJoJ?\]BEFIJMJ
�&XZ-
[\a*+��]
�
�^4_`�T3P6
\m
*+��]
��^>
_`
�T
3
P
6
)
\z	*+��]
��^H_`�T3P6)B
a\�	*+,��]
��^R_`�TEF3P6)B
b\m
*+��]
��^>
_`
�T
3
P
6
\]
\y*+��]
	^H_`�T3P6)\]
\�	*+��]
^R_`�T3P6)B\]
\�	�*�*� Y�"�#*�'*�**�-*�1*�4*�9*�=*�@*�C*�G*�K�N*+�Q*�1*�4*�'*�@*,�
,�U�V��C*�Z�]Z/pz|��#�(�-�2�7�<:A;F0K1P2U3[4a5g6z7�8^\	�_`��T�EF�3�P�6�)�B�\]c;�v	�Vd�	�VdV}~\:�^Y�`Y*�b�e�]>^_`��\O�^Y�hY+,�j�e�]G^ _`fJgJ��\@�*�^Y+�e�m*�^Y,�e�p*�=�|*�*�)*�'�|*�s�G*�x�K*�{�*�{���]*�s�G*�x�K*�'�*�m�*�p���!**�G*�m���**�K*�p����*�-�*�-�
*�-���]RLMOP&Q-R4S;TBULXSYZZa[h\r^�_�a�d�e�h^ �_`�hi�jic	�L%
\\��*��Y����*��**����*�#��L+���+����M*��*,��������޻�Y��L��Y��M*,+��N:6*�Z�*�Q��*������:�*�Q��*�Z��:*�C��6:������:�:	�����N��:	:
6��ܙ�U��W��:
*�Z���:	�0��:	6�#�*�Z��:	��*�Z��:	6�:*	���*�Q���*����*�-�
*�-��*�G�
*�G�*�K�
*�K��*�p��*�p*�m��*�m�9��Y,���:�
::��Y+���:
�
::
*
�	�*��{�(��Y�SYVS:�YSY*�CS:
�9��Y�SY
��S:�YSY
�������S:
	ض�
���N�l��Y�!N�Z*�C��*�C2�$N�B�Y�(�):*�C:

�66�
2:�$�+����N�:*�9:�17*�56�H*�#��:�������:		���8���*�Q
	
	�<*�Q	�@�b*�DY�FG�I-�M�Q�T�W-*���Z*��-�^�(�_�@**���c:*�Q*���g�*���ja.�.�*���j*���ma�<�9*�Q*���g�*���ja*���p�*���s�*���j*���ma�<*�Q�1e�@��:*��-�^�(�_�@**���c:*�Q*���g�*���ja.�.�*���j*���ma�<�9*�Q*���g�*���ja*���p�*���s�*���j*���ma�<*�Q�1e�@�*�-�
*�-��*�G�
*�G�*�K�
*�K��*�p��*�p*�m��*�m����Y,���:�
::��Y+���:�
::*�	��:*�-�
*�-��*�G�
*�G�*�K�
*�K��*�p��*�p*�m��*�m�9��Y,���:�
::��Y+���:�
::*�	�*�v*�9�*�Q�y	��*�9�*�Q�{	��*�9������25�������b[�/���/%L����������b[��MZ]dqt]��opq2rAsDuLvTxZz\{_|b�i�r�x�����������������������������������������#�/�2�5�7�E�U�[%b&i(p)w+~,�/�0�1�2�3�6�9�7�8�;�>�<�=�?����������
��2�@�I�U�X�]�j�s���������������
��
���%BLdn�������!�"�-8;>^qt!�"�%�&�(�)�+�,�/�0�1�2�3�6�9�7�8�;�>�<�=�?@%
&()"+),0/70<1C2H3M6Z9]7_8d;q>t<v={?�A�B�E�F�G�H�J^�+2kl}mn�w/�op�z/
�op�w/�z/
�qrst
7qr@st
�u/�1vw��xn	��yn
��z�0mn�"{�|}�	j~�
kl	n0�0������w/�op�z/�op�w/�z/Zw/_opqz/vopdw/{z/�_`Lk�iTc�i\[��_X�~bU��>}m��q�7q���x�	��y�
�0m�c�B���$�;���/��
@�	���/������,B�I����/����&

l��O���0�5�������/����V�����/B/
���%><5O/����//<5����/


l��O���
���//����//

l��O�������/
��\r	dMN:}���M�:������N�:����:�:��*�ܚ�*��:�66�,2:�����������*�����
*�������!-�
*-�����*����*��:�66��2:�,���4�������$�������������������_�/����&�������������������x��,/�1?B�]�/MNOR
SZTUW](^,a/_1c:d?gBeDiQkSoop�q�o�u�v�x�{�|�~���������������
��!�#�;�F�Q�Z�\�b�^Rj�o�n�w�}dmnd�b�n`�n]�n�4o��dm�b��`��]��c�������O�P��
�� 	��������	����������
���,+��X�P\/*�9�]�^_`�.\j$+��M*�DY�F��I,�I��I�T�W�]��#�^ $_`$���/�.\j$+��M*�DY�F��I,�I��I�T�W�]��#�^ $_`$���/Y
\�W*�@�R*�G�
*�G��sM,����Y+�����N-�̙!,�DY�FѶI-�ӶI�T�֧��,���]&	����"�-�4�R�V�^*=wJ-)��W_`W�/cB^�^�$��;\�?+��N*�DY�FٶI-�I۶I,�ݶI��I�T�W*�4�
*����]��0�7�>�^*?_`?��?�~:�/c�>���\I*+,��]
��^ _`����:;\�?+��N*�DY�F�I-�I۶I,�ݶI��I�T�W*�1�
*����]�07>^*?_`?��?�~:�/c�>���\>*+�-�]

^_`�0�
\n$*�@�+Ѷ���*�m�*�m+��]#^$_`$�/c��\J�]+^*_`���<<���
\U*�p�*�p+��]124^_`�/c�
\U*�m�*�m+��]9:<^_`�/c�
\U*�p�*�p+��]ABD^_`�/c\�7*�#��N-���(-����:��:+��,����ձ]GH#I+J3K6L^4#��kl7_`7w/7z/c���-7\},*�#��L+���+����M,��*�Q�����]OP(Q+R^
kl,_`c���"x\},*�#��L+���+����M,��*�Q�����]UV(W+X^
kl,_`c���"��\A	*�#+���]
_`^	_`	k���\A	*�#+���]
ef^	_`	kl	��\��L=>6��Y�:6666	6
6*���x���*2	����**2	��S*:�6
6
��2:���=��:�L��:�x�DY�F�I�I�T�����������!=�v&���&���!>�Y(���(���!6�;*���*���,0��2���(2���4��:�x�9�����:���-:�����<�B�D:�J�N��Q���Q���!6��S���S���!6	�xU���U���!6�ZW���W���!6�<Y���Y���!6
�[���[���]6����c�g6��j�kY�mY*2�o�p:
666:
�sY:���Yv�x:��::�z6�
::�"�~:`�+,���:��Y��:��Y�ӷ����Ӷ���
����	��6��6��6��T��������7�6�'�s�DY�F��I���I��I�T�֧��
���:
���:����@:

���6��Y*2��:

��
��

��
+	��6����y��8FI7m��/���/Z���]�y����	������!�$�)�2�6�B�F�U�n�y���������������������������$�-�8�F�I�K�V�Z�]�h�m�w��������������������������������
��� �(�3�C�I�Q�T�Z�m�p�s�v�y������������������������������������,�8�B�T�W�_fjo�	�
����
����������^L!��/�o�K�����n��/��/��F������/���<���/���F���Tp&�<s#�v �y�/mG��
�j�
�'�T
��F�EF����	������������B	!��
$��<T��<c(�6VV��
V�.VV�V�#![74���/VV�k��8����V�W�@
@

�(VV�k��VV�kG/�	VV�k//�B�	2��
\�l*��Y��������M,���S,����N��5-���.��Y+���DY�F+�¶I-�ŶI�T��:-��*-��������]&	E%F2GBHWI]KhLkM^*W��%C��l�`l�Tc���J��

6
\p��Y��L*,�z=�+*��+�ӧJ+*�~��+�Ӳ�+��Y*`����ɧ *ֶ�>�+*ֶ`��ڲ�+���]BVWXYZ!\+]0^6_KaSbXc^dbchhoi^*S�<p�/h��a�<c�!�)�7	��\B
*��L+��]
rs^
�~�/	��\�	x�N�*���Y��L��Y+��M��Y*��N�kY-�p:6�sY:� ���
,��,��6���,���:*:,���:,���+��,W^�,Wj^cjjlj]V|}��"�,�/�:�G�M�Q�W�[�^�`�c�g�j�p�s�^\	/(�7'�/`
j�x�/h��_��"V��,L��s�/c\�&����k�����k�	������k�K/��
��\~&�L+�=>�+2:*��������]����$�^�/&�/c�	V�
��\�
	2�Y*+�:�=�**�	�
��]���!�'�,�^\	2�T2EF2�2�2�2�2�2B�`
�\�4�,�0�Y�,�K*�*�*��L*��	M+,��+��#/$(+/]�����#�3�^"w�c#�#/�//���
	
\�I�,�E�Y�,�L+�DY�F*�I�I�T�+�+��M+��	N,-��,��L�-4/59</DG�]&	���)�-�4�D�G�H�^3w�I�/c.�4�/��//�B���\?�Y*++��]�^_`��ef\Gi=>+�!:�'��,W����+�/:�'�.�,�2�4:�8��:�	�������
YOYO�]>
	
"(24AQWZ]^H
j�A�~i_`i��g%<e1<(Aj��
j�(Aj�c�
(��(�(/��
\/*��]M^�/��\/*��]M^�`�\�s
��Y<SY>SY@SYBSYDSYFSYHSYJSYLSY	PSY
RSY�SYTS��N��,� Y�"���]P\b`edkh���*7��	`���	�PK��#Eorg/apache/tools/ant/taskdefs/optional/junit/JUnitVersionHelper.class���4�
java/lang/Object<init>()V?org/apache/tools/ant/taskdefs/optional/junit/JUnitVersionHelper
unknown
junit/framework/TestgetClass()Ljava/lang/Class;
java/lang/ClassgetName()Ljava/lang/String;$junit.framework.JUnit4TestCaseFacade
java/lang/Stringequals(Ljava/lang/Object;)Z !toString#)
%&'endsWith(Ljava/lang/String;)Z
)*+lastIndexOf(I)I
-./	substring(II)Ljava/lang/String;1junit/framework/TestCase	345testCaseNameLjava/lang/reflect/Method;
789:;java/lang/reflect/Methodinvoke9(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;=java/lang/Throwable

ABC	getMethod@(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;Ejava/lang/NoSuchMethodException
Hname
7JK
getReturnType
NPorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorImpl$VmExitErrorTest
MPQgetClassName 
TUVlength()I
XYZforName%(Ljava/lang/String;)Ljava/lang/Class;
]^_isAssignableFrom(Ljava/lang/Class;)Z
abcgetTestCaseClassName*(Ljunit/framework/Test;)Ljava/lang/String;
efcgetTestCaseNamehorg.junit.Ignorejjava/lang/annotation/Annotation
lmn
asSubclass$(Ljava/lang/Class;)Ljava/lang/Class;
7pqr
getAnnotation4(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;ituannotationTypewvalue
yz{isEmpty()Z} java/lang/ClassNotFoundException+java/lang/reflect/InvocationTargetException� java/lang/IllegalAccessException'JUNIT_FRAMEWORK_JUNIT4_TEST_CASE_FACADELjava/lang/String;
ConstantValueUNKNOWN_TEST_CASE_NAMECodeLineNumberTableLocalVariableTablethisALorg/apache/tools/ant/taskdefs/optional/junit/JUnitVersionHelper;parenI
getNameMethode!Ljava/lang/NoSuchMethodException;tLjunit/framework/Test;
StackMapTabletest	classNamegetIgnoreMessagevalueMethod	testClassLjava/lang/Class;
testMethodignoreAnnotation
annotation!Ljava/lang/annotation/Annotation;junit4FacadeClassmessageLocalVariableTypeTableLjava/lang/Class<*>;5Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;�&java/lang/ReflectiveOperationException<clinit>
SourceFileJUnitVersionHelper.javaInnerClasses�@org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorImplVmExitErrorTest!
45������	�/*���"���	fc���*�	�*����#*�L+"�$�+(�(=+�,�+�*�0��2��2*��6��L�E*�>?��@L�M*�FG��@L+�+�I�+*��6���L	�EST<XhkDX��<�^LMOQR(S/T6V8XEZT[U]XbYchfkdle|g�h�i�m�k�o�>/��H�h�5l��|�5����#
�.�[<RD�7�B<	bc��Q*�L�L*�M�*�M�OL�6+��-*�RM,(�(>�,"�$�,`,�Sd�,L+��&	{
|}~%�,�3�A�O��*,#H�3��Q��
G���	�2	�c��	�L�WM*�r*�[,�\�e*�`�WN-*�d��@:g�Wi�k:�o:�5�sv��@:��6�:��x�L�M+�{~D{~|{~~{~��B����!�/�1�;�D�I�[�k�x�{�~���\	[ �5kw�!Z��/L�5;@��D7��s�������� !Z��;@��s���
�{B����)�20?��@�2�K0G��@�2�L�D$'D�"$1925$8'6(:����UD�DD����
M��PK`�`�Torg/apache/tools/ant/taskdefs/optional/junit/OutErrSummaryJUnitResultFormatter.class���4
Horg/apache/tools/ant/taskdefs/optional/junit/SummaryJUnitResultFormatter<init>()V
	
Norg/apache/tools/ant/taskdefs/optional/junit/OutErrSummaryJUnitResultFormattersetWithOutAndErr(Z)VCodeLineNumberTableLocalVariableTablethisPLorg/apache/tools/ant/taskdefs/optional/junit/OutErrSummaryJUnitResultFormatter;
SourceFile&OutErrSummaryJUnitResultFormatter.java!
<
*�*��!"	#
PKv�[+bbLorg/apache/tools/ant/taskdefs/optional/junit/PlainJUnitResultFormatter.class���49
java/lang/Object<init>()V
	
java/text/NumberFormatgetInstance()Ljava/text/NumberFormat;	Forg/apache/tools/ant/taskdefs/optional/junit/PlainJUnitResultFormatternfLjava/text/NumberFormat;java/util/Hashtable
	
testStartsLjava/util/Map;	failed	 systemOutputLjava/lang/String;	"# systemError%java/io/StringWriter
$	()*innerLjava/io/StringWriter;,java/io/BufferedWriter
+./(Ljava/io/Writer;)V	123wriLjava/io/BufferedWriter;	567outLjava/io/OutputStream;9Testsuite: %s%n
;<=>?6org/apache/tools/ant/taskdefs/optional/junit/JUnitTestgetName()Ljava/lang/String;
ABCDEjava/lang/Stringformat9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
AGHIgetBytes()[B
KLMNOjava/io/OutputStreamwrite([B)V
KQRflushTjava/io/IOExceptionV#org/apache/tools/ant/BuildExceptionXUnable to write output
UZ[*(Ljava/lang/String;Ljava/lang/Throwable;)V]LTests run: %d, Failures: %d, Errors: %d, Skipped: %d, Time elapsed: %s sec%n
;_`arunCount()J
cdefgjava/lang/LongvalueOf(J)Ljava/lang/Long;
;ijafailureCount
;lma
errorCount
;opa	skipCount
;rsa
getRunTime@�@
wDx(D)Ljava/lang/String;
zN{(Ljava/lang/String;)V
A}~isEmpty()Z�/------------- Standard Output ---------------%n�0------------- ---------------- ---------------%n�0------------- Standard Error -----------------%n
����?java/lang/System
lineSeparator
+Q
$��?toString
+��close	��6�Ljava/io/PrintStream;	����err
�����#org/apache/tools/ant/util/FileUtils(Ljava/io/OutputStream;)V�Unable to flush output
���acurrentTimeMillis�����
java/util/Mapput8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;	�����java/lang/BooleanFALSELjava/lang/Boolean;	����TRUE����get&(Ljava/lang/Object;)Ljava/lang/Object;
����equals(Ljava/lang/Object;)Z�java/lang/StringBuilder
��
Testcase: 
����append-(Ljava/lang/String;)Ljava/lang/StringBuilder;
�����?org/apache/tools/ant/taskdefs/optional/junit/JUnitVersionHelpergetTestCaseName*(Ljunit/framework/Test;)Ljava/lang/String;
��
+z
c��a	longValue� took � sec
+��newLine
U��(Ljava/lang/Throwable;)V�	FAILED
���formatError@(Ljava/lang/String;Ljunit/framework/Test;Ljava/lang/Throwable;)V
���
addFailure.(Ljunit/framework/Test;Ljava/lang/Throwable;)V�	Caused an ERROR
���endTest(Ljunit/framework/Test;)V
����?java/lang/Throwable
getMessage
A�f�&(Ljava/lang/Object;)Ljava/lang/String;
�����<org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunnergetFilteredTrace)(Ljava/lang/Throwable;)Ljava/lang/String;
����getIgnoreMessage
���
formatSkip+(Ljunit/framework/Test;Ljava/lang/String;)V�	SKIPPED�: Unable to write output 
��-(Ljava/lang/Object;)Ljava/lang/StringBuilder;Aorg/apache/tools/ant/taskdefs/optional/junit/JUnitResultFormatter@org/apache/tools/ant/taskdefs/optional/junit/IgnoredTestListener
ONE_SECONDD
ConstantValue	Signature7Ljava/util/Map<Ljunit/framework/Test;Ljava/lang/Long;>;:Ljava/util/Map<Ljunit/framework/Test;Ljava/lang/Boolean;>;CodeLineNumberTableLocalVariableTablethisHLorg/apache/tools/ant/taskdefs/optional/junit/PlainJUnitResultFormatter;	setOutputsetSystemOutputsetSystemErrorstartTestSuite;(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;)VexLjava/io/IOException;suite8Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;
StackMapTable
ExceptionsendTestSuiteioexsuccessZ	startTesttLjunit/framework/Test;lLjava/lang/Long;secondstest+junit/framework/TestLjava/lang/Throwable;?(Ljunit/framework/Test;Ljunit/framework/AssertionFailedError;)V&Ljunit/framework/AssertionFailedError;addErrorstracetypetestIgnoredmessagetestAssumptionFailure	throwabletext
SourceFilePlainJUnitResultFormatter.java!		
t
67)*23 # �F*�*��
*�Y��*�Y��*�*�!*�$Y�&�'*�+Y*�'�-�0�&	H.2B!D&E+I6JEKF�>*+�4�
PQ67{>*+��
VW6 {>*+�!�
\]� �9*�4��*�48�Y+�:S�@�F�J*�4�P�M�UYW,�Y��),S"fgj"k)n,l-m8o -99cSU
=*\�Y+�^�bSY+�h�bSY+�k�bSY+�n�bSY*�
+�q�to�vS�@�y*��/*��|�%*���@�y**��y*���@�y*�!�/*�!�|�%*���@�y**�!�y*���@�y*���y*�4�$*�0��**�'���y�N�UYW-�Y�=*�4�6*�0��*�4���*�4���
*�4��*�0*�4�eN��UY�-�Y�*�4���*�4���
*�4��*�0*�4�-:*�4���*�4���
*�4��*�0*�4���:*�4��*�0��*�4���*�4���
*�4��*�0*�4�g:��UY��Y�*�4���*�4���
*�4��*�0*�4�-:*�4���*�4���
*�4��*�0*�4������S��S��O'OOQO�|���S���������|~|�?xz{8|DzJ[�h�p�}������������������������������
������'�;�B�G�L�O�e�l�q�v�|�������������������������������������>�  � !"D�}2bS*LSL��B�*�LSL���U#�\ *�+���b��W*�+����W����  $%��|���*�+������*�0YM�*�0��Y�����+�¶��ȶ�*�+���cN9-���-��e�to9*�0��Y��Ͷ�*�
�v��϶��ȶ�*�0�ѧ
N�UY-�Կ,ç
:,�����S�����F����,�5�8�F�I�M�\�������������4FD&'IA(
�	��)%(�Gc�0*S	D���K	*�+,�ٱ
�� 		)%	$,�-I*+,�ݱ
�� )%$./�K	*�+,�ٱ
�� 		)%	$,��Aw*�0Y:�,�*,��*�,����W*�0+��*�0��*�0-����*�0��-��:*�0��*�0�ѧ:�UY�Կç:���Y\SknnsnB�����'�.<CIRY\^hv	>I0 ^
ww1 w)%w$,�|SE�2�B
*++�����

	

)%���<+�*+��*�0���,�*�0���*�0,��*�0�ѧ
N�UY-�Կ�	.1S.	'.12;!*2	<<)%<3 		IS	4�L
*+,����
%	& 

)%
5,N{�<*�4��*�4+�F�J*�4�P�!M�UY��Y����,���,�Y��S"/034756;8 <<6 TS78PK��&�88Norg/apache/tools/ant/taskdefs/optional/junit/SummaryJUnitResultFormatter.class���4�
java/lang/Object<init>()V
	
java/text/NumberFormatgetInstance()Ljava/text/NumberFormat;	Horg/apache/tools/ant/taskdefs/optional/junit/SummaryJUnitResultFormatternfLjava/text/NumberFormat;	
withOutAndErrZ	systemOutputLjava/lang/String;	systemError	 !outLjava/io/OutputStream;
#$%&'java/io/OutputStreamwrite([B)V
#)*flush,java/io/IOException.#org/apache/tools/ant/BuildException0Unable to write summary output
-23*(Ljava/lang/String;Ljava/lang/Throwable;)V5java/lang/StringBuilder7Running 
49:(Ljava/lang/String;)V
<=>?@6org/apache/tools/ant/taskdefs/optional/junit/JUnitTest	getThread()I
<BCDgetName()Ljava/lang/String;
4FGHappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;J in thread 
4LGM(I)Ljava/lang/StringBuilder;
OPQRDjava/lang/System
lineSeparator
4TUDtoString
WXYZ[java/lang/StringgetBytes()[B
]^'writeOutputLine
`ab
addFailure.(Ljunit/framework/Test;Ljava/lang/Throwable;)VdTests run: 
<fghrunCount()J
4jGk(J)Ljava/lang/StringBuilder;m, Failures: 
<ophfailureCountr
, Errors: 
<tuh
errorCountw, Skipped: 
<yzh	skipCount|, Time elapsed: 
<~h
getRunTime@�@
���format(D)Ljava/lang/String;� sec�
, Thread: �	, Class: 
W���isEmpty()Z�
Output:%n%s%n
W���9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;�
Error: %n%s%n	O� �Ljava/io/PrintStream;	O���err
�����#org/apache/tools/ant/util/FileUtilsclose(Ljava/io/OutputStream;)V�Aorg/apache/tools/ant/taskdefs/optional/junit/JUnitResultFormatter�^org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$SummaryJUnitResultFormatterMirror
ONE_SECONDD
ConstantValueCodeLineNumberTableLocalVariableTablethisJLorg/apache/tools/ant/taskdefs/optional/junit/SummaryJUnitResultFormatter;ioexLjava/io/IOException;b[B
StackMapTablestartTestSuite;(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;)Vsuite8Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;sbLjava/lang/StringBuilder;antThreadIDI	startTest(Ljunit/framework/Test;)VtLjunit/framework/Test;endTesttestLjava/lang/Throwable;?(Ljunit/framework/Test;Ljunit/framework/AssertionFailedError;)V&Ljunit/framework/AssertionFailedError;addError	setOutputsetSystemOutputsetSystemErrorsetWithOutAndErr(Z)VvalueendTestSuite�java/lang/Throwable
Exceptions
SourceFile SummaryJUnitResultFormatter.javaInnerClasses�<org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror!SummaryJUnitResultFormatterMirror!������ !
�U*�*��
*�*�*���$,234���"^'��*�+�"*��(�M�-Y/,�1��+�CDGEFH� �������R+����=�4Y6�8M+�;>,+�A�EW�,I�EW,�KW,�N�EW*,�S�V�\��&	P
QSUV#W)Y1Z<[�*=��=��
3��.���	�)4���5��b��������5��i�����ab�?��p� ������a��I*+,�_��
z{� �������b�?���� ���������>*+���
����� !�:�>*+���
����� �:�>*+���
���������>*���
���������0�4Yc�8M,+�e�iW,l�EW,+�n�iW,q�EW,+�s�iW,v�EW,+�x�iW,{�EW,*�
+�}��o���EW,��EW+�;�#,��EW,+�;�KW,��EW,+�A�EW,�N�EW*��O*��"*����,��Y*�S���EW*��"*����,��Y*�S���EW*,�S�V�\*����5*����+*����!N*����*����
*���-�����v�
���#�*�3�:�C�J�_�f�m�t�}���������������������&�-�/�� 0��0��
&�����44%h���-���
���	PK1�kw]]Dorg/apache/tools/ant/taskdefs/optional/junit/TearDownOnVmCrash.class���4�
java/lang/Object<init>()V
	
6org/apache/tools/ant/taskdefs/optional/junit/JUnitTestgetName()Ljava/lang/String;	>org/apache/tools/ant/taskdefs/optional/junit/TearDownOnVmCrash	suiteNameLjava/lang/String;6org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskBatch-With-Multiple-Tests
java/lang/StringendsWith(Ljava/lang/String;)ZPorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorImpl$VmExitErrorTest
 !tearDown
#$%&'java/lang/Thread
currentThread()Ljava/lang/Thread;
#)*+getContextClassLoader()Ljava/lang/ClassLoader;
-./01java/lang/ClassLoader	loadClass%(Ljava/lang/String;)Ljava/lang/Class;3 java/lang/ClassNotFoundException
567getClass()Ljava/lang/Class;
9:;<+java/lang/ClassgetClassLoader
9>?1forNameAsuite
9CDE	getMethod@(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;Gjava/lang/NoSuchMethodException!
JKLM7java/lang/reflect/Method
getReturnType	OPQRSjava/lang/VoidTYPELjava/lang/Class;
9UVWgetDeclaredConstructor3([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
YZ[\]java/lang/reflect/ConstructornewInstance'([Ljava/lang/Object;)Ljava/lang/Object;
J_`ainvoke9(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;cjava/lang/Throwable	efghijava/lang/SystemerrLjava/io/PrintStream;kjava/lang/StringBuilder
jn5Caught an exception while trying to invoke tearDown: 
jpqrappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;
btu
getMessage
jwxtoString
z{|}~java/io/PrintStreamprintln(Ljava/lang/String;)V�Aorg/apache/tools/ant/taskdefs/optional/junit/JUnitResultFormatterCodeLineNumberTableLocalVariableTablethis@Lorg/apache/tools/ant/taskdefs/optional/junit/TearDownOnVmCrash;startTestSuite;(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;)V8Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;
StackMapTableaddError.(Ljunit/framework/Test;Ljava/lang/Throwable;)VfakeTestLjunit/framework/Test;tLjava/lang/Throwable;
addFailuretest?(Ljunit/framework/Test;Ljunit/framework/AssertionFailedError;)V&Ljunit/framework/AssertionFailedError;	startTest(Ljunit/framework/Test;)VendTestendTestSuite	setOutput(Ljava/io/OutputStream;)VoutLjava/io/OutputStream;setSystemOutputsetSystemErrortdLjava/lang/reflect/Method;	testClassLocalVariableTypeTableLjava/lang/Class<*>;
SourceFileTearDownOnVmCrash.javaInnerClasses�@org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorImplVmExitErrorTest!�/*���%������j!*+��
*�
�*�
��*�
��/02 4�!��!A�� ���b*�
�+��*���=>@� ����������?��D� ���������?��H� ���������5��L��������5��P��������5��T���A����5��X������~�5��\�����~�5��`���h!���L�"�(��"�(*�
�,L�M+� *�4�8�*�4�8*�
�,L�M+�*�
�=L+@�9�BW�M+H�9�BM,�I�N�,+�9�T��X��^W�M�$L� L�d�jY�lm�o+�s�o�v�y�2+:=2JUVFW��FU�2V��2U�bV��b�rfgijmko+q:t=r>vBxJU�V�W�b�l����������������������*b"����S�����������.�92_2KF-BF�B2Cb���
��PK|�m0##>org/apache/tools/ant/taskdefs/optional/junit/TestIgnored.class���4
java/lang/Object<init>()V		
8org/apache/tools/ant/taskdefs/optional/junit/TestIgnoredtestLjunit/framework/Test;(Ljunit/framework/Test;)VCodeLineNumberTableLocalVariableTablethis:Lorg/apache/tools/ant/taskdefs/optional/junit/TestIgnored;getTest()Ljunit/framework/Test;
SourceFileTestIgnored.java!
F
*�*+��	

/*�� PK��QQForg/apache/tools/ant/taskdefs/optional/junit/TestListenerWrapper.class���46
java/lang/Object<init>()V		
@org/apache/tools/ant/taskdefs/optional/junit/TestListenerWrapperwrappedLjunit/framework/TestListener;junit/framework/TestListeneraddError.(Ljunit/framework/Test;Ljava/lang/Throwable;)V
addFailure?(Ljunit/framework/Test;Ljunit/framework/AssertionFailedError;)VendTest(Ljunit/framework/Test;)V	startTest@org/apache/tools/ant/taskdefs/optional/junit/IgnoredTestListener!"testIgnored$%testAssumptionFailure!(Ljunit/framework/TestListener;)VCodeLineNumberTableLocalVariableTablethisBLorg/apache/tools/ant/taskdefs/optional/junit/TestListenerWrapper;listenertestLjunit/framework/Test;	throwableLjava/lang/Throwable;assertionFailedError&Ljunit/framework/AssertionFailedError;
StackMapTable
SourceFileTestListenerWrapper.java!&'F
*�*+��( 	!)
*+
,'N*�+,�
�(
%&) *+-./0'N*�+,��(
*+) *+-.12'C*�+��(
/
0)*+-.'C*�+��(
4
5)*+-."']*���*��+� �(9
:<)*+-.3%'h*���*��+,�#�(@
AD) *+-./0345PK�F-�zz?org/apache/tools/ant/taskdefs/optional/junit/XMLConstants.class���4N9org/apache/tools/ant/taskdefs/optional/junit/XMLConstantsjava/lang/Object
TESTSUITESLjava/lang/String;
ConstantValue	
testsuites	TESTSUITE	testsuiteTESTCASEtestcaseERRORerrorFAILUREfailure
SYSTEM_ERR
system-err
SYSTEM_OUT
system-outATTR_PACKAGEpackage	ATTR_NAME!name	ATTR_TIME$timeATTR_ERRORS'errors
ATTR_FAILURES*failures
ATTR_TESTS-testsATTR_SKIPPED0skipped	ATTR_TYPE3typeATTR_MESSAGE6message
PROPERTIES9
propertiesPROPERTY<property
ATTR_VALUE?valueATTR_CLASSNAMEB	classnameATTR_IDEid	TIMESTAMPH	timestampHOSTNAMEKhostname
SourceFileXMLConstants.java

 "#%&()+,./124578:;=>@ACDFGIJLMPK��ǥ&�&Jorg/apache/tools/ant/taskdefs/optional/junit/XMLJUnitResultFormatter.class���4�
java/lang/Object<init>()Vjava/util/Hashtable
	
Dorg/apache/tools/ant/taskdefs/optional/junit/XMLJUnitResultFormattertestElementsLjava/util/Hashtable;	failedTestsLjava/util/Map;	skippedTests	ignoredTests	
testStarts
 !"(javax/xml/parsers/DocumentBuilderFactorynewInstance,()Ljavax/xml/parsers/DocumentBuilderFactory;
$%&newDocumentBuilder%()Ljavax/xml/parsers/DocumentBuilder;(java/lang/Exception*%java/lang/ExceptionInInitializerError
),-(Ljava/lang/Throwable;)V	/01outLjava/io/OutputStream;39org/apache/tools/ant/taskdefs/optional/junit/XMLConstants5
system-out
789formatOutput'(Ljava/lang/String;Ljava/lang/String;)V;
system-err
=>&getDocumentBuilder
@ABCD!javax/xml/parsers/DocumentBuildernewDocument()Lorg/w3c/dom/Document;	FGHdocLorg/w3c/dom/Document;J	testsuiteLMNOPorg/w3c/dom/Document
createElement)(Ljava/lang/String;)Lorg/w3c/dom/Element;	RSTrootElementLorg/w3c/dom/Element;
VWXYZ6org/apache/tools/ant/taskdefs/optional/junit/JUnitTestgetName()Ljava/lang/String;\name^unknown`abc9org/w3c/dom/ElementsetAttributeejava/util/Date
dh#org/apache/tools/ant/util/DateUtilsjyyyy-MM-dd'T'HH:mm:ss
glmnformat6(Ljava/util/Date;Ljava/lang/String;)Ljava/lang/String;p	timestamprhostname
tuZgetHostnamew
properties`yz{appendChild&(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;
V}~
getProperties()Ljava/util/Properties;
�����java/util/PropertiesstringPropertyNames()Ljava/util/Set;�����
java/util/Setiterator()Ljava/util/Iterator;�����java/util/IteratorhasNext()Z����next()Ljava/lang/Object;�java/lang/String�property�value
����getProperty&(Ljava/lang/String;)Ljava/lang/String;�	localhost
�����java/net/InetAddressgetLocalHost()Ljava/net/InetAddress;
���ZgetHostName�java/net/UnknownHostException�tests
V���runCount()J
�����java/lang/LongtoString(J)Ljava/lang/String;�failures
V���failureCount�errors
V���
errorCount�skipped
V���	skipCount�time
V���
getRunTime@�@
�����java/lang/Double(D)Ljava/lang/String;�java/io/BufferedWriter�java/io/OutputStreamWriter	�����!java/nio/charset/StandardCharsetsUTF_8Ljava/nio/charset/Charset;
���3(Ljava/io/OutputStream;Ljava/nio/charset/Charset;)V
���(Ljava/io/Writer;)V�(<?xml version="1.0" encoding="UTF-8" ?>

�����java/io/Writerwrite(Ljava/lang/String;)V�*org/apache/tools/ant/util/DOMElementWriter
��  
����;(Lorg/w3c/dom/Element;Ljava/io/Writer;ILjava/lang/String;)V
���flush�java/io/IOException	���0�java/lang/SystemLjava/io/PrintStream;	���err
�#org/apache/tools/ant/util/FileUtilsclose#org/apache/tools/ant/BuildException	Unable to write log file
*(Ljava/lang/String;Ljava/lang/Throwable;)V
createDescription*(Ljunit/framework/Test;)Ljava/lang/String;
��currentTimeMillis
�valueOf(J)Ljava/lang/Long;
java/util/Mapput8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;java/lang/StringBuilder

"#$%?org/apache/tools/ant/taskdefs/optional/junit/JUnitVersionHelpergetTestCaseName
'()append-(Ljava/lang/String;)Ljava/lang/StringBuilder;+(
"-.getTestCaseClassName0)
2�Z456containsKey(Ljava/lang/Object;)Z
89:	startTest(Ljunit/framework/Test;)V<testcase>	classname

ABCget&(Ljava/lang/Object;)Ljava/lang/Object;A
�FG�	longValueIfailure
KLMformatError@(Ljava/lang/String;Ljunit/framework/Test;Ljava/lang/Throwable;)V
OPQ
addFailure.(Ljunit/framework/Test;Ljava/lang/Throwable;)VSerror
UV:endTest
XYZ[Zjava/lang/Throwable
getMessage
�]^�isEmpty`messagebtype
defgetClass()Ljava/lang/Class;
hWijava/lang/Class
klmno<org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunnergetFilteredTrace)(Ljava/lang/Throwable;)Ljava/lang/String;LqrscreateTextNode&(Ljava/lang/String;)Lorg/w3c/dom/Text;LuvwcreateCDATASection.(Ljava/lang/String;)Lorg/w3c/dom/CDATASection;
"yzgetIgnoreMessage
|}~
formatSkip+(Ljunit/framework/Test;Ljava/lang/String;)V�Aorg/apache/tools/ant/taskdefs/optional/junit/JUnitResultFormatter�@org/apache/tools/ant/taskdefs/optional/junit/IgnoredTestListener
ONE_SECONDD
ConstantValueUNKNOWNLjava/lang/String;	Signature>Ljava/util/Hashtable<Ljava/lang/String;Lorg/w3c/dom/Element;>;=Ljava/util/Map<Ljunit/framework/Test;Ljunit/framework/Test;>;9Ljava/util/Map<Ljava/lang/String;Ljunit/framework/Test;>;3Ljava/util/Map<Ljava/lang/String;Ljava/lang/Long;>;CodeLineNumberTableLocalVariableTablethisFLorg/apache/tools/ant/taskdefs/optional/junit/XMLJUnitResultFormatter;excLjava/lang/Exception;
StackMapTable	setOutput(Ljava/io/OutputStream;)VsetSystemOutputsetSystemErrorstartTestSuite;(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;)VpropElementsuite8Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;npropsElementpropsLjava/util/Properties;	localHostLjava/net/InetAddress;endTestSuiteLjava/io/IOException;wriLjava/io/Writer;
ExceptionstLjunit/framework/Test;testcurrentTesttestDescriptionlLjava/lang/Long;�junit/framework/TestLjava/lang/Throwable;?(Ljunit/framework/Test;Ljunit/framework/AssertionFailedError;)V&Ljunit/framework/AssertionFailedError;addErrornestedstracetraceLorg/w3c/dom/Text;outputtestIgnoredtestAssumptionFailure
SourceFileXMLJUnitResultFormatter.java!2�
�������]GHST����������01�z<*�*�Y�	�
*�Y�	�*�Y�	�*�Y�	�*�Y�	���6W\a%e0i�<��
>&�W��#�K�)Y*�+�'�?@A�	���G'���>*+�.��
rs���01���@*4+�6��
xy���0����@*:+�6��
~���0�����	�*�<�?�E**�EI�K�Q+�UM*�Q[,�]�,�_�dY�fi�kN*�Qo-�_*�Qq*�s�_*�Ev�K:*�Q�xW+�|:�Z����:���D����:*�E��K:[�_����_�xW�����J�
���3�@�L�[�h�t�z���������������R�%�T�2\����������@�p�ho�Tz]���P�-V�`��V�`���\V��`���JuZ���L��M,�,��L�M+����������� 	����r��
��B�����*�Q�+�����_*�Q�+�����_*�Q�+�����_*�Q�+�Ÿ��_*�Q�+�ʊ�o�Ϲ_*�.��M��Y��Y*�.�ط޷�M,���Y��*�Q,��,�,��N*�.���K*�.���A,��:N�Y-�
�:,�,��:*�.���*�.���,�������h���h����������r��$�6�H�O�Z�_�f�h�~������������������������������������*���h����������:��V��Z�LX�V�X���9:�M*�+�
���W��
�������
�W%�Y� *�!�&*�&*�,�&/�&�1����$��%���V:���+�
M*�,�3�*+�7*�+�3�l*�,�3�_*�,�3�R*�E;�KN+�!:-[�]��_-=+�,�_*�Q-�xW*�
+�
-�?W�*�
,�@�`N*�+�
�D��:-ȸ�Ee��o�Ϲ_��^����)�6�>�K�Q�T�`�ejmr}����	�
�	��HQ9��KB�T����������,�T����L���F��`�`����`�`���,�`PQ�L
*H+,�J��
	� 
��
��
��P��I*+,�N��
!"� �������Q�L
*R+,�J��
-	.� 
��
��
��LM�d	�,�*,�T*�,,�W*�E+�K:,�
*�Q�*�
,�
�@�`:�xW-�W:��\�_-�W�_a-�c�g�_-�j:*�E�p:�xW��>12	36!7,8<:F<L=Y>g@xB~C�D�E�\	����b�������!u�T<Z�TLJ`�~�������`M`�,`�89�|(*�E+�KN*�Q-�xW-*�E,�t�xW��HIJ'K�*(��(b�(���T�:�f*++�x�{+�*�+�
+�W��O	P
QS������}~��H+�*+�T*�EùKN,�
-_,�_+�
*�Q�*�
+�
�@�`:-�xW��&	VW	Z\]#`.a>cGe�4H��H��H`�3�T>
�T�	�`
M`�Q�_*+,�W�{*�+�
+�W��i	jl� ����I���PK�wT�)�)Forg/apache/tools/ant/taskdefs/optional/junit/XMLResultAggregator.class���4�
org/apache/tools/ant/Task<init>()Vjava/util/Vector
	
@org/apache/tools/ant/taskdefs/optional/junit/XMLResultAggregatorfilesetsLjava/util/Vector;	transformers	generatedIdIAorg/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer
(Lorg/apache/tools/ant/Task;)V
add(Ljava/lang/Object;)Z	!"#toFileLjava/lang/String;	%&'toDirLjava/io/File;
)*+createDocument()Lorg/w3c/dom/Element;
-./getDestinationFile()Ljava/io/File;12345org/w3c/dom/ElementgetOwnerDocument()Lorg/w3c/dom/Document;
789writeDOMTree'(Lorg/w3c/dom/Document;Ljava/io/File;)V;java/io/IOException=#org/apache/tools/ant/BuildException?java/lang/StringBuilder
>B#Unable to write test aggregate to '
>DEFappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;
>HEI-(Ljava/lang/Object;)Ljava/lang/StringBuilder;K'
>MNOtoString()Ljava/lang/String;
<QR*(Ljava/lang/String;Ljava/lang/Throwable;)V
TUViterator()Ljava/util/Iterator;XYZ[\java/util/IteratorhasNext()ZX^_`next()Ljava/lang/Object;
bcdsetXmlDocument(Lorg/w3c/dom/Document;)V
fg	transformiTESTS-TestSuites.xml
klm
getProject ()Lorg/apache/tools/ant/Project;o.
qrstuorg/apache/tools/ant/ProjectresolveFile"(Ljava/lang/String;)Ljava/io/File;wjava/io/File
vyz#(Ljava/io/File;Ljava/lang/String;)V
|}~stream()Ljava/util/stream/Stream;���apply=(Lorg/apache/tools/ant/Project;)Ljava/util/function/Function;�����java/util/stream/StreamflatMap8(Ljava/util/function/Function;)Ljava/util/stream/Stream;���"()Ljava/util/function/IntFunction;����toArray5(Ljava/util/function/IntFunction;)[Ljava/lang/Object;�[Ljava/io/File;�java/io/PrintWriter�java/io/OutputStreamWriter�java/io/BufferedOutputStream
v���toPath()Ljava/nio/file/Path;�java/nio/file/OpenOption
�����java/nio/file/FilesnewOutputStreamG(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/OutputStream;
���(Ljava/io/OutputStream;)V	�����!java/nio/charset/StandardCharsetsUTF_8Ljava/nio/charset/Charset;
���3(Ljava/io/OutputStream;Ljava/nio/charset/Charset;)V
���(Ljava/io/Writer;)V�(<?xml version="1.0" encoding="UTF-8" ?>

����write(Ljava/lang/String;)V�*org/apache/tools/ant/util/DOMElementWriter
�����+org/w3c/dom/DocumentgetDocumentElement�  
����;(Lorg/w3c/dom/Element;Ljava/io/Writer;ILjava/lang/String;)V
���flush
���\
checkError�Error while writing DOM content
:��
���close�java/lang/Throwable
����
addSuppressed(Ljava/lang/Throwable;)V
���getDocumentBuilder%()Ljavax/xml/parsers/DocumentBuilder;
����5!javax/xml/parsers/DocumentBuildernewDocument�9org/apache/tools/ant/taskdefs/optional/junit/XMLConstants�
testsuites����
createElement)(Ljava/lang/String;)Lorg/w3c/dom/Element;����appendChild&(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;
���getFiles()[Ljava/io/File;�Parsing file: '
���log(Ljava/lang/String;I)V
v���length()J
���#org/apache/tools/ant/util/FileUtilsgetFileUtils'()Lorg/apache/tools/ant/util/FileUtils;
vOgetAbsolutePath
�toURI&(Ljava/lang/String;)Ljava/lang/String;
�
parse*(Ljava/lang/String;)Lorg/w3c/dom/Document;	testsuite1OgetNodeName
java/lang/Stringequals
addTestSuite-(Lorg/w3c/dom/Element;Lorg/w3c/dom/Element;)V	the file & is not a valid testsuite XML document B is empty.
This can be caused by the test JVM exiting unexpectedly"org/xml/sax/SAXException$	The file &7 is not a valid XML document. It is possibly corrupted.
()*+,%org/apache/tools/ant/util/StringUtils
getStackTrace)(Ljava/lang/Throwable;)Ljava/lang/String;.Error while accessing file 0: 
:23O
getMessage
5�6+(Ljava/lang/String;Ljava/lang/Throwable;I)V8name1:;getAttribute
=>?lastIndexOf(I)IA
CDE	substring(II)Ljava/lang/String;
GDH(I)Ljava/lang/String;
JKLMN4org/apache/tools/ant/taskdefs/optional/junit/DOMUtil
importNode8(Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;1PQRsetAttribute'(Ljava/lang/String;Ljava/lang/String;)VTpackageVid
XYZNHjava/lang/Integer
\]^_`(javax/xml/parsers/DocumentBuilderFactorynewInstance,()Ljavax/xml/parsers/DocumentBuilderFactory;
\bc�newDocumentBuilderejava/lang/Exceptiong%java/lang/ExceptionInInitializerError
fi�
klmno"org/apache/tools/ant/types/FileSetgetDirectoryScannerG(Lorg/apache/tools/ant/Project;)Lorg/apache/tools/ant/DirectoryScanner;
qrst%org/apache/tools/ant/DirectoryScannerscan
qvwxgetIncludedFiles()[Ljava/lang/String;�z{|of.([Ljava/lang/Object;)Ljava/util/stream/Stream;~�test ()Ljava/util/function/Predicate;����filter9(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;���d(Lorg/apache/tools/ant/Project;Lorg/apache/tools/ant/DirectoryScanner;)Ljava/util/function/Function;����map
q��/
getBasedir
v��OgetPath�.xml
���endsWith(Ljava/lang/String;)Z	Signature8Ljava/util/Vector<Lorg/apache/tools/ant/types/FileSet;>;WLjava/util/Vector<Lorg/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer;>;DEFAULT_DIR
ConstantValueDEFAULT_FILENAMEWARNING_IS_POSSIBLY_CORRUPTEDWARNING_INVALID_ROOT_ELEMENTWARNING_EMPTY_FILECodeLineNumberTableLocalVariableTablethisBLorg/apache/tools/ant/taskdefs/optional/junit/XMLResultAggregator;createReportE()Lorg/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer;transformerCLorg/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer;	setTofilevaluesetTodir(Ljava/io/File;)V
addFileSet'(Lorg/apache/tools/ant/types/FileSet;)Vfs$Lorg/apache/tools/ant/types/FileSet;executeeLjava/io/IOException;rootElementLorg/w3c/dom/Element;destFile
StackMapTable
ExceptionspLorg/apache/tools/ant/Project;wriLjava/io/PrintWriter;docLorg/w3c/dom/Document;filetestsuiteDocelemLorg/xml/sax/SAXException;builder#Ljavax/xml/parsers/DocumentBuilder;root
fullclassnamepospkgName	classnamecopyexcLjava/lang/Exception;lambda$getFiles$3(I)[Ljava/io/File;x$0lambda$getFiles$2](Lorg/apache/tools/ant/Project;Lorg/apache/tools/ant/types/FileSet;)Ljava/util/stream/Stream;ds'Lorg/apache/tools/ant/DirectoryScanner;lambda$getFiles$1g(Lorg/apache/tools/ant/Project;Lorg/apache/tools/ant/DirectoryScanner;Ljava/lang/String;)Ljava/io/File;pathnamelambda$getFiles$0
SourceFileXMLResultAggregator.javaBootstrapMethods�
�����"java/lang/invoke/LambdaMetafactorymetafactory�(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;�
����?(Lorg/apache/tools/ant/types/FileSet;)Ljava/util/stream/Stream;�(I)Ljava/lang/Object;�
�����
�����
���uInnerClasses�%java/lang/invoke/MethodHandles$Lookup�java/lang/invoke/MethodHandlesLookup!�
��"#&'���#�n�#�h�#�%�#��#��V *�*�Y�	�
*�Y�	�*���;?GP� �����P�Y*�L*�+�W+��h	ij���	�����>*+� ��
tu����#���>*+�$��
�����'���B
*�
+�W��
�	��
��
����j*�(L*�,M*+�0,�6�%N�<Y�>Y�@A�C,�GJ�C�L-�P�*��SN-�W�!-�]�:+�0�a�e��ܱ
:�.��
����:�V�a�f�i��4!��V��j��e��
`�'��1v:!�X�&�<./�u1*� �	*h� *�$�**�jn�p�$�vY*�$*� �x����
��!��1���
���e%*�jL*�
�{+��������������$��%�� ��89�p��Y��Y��Y,��������������N-�����Y��+��-���-��-�ə
�:Y̷ο-�Ч:-�Ч:����$SZ�\`c��*
�
�$�*�>�B�I�S�Z�o��*$K��p��p��p�'�)�S�F��v�����:*+��
r��L+��M,��N,-��W*�*��:�66�?2:*�>Y�@�C�GJ�C�L����	��d+�����	:��:	
	���*-	�*Y�`��#*�>Y�@�C�G�C�L��#*�>Y�@�C�G�C�L���:*�>Y�@#�C�G%�C�L��*�'��W:*�>Y�@-�C�G/�C�1�C�L��*�>Y�@-�C�G/�C�1�C�L�4����-�;��!;�:�� ��	����;�Y�c�d�o�t�}���������������	3=@[gj�p
�\	tM��}D��	�*��R��;/�'r��n��	i��`���9	�-��1��sv�1�B!n:�S��o,7�9N-.�<6�	@�
-�B:�-�-`�F:+,�I�1:7�OS�OU*��W�O��&	
' ;!E$Q%]&n'�Ro��o��o�
e�#]�'H�#;4�#E*����F�G
���W�[�a�K�fY*�h�d�123�	���Gd
���/�v�����
���z(+*�jM,�p,�u�y�}��*,��������
��"�'�� (��(��"��
���R*�vY+��,�x���p���� �����#
���2*��������#���*�����������������
���PK��$¹¹Gorg/apache/tools/ant/taskdefs/optional/junit/xsl/junit-frames-saxon.xsl<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">
    <xsl:character-map name="no-control-characters">
        <xsl:output-character character="&#127;" string="&amp;#127;"/>
        <xsl:output-character character="&#128;" string="&amp;#128;"/>
        <xsl:output-character character="&#129;" string="&amp;#129;"/>
        <xsl:output-character character="&#130;" string="&amp;#130;"/>
        <xsl:output-character character="&#131;" string="&amp;#131;"/>
        <xsl:output-character character="&#132;" string="&amp;#132;"/>
        <xsl:output-character character="&#133;" string="&amp;#133;"/>
        <xsl:output-character character="&#134;" string="&amp;#134;"/>
        <xsl:output-character character="&#135;" string="&amp;#135;"/>
        <xsl:output-character character="&#136;" string="&amp;#136;"/>
        <xsl:output-character character="&#137;" string="&amp;#137;"/>
        <xsl:output-character character="&#138;" string="&amp;#138;"/>
        <xsl:output-character character="&#139;" string="&amp;#139;"/>
        <xsl:output-character character="&#140;" string="&amp;#140;"/>
        <xsl:output-character character="&#141;" string="&amp;#141;"/>
        <xsl:output-character character="&#142;" string="&amp;#142;"/>
        <xsl:output-character character="&#143;" string="&amp;#143;"/>
        <xsl:output-character character="&#144;" string="&amp;#144;"/>
        <xsl:output-character character="&#145;" string="&amp;#145;"/>
        <xsl:output-character character="&#146;" string="&amp;#146;"/>
        <xsl:output-character character="&#147;" string="&amp;#147;"/>
        <xsl:output-character character="&#148;" string="&amp;#148;"/>
        <xsl:output-character character="&#149;" string="&amp;#149;"/>
        <xsl:output-character character="&#150;" string="&amp;#150;"/>
        <xsl:output-character character="&#151;" string="&amp;#151;"/>
        <xsl:output-character character="&#152;" string="&amp;#152;"/>
        <xsl:output-character character="&#153;" string="&amp;#153;"/>
        <xsl:output-character character="&#154;" string="&amp;#154;"/>
        <xsl:output-character character="&#155;" string="&amp;#155;"/>
        <xsl:output-character character="&#156;" string="&amp;#156;"/>
        <xsl:output-character character="&#157;" string="&amp;#157;"/>
        <xsl:output-character character="&#158;" string="&amp;#158;"/>
        <xsl:output-character character="&#159;" string="&amp;#159;"/>
    </xsl:character-map>
    <xsl:output method="html" indent="yes" encoding="UTF-8" use-character-maps="no-control-characters"/>
    <xsl:decimal-format decimal-separator="." grouping-separator=","/>
    <!--
       Licensed to the Apache Software Foundation (ASF) under one or more
       contributor license agreements.  See the NOTICE file distributed with
       this work for additional information regarding copyright ownership.
       The ASF licenses this file to You under the Apache License, Version 2.0
       (the "License"); you may not use this file except in compliance with
       the License.  You may obtain a copy of the License at

           https://www.apache.org/licenses/LICENSE-2.0

       Unless required by applicable law or agreed to in writing, software
       distributed under the License is distributed on an "AS IS" BASIS,
       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
       See the License for the specific language governing permissions and
       limitations under the License.
     -->

    <!--

     Sample stylesheet to be used with Ant JUnitReport output.

     It creates a set of HTML files a la javadoc where you can browse easily
     through all packages and classes.

    -->
    <xsl:param name="output.dir" select="'.'"/>
    <xsl:param name="TITLE">Unit Test Results.</xsl:param>


    <xsl:template match="testsuites">
        <!-- create the index.html -->
        <xsl:result-document href="file:///{$output.dir}/index.html">
            <xsl:call-template name="index.html"/>
        </xsl:result-document>

        <!-- create the stylesheet.css -->
        <xsl:result-document href="file:///{$output.dir}/stylesheet.css">
            <xsl:call-template name="stylesheet.css"/>
        </xsl:result-document>

        <!-- create the overview-packages.html at the root -->
        <xsl:result-document href="file:///{$output.dir}/overview-summary.html">
            <xsl:apply-templates select="." mode="overview.packages"/>
        </xsl:result-document>

        <!-- create the all-packages.html at the root -->
        <xsl:result-document href="file:///{$output.dir}/overview-frame.html">
            <xsl:apply-templates select="." mode="all.packages"/>
        </xsl:result-document>

        <!-- create the all-classes.html at the root -->
        <xsl:result-document href="file:///{$output.dir}/allclasses-frame.html">
            <xsl:apply-templates select="." mode="all.classes"/>
        </xsl:result-document>

        <!-- create the all-tests.html at the root -->
        <xsl:result-document href="file:///{$output.dir}/all-tests.html">
            <xsl:apply-templates select="." mode="all.tests"/>
        </xsl:result-document>

        <!-- create the alltests-fails.html at the root -->
        <xsl:result-document href="file:///{$output.dir}/alltests-fails.html">
            <xsl:apply-templates select="." mode="all.tests">
                <xsl:with-param name="type" select="'fails'"/>
            </xsl:apply-templates>
        </xsl:result-document>

        <!-- create the alltests-errors.html at the root -->
        <xsl:result-document href="file:///{$output.dir}/alltests-errors.html">
            <xsl:apply-templates select="." mode="all.tests">
                <xsl:with-param name="type" select="'errors'"/>
            </xsl:apply-templates>
        </xsl:result-document>

        <!-- create the alltests-skipped.html at the root -->
        <xsl:result-document href="file:///{$output.dir}/alltests-skipped.html">
            <xsl:apply-templates select="." mode="all.tests">
                <xsl:with-param name="type" select="'skipped'"/>
            </xsl:apply-templates>
        </xsl:result-document>

        <!-- process all packages -->
        <xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
            <xsl:call-template name="package">
                <xsl:with-param name="name" select="@package"/>
            </xsl:call-template>
        </xsl:for-each>
    </xsl:template>


    <xsl:template name="package">
        <xsl:param name="name"/>
        <xsl:variable name="package.dir">
            <xsl:if test="not($name = '')"><xsl:value-of select="translate($name,'.','/')"/></xsl:if>
            <xsl:if test="$name = ''">.</xsl:if>
        </xsl:variable>
        <!--Processing package <xsl:value-of select="@name"/> in <xsl:value-of select="$output.dir"/> -->
        <!-- create a classes-list.html in the package directory -->
        <xsl:result-document href="file:///{$output.dir}/{$package.dir}/package-frame.html">
            <xsl:call-template name="classes.list">
                <xsl:with-param name="name" select="$name"/>
            </xsl:call-template>
        </xsl:result-document>

        <!-- create a package-summary.html in the package directory -->
        <xsl:result-document href="file:///{$output.dir}/{$package.dir}/package-summary.html">
            <xsl:call-template name="package.summary">
                <xsl:with-param name="name" select="$name"/>
            </xsl:call-template>
        </xsl:result-document>

        <!-- for each class, creates a @name.html -->
        <!-- @bug there will be a problem with inner classes having the same name, it will be overwritten -->
        <xsl:for-each select="/testsuites/testsuite[@package = $name]">
            <xsl:result-document href="file:///{$output.dir}/{$package.dir}/{@id}_{@name}.html">
                <xsl:apply-templates select="." mode="class.details"/>
            </xsl:result-document>
            <xsl:if test="string-length(./system-out)!=0">
                <xsl:result-document href="file:///{$output.dir}/{$package.dir}/{@id}_{@name}-out.html">
                    <html>
                        <head>
                            <title>Standard Output from <xsl:value-of select="@name"/></title>
                        </head>
                        <body>
                            <pre><xsl:value-of select="./system-out"/></pre>
                        </body>
                    </html>
                </xsl:result-document>
            </xsl:if>
            <xsl:if test="string-length(./system-err)!=0">
                <xsl:result-document href="file:///{$output.dir}/{$package.dir}/{@id}_{@name}-err.html">
                    <html>
                        <head>
                            <title>Standard Error from <xsl:value-of select="@name"/></title>
                        </head>
                        <body>
                            <pre><xsl:value-of select="./system-err"/></pre>
                        </body>
                    </html>
                </xsl:result-document>
            </xsl:if>
            <xsl:if test="@failures != 0">
                <xsl:result-document href="file:///{$output.dir}/{$package.dir}/{@id}_{@name}-fails.html">
                    <xsl:apply-templates select="." mode="class.details">
                        <xsl:with-param name="type" select="'fails'"/>
                    </xsl:apply-templates>
                </xsl:result-document>
            </xsl:if>
            <xsl:if test="@errors != 0">
                <xsl:result-document href="file:///{$output.dir}/{$package.dir}/{@id}_{@name}-errors.html">
                    <xsl:apply-templates select="." mode="class.details">
                        <xsl:with-param name="type" select="'errors'"/>
                    </xsl:apply-templates>
                </xsl:result-document>
            </xsl:if>
            <xsl:if test="@skipped != 0">
                <xsl:result-document href="file:///{$output.dir}/{$package.dir}/{@id}_{@name}-skipped.html">
                    <xsl:apply-templates select="." mode="class.details">
                        <xsl:with-param name="type" select="'skipped'"/>
                    </xsl:apply-templates>
                </xsl:result-document>
            </xsl:if>
        </xsl:for-each>
    </xsl:template>

    <xsl:template name="index.html">
        <html>
            <head>
                <title><xsl:value-of select="$TITLE"/></title>
            </head>
            <frameset cols="20%,80%">
                <frameset rows="30%,70%">
                    <frame src="overview-frame.html" name="packageListFrame"/>
                    <frame src="allclasses-frame.html" name="classListFrame"/>
                </frameset>
                <frame src="overview-summary.html" name="classFrame"/>
                <noframes>
                    <h2>Frame Alert</h2>
                    <p>
                        This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
                    </p>
                </noframes>
            </frameset>
        </html>
    </xsl:template>

    <!-- this is the stylesheet css to use for nearly everything -->
    <xsl:template name="stylesheet.css">
        body {
        font:normal 68% verdana,arial,helvetica;
        color:#000000;
        }
        table tr td, table tr th {
        font-size: 68%;
        }
        table.details tr th{
        font-weight: bold;
        text-align:left;
        background:#a6caf0;
        }
        table.details tr td{
        background:#eeeee0;
        }

        p {
        line-height:1.5em;
        margin-top:0.5em; margin-bottom:1.0em;
        }
        h1 {
        margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
        }
        h2 {
        margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
        }
        h3 {
        margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
        }
        h4 {
        margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
        }
        h5 {
        margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
        }
        h6 {
        margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
        }
        .Error {
        font-weight:bold; color:red;
        }
        .Failure {
        font-weight:bold; color:purple;
        }
        .Properties {
        text-align:right;
        }
    </xsl:template>

    <!-- Create list of all/failed/errored/skipped tests -->
    <xsl:template match="testsuites" mode="all.tests">
        <xsl:param name="type" select="'all'"/>
        <html>
            <xsl:variable name="title">
                <xsl:choose>
                    <xsl:when test="$type = 'fails'">
                        <xsl:text>All Failures</xsl:text>
                    </xsl:when>
                    <xsl:when test="$type = 'errors'">
                        <xsl:text>All Errors</xsl:text>
                    </xsl:when>
                    <xsl:when test="$type = 'skipped'">
                        <xsl:text>All Skipped</xsl:text>
                    </xsl:when>
                    <xsl:otherwise>
                        <xsl:text>All Tests</xsl:text>
                    </xsl:otherwise>
                </xsl:choose>
            </xsl:variable>
            <head>
                <title>Unit Test Results: <xsl:value-of select="$title"/></title>
                <xsl:call-template name="create.stylesheet.link">
                    <xsl:with-param name="package.name"/>
                </xsl:call-template>
            </head>
            <body>
                <xsl:attribute name="onload">open('allclasses-frame.html','classListFrame')</xsl:attribute>
                <xsl:call-template name="pageHeader"/>
                <h2><xsl:value-of select="$title"/></h2>

                <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
                    <xsl:call-template name="testcase.test.header">
                        <xsl:with-param name="show.class" select="'yes'"/>
                    </xsl:call-template>
                    <!--
                            test can even not be started at all (failure to load the class)
                    so report the error directly
                    -->
                    <xsl:if test="./error">
                        <tr class="Error">
                            <td colspan="4">
                                <xsl:apply-templates select="./error"/>
                            </td>
                        </tr>
                    </xsl:if>
                    <xsl:choose>
                        <xsl:when test="$type = 'fails'">
                            <xsl:apply-templates select=".//testcase[failure]" mode="print.test">
                                <xsl:with-param name="show.class" select="'yes'"/>
                            </xsl:apply-templates>
                        </xsl:when>
                        <xsl:when test="$type = 'errors'">
                            <xsl:apply-templates select=".//testsuite[error]" mode="alltests.error.row"/>
                            <xsl:apply-templates select=".//testcase[error]" mode="print.test">
                                <xsl:with-param name="show.class" select="'yes'"/>
                            </xsl:apply-templates>
                        </xsl:when>
                        <xsl:when test="$type = 'skipped'">
                            <xsl:apply-templates select=".//testcase[skipped]" mode="print.test">
                                <xsl:with-param name="show.class" select="'yes'"/>
                            </xsl:apply-templates>
                        </xsl:when>
                        <xsl:otherwise>
                            <xsl:apply-templates select=".//testsuite[error]" mode="alltests.error.row"/>
                            <xsl:apply-templates select=".//testcase" mode="print.test">
                                <xsl:with-param name="show.class" select="'yes'"/>
                            </xsl:apply-templates>
                        </xsl:otherwise>
                    </xsl:choose>
                </table>
            </body>
        </html>
    </xsl:template>


    <!-- ======================================================================
        This page is created for every testsuite class.
        It prints a summary of the testsuite and detailed information about
        testcase methods.
         ====================================================================== -->
    <xsl:template match="testsuite" mode="class.details">
        <xsl:param name="type" select="'all'"/>
        <xsl:variable name="package.name" select="@package"/>
        <xsl:variable name="class.name"><xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></xsl:variable>
        <html>
            <head>
                <title>Unit Test Results: <xsl:value-of select="$class.name"/></title>
                <xsl:call-template name="create.stylesheet.link">
                    <xsl:with-param name="package.name" select="$package.name"/>
                </xsl:call-template>
                <script type="text/javascript" language="JavaScript">
                    var TestCases = new Array();
                    var cur;
                    <xsl:apply-templates select="properties"/>
                </script>
                <script type="text/javascript" language="JavaScript"><![CDATA[
        function displayProperties (name) {
          var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
          var doc = win.document;
          doc.open();
          doc.write("<html><head><title>Properties of " + name + "</title>");
          doc.write("<style type=\"text/css\">");
          doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
          doc.write("table tr td, table tr th { font-size: 68%; }");
          doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
          doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
          doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
          doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
          doc.write("</style>");
          doc.write("</head><body>");
          doc.write("<h3>Properties of " + name + "</h3>");
          doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
          doc.write("<table class='properties'>");
          doc.write("<tr><th>Name</th><th>Value</th></tr>");
          for (prop in TestCases[name]) {
            doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
          }
          doc.write("</table>");
          doc.write("</body></html>");
          doc.close();
          win.focus();
        }
      ]]>
                </script>
            </head>
            <body>
                <xsl:call-template name="pageHeader"/>
                <h3>Class <xsl:value-of select="$class.name"/></h3>


                <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
                    <xsl:call-template name="testsuite.test.header"/>
                    <xsl:apply-templates select="." mode="print.test"/>
                </table>

                <xsl:choose>
                    <xsl:when test="$type = 'fails'">
                        <h2>Failures</h2>
                    </xsl:when>
                    <xsl:when test="$type = 'errors'">
                        <h2>Errors</h2>
                    </xsl:when>
                    <xsl:when test="$type = 'skipped'">
                        <h2>Skipped</h2>
                    </xsl:when>
                    <xsl:otherwise>
                        <h2>Tests</h2>
                    </xsl:otherwise>
                </xsl:choose>
                <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
                    <xsl:call-template name="testcase.test.header"/>
                    <!--
                            test can even not be started at all (failure to load the class)
                    so report the error directly
                    -->
                    <xsl:if test="./error">
                        <tr class="Error">
                            <td colspan="4"><xsl:apply-templates select="./error"/></td>
                        </tr>
                    </xsl:if>
                    <xsl:choose>
                        <xsl:when test="$type = 'fails'">
                            <xsl:apply-templates select="./testcase[failure]" mode="print.test"/>
                        </xsl:when>
                        <xsl:when test="$type = 'errors'">
                            <xsl:apply-templates select="./testcase[error]" mode="print.test"/>
                        </xsl:when>
                        <xsl:when test="$type = 'skipped'">
                            <xsl:apply-templates select="./testcase[skipped]" mode="print.test"/>
                        </xsl:when>
                        <xsl:otherwise>
                            <xsl:apply-templates select="./testcase" mode="print.test"/>
                        </xsl:otherwise>
                    </xsl:choose>
                </table>
                <div class="Properties">
                    <a>
                        <xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
                        Properties &#187;
                    </a>
                </div>
                <xsl:if test="string-length(./system-out)!=0">
                    <div class="Properties">
                        <a>
                            <xsl:attribute name="href">./<xsl:value-of select="@id"/>_<xsl:value-of select="@name"/>-out.html</xsl:attribute>
                            System.out &#187;
                        </a>
                    </div>
                </xsl:if>
                <xsl:if test="string-length(./system-err)!=0">
                    <div class="Properties">
                        <a>
                            <xsl:attribute name="href">./<xsl:value-of select="@id"/>_<xsl:value-of select="@name"/>-err.html</xsl:attribute>
                            System.err &#187;
                        </a>
                    </div>
                </xsl:if>
            </body>
        </html>
    </xsl:template>

    <!--
     Write properties into a JavaScript data structure.
     This is based on the original idea by Erik Hatcher (ehatcher@apache.org)
     -->
    <xsl:template match="properties">
        cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
        <xsl:for-each select="property">
            <xsl:sort select="@name"/>
            cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
        </xsl:for-each>
    </xsl:template>


    <!-- ======================================================================
        This page is created for every package.
        It prints the name of all classes that belongs to this package.
        @param name the package name to print classes.
         ====================================================================== -->
    <!-- list of classes in a package -->
    <xsl:template name="classes.list">
        <xsl:param name="name"/>
        <html>
            <head>
                <title>Unit Test Classes: <xsl:value-of select="$name"/></title>
                <xsl:call-template name="create.stylesheet.link">
                    <xsl:with-param name="package.name" select="$name"/>
                </xsl:call-template>
            </head>
            <body>
                <table width="100%">
                    <tr>
                        <td nowrap="nowrap">
                            <h2><a href="package-summary.html" target="classFrame">
                                <xsl:value-of select="$name"/>
                                <xsl:if test="$name = ''">&lt;none&gt;</xsl:if>
                            </a></h2>
                        </td>
                    </tr>
                </table>

                <h2>Classes</h2>
                <table width="100%">
                    <xsl:for-each select="/testsuites/testsuite[./@package = $name]">
                        <xsl:sort select="@name"/>
                        <tr>
                            <td nowrap="nowrap">
                                <a href="{@id}_{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
                            </td>
                        </tr>
                    </xsl:for-each>
                </table>
            </body>
        </html>
    </xsl:template>


    <!--
        Creates an all-classes.html file that contains a link to all package-summary.html
        on each class.
    -->
    <xsl:template match="testsuites" mode="all.classes">
        <html>
            <head>
                <title>All Unit Test Classes</title>
                <xsl:call-template name="create.stylesheet.link">
                    <xsl:with-param name="package.name"/>
                </xsl:call-template>
            </head>
            <body>
                <h2>Classes</h2>
                <table width="100%">
                    <xsl:apply-templates select="testsuite" mode="all.classes">
                        <xsl:sort select="@name"/>
                    </xsl:apply-templates>
                </table>
            </body>
        </html>
    </xsl:template>

    <xsl:template match="testsuite" mode="all.classes">
        <xsl:variable name="package.name" select="@package"/>
        <tr>
            <td nowrap="nowrap">
                <a target="classFrame">
                    <xsl:attribute name="href">
                        <xsl:if test="not($package.name='')">
                            <xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
                        </xsl:if><xsl:value-of select="@id"/>_<xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
                    </xsl:attribute>
                    <xsl:value-of select="@name"/>
                </a>
            </td>
        </tr>
    </xsl:template>


    <!--
        Creates an html file that contains a link to all package-summary.html files on
        each package existing on testsuites.
        @bug there will be a problem here, I don't know yet how to handle unnamed package :(
    -->
    <xsl:template match="testsuites" mode="all.packages">
        <html>
            <head>
                <title>All Unit Test Packages</title>
                <xsl:call-template name="create.stylesheet.link">
                    <xsl:with-param name="package.name"/>
                </xsl:call-template>
            </head>
            <body>
                <h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
                <h2>Packages</h2>
                <table width="100%">
                    <xsl:apply-templates select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]" mode="all.packages">
                        <xsl:sort select="@package"/>
                    </xsl:apply-templates>
                </table>
            </body>
        </html>
    </xsl:template>

    <xsl:template match="testsuite" mode="all.packages">
        <tr>
            <td nowrap="nowrap">
                <a href="./{translate(@package,'.','/')}/package-summary.html" target="classFrame">
                    <xsl:value-of select="@package"/>
                    <xsl:if test="@package = ''">&lt;none&gt;</xsl:if>
                </a>
            </td>
        </tr>
    </xsl:template>


    <xsl:template match="testsuites" mode="overview.packages">
        <html>
            <head>
                <title>Unit Test Results: Summary</title>
                <xsl:call-template name="create.stylesheet.link">
                    <xsl:with-param name="package.name"/>
                </xsl:call-template>
            </head>
            <body>
                <xsl:attribute name="onload">open('allclasses-frame.html','classListFrame')</xsl:attribute>
                <xsl:call-template name="pageHeader"/>
                <h2>Summary</h2>
                <xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
                <xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
                <xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
                <xsl:variable name="skippedCount" select="sum(testsuite/@skipped)" />
                <xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
                <xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
                <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
                    <tr valign="top">
                        <th>Tests</th>
                        <th>Failures</th>
                        <th>Errors</th>
                        <th>Skipped</th>
                        <th>Success rate</th>
                        <th>Time</th>
                    </tr>
                    <tr valign="top">
                        <xsl:attribute name="class">
                            <xsl:choose>
                                <xsl:when test="$errorCount &gt; 0">Error</xsl:when>
                                <xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
                                <xsl:otherwise>Pass</xsl:otherwise>
                            </xsl:choose>
                        </xsl:attribute>
                        <td><a title="Display all tests" href="all-tests.html"><xsl:value-of select="$testCount"/></a></td>
                        <td><a title="Display all failures" href="alltests-fails.html"><xsl:value-of select="$failureCount"/></a></td>
                        <td><a title="Display all errors" href="alltests-errors.html"><xsl:value-of select="$errorCount"/></a></td>
                        <td><a title="Display all skipped test" href="alltests-skipped.html"><xsl:value-of select="$skippedCount" /></a></td>
                        <td>
                            <xsl:call-template name="display-percent">
                                <xsl:with-param name="value" select="$successRate"/>
                            </xsl:call-template>
                        </td>
                        <td>
                            <xsl:call-template name="display-time">
                                <xsl:with-param name="value" select="$timeCount"/>
                            </xsl:call-template>
                        </td>
                    </tr>
                </table>
                <table border="0" width="95%">
                    <tr>
                        <td style="text-align: justify;">
                            Note: <em>failures</em> are anticipated and checked for with assertions while <em>errors</em> are unanticipated.
                        </td>
                    </tr>
                </table>

                <h2>Packages</h2>
                <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
                    <xsl:call-template name="testsuite.test.header"/>
                    <xsl:for-each select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
                        <xsl:sort select="@package" order="ascending"/>
                        <!-- get the node set containing all testsuites that have the same package -->
                        <xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = current()/@package]"/>
                        <tr valign="top">
                            <!-- display a failure if there is any failure/error in the package -->
                            <xsl:attribute name="class">
                                <xsl:choose>
                                    <xsl:when test="sum($insamepackage/@errors) &gt; 0">Error</xsl:when>
                                    <xsl:when test="sum($insamepackage/@failures) &gt; 0">Failure</xsl:when>
                                    <xsl:otherwise>Pass</xsl:otherwise>
                                </xsl:choose>
                            </xsl:attribute>
                            <td><a href="./{translate(@package,'.','/')}/package-summary.html">
                                <xsl:value-of select="@package"/>
                                <xsl:if test="@package = ''">&lt;none&gt;</xsl:if>
                            </a></td>
                            <td><xsl:value-of select="sum($insamepackage/@tests)"/></td>
                            <td><xsl:value-of select="sum($insamepackage/@errors)"/></td>
                            <td><xsl:value-of select="sum($insamepackage/@failures)"/></td>
                            <td><xsl:value-of select="sum($insamepackage/@skipped)" /></td>
                            <td>
                                <xsl:call-template name="display-time">
                                    <xsl:with-param name="value" select="sum($insamepackage/@time)"/>
                                </xsl:call-template>
                            </td>
                            <td><xsl:value-of select="$insamepackage/@timestamp"/></td>
                            <td><xsl:value-of select="$insamepackage/@hostname"/></td>
                        </tr>
                    </xsl:for-each>
                </table>
            </body>
        </html>
    </xsl:template>


    <xsl:template name="package.summary">
        <xsl:param name="name"/>
        <html>
            <head>
                <xsl:call-template name="create.stylesheet.link">
                    <xsl:with-param name="package.name" select="$name"/>
                </xsl:call-template>
            </head>
            <body>
                <xsl:attribute name="onload">open('package-frame.html','classListFrame')</xsl:attribute>
                <xsl:call-template name="pageHeader"/>
                <h3>Package <xsl:value-of select="$name"/></h3>

                <!--table border="0" cellpadding="5" cellspacing="2" width="95%">
                    <xsl:call-template name="class.metrics.header"/>
                    <xsl:apply-templates select="." mode="print.metrics"/>
                </table-->

                <xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = $name]"/>
                <xsl:if test="count($insamepackage) &gt; 0">
                    <h2>Classes</h2>
                    <p>
                        <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
                            <xsl:call-template name="testsuite.test.header"/>
                            <xsl:apply-templates select="$insamepackage" mode="print.test">
                                <xsl:sort select="@name"/>
                            </xsl:apply-templates>
                        </table>
                    </p>
                </xsl:if>
            </body>
        </html>
    </xsl:template>


    <!--
        transform string like a.b.c to ../../../
        @param path the path to transform into a descending directory path
    -->
    <xsl:template name="path">
        <xsl:param name="path"/>
        <xsl:if test="contains($path,'.')">
            <xsl:text>../</xsl:text>
            <xsl:call-template name="path">
                <xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
            </xsl:call-template>
        </xsl:if>
        <xsl:if test="not(contains($path,'.')) and not($path = '')">
            <xsl:text>../</xsl:text>
        </xsl:if>
    </xsl:template>


    <!-- create the link to the stylesheet based on the package name -->
    <xsl:template name="create.stylesheet.link">
        <xsl:param name="package.name"/>
        <link rel="stylesheet" type="text/css" title="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></link>
    </xsl:template>


    <!-- Page HEADER -->
    <xsl:template name="pageHeader">
        <h1><xsl:value-of select="$TITLE"/></h1>
        <table width="100%">
            <tr>
                <td align="left"></td>
                <td align="right">Designed for use with <a href="https://www.junit.org/">JUnit</a> and <a href="https://ant.apache.org/">Ant</a>.</td>
            </tr>
        </table>
        <hr size="1"/>
    </xsl:template>

    <!-- class header -->
    <xsl:template name="testsuite.test.header">
        <tr valign="top">
            <th width="80%">Name</th>
            <th>Tests</th>
            <th>Errors</th>
            <th>Failures</th>
            <th>Skipped</th>
            <th nowrap="nowrap">Time(s)</th>
            <th nowrap="nowrap">Time Stamp</th>
            <th>Host</th>
        </tr>
    </xsl:template>

    <!-- method header -->
    <xsl:template name="testcase.test.header">
        <xsl:param name="show.class" select="''"/>
        <tr valign="top">
            <xsl:if test="boolean($show.class)">
                <th>Class</th>
            </xsl:if>
            <th>Name</th>
            <th>Status</th>
            <th width="80%">Type</th>
            <th nowrap="nowrap">Time(s)</th>
        </tr>
    </xsl:template>


    <!-- class information -->
    <xsl:template match="testsuite" mode="print.test">
        <tr valign="top">
            <xsl:attribute name="class">
                <xsl:choose>
                    <xsl:when test="@errors[.&gt; 0]">Error</xsl:when>
                    <xsl:when test="@failures[.&gt; 0]">Failure</xsl:when>
                    <xsl:otherwise>Pass</xsl:otherwise>
                </xsl:choose>
            </xsl:attribute>
            <td><a title="Display all tests" href="{@id}_{@name}.html"><xsl:value-of select="@name"/></a></td>
            <td><a title="Display all tests" href="{@id}_{@name}.html"><xsl:apply-templates select="@tests"/></a></td>
            <td>
                <xsl:choose>
                    <xsl:when test="@errors != 0">
                        <a title="Display only errors" href="{@id}_{@name}-errors.html"><xsl:apply-templates select="@errors"/></a>
                    </xsl:when>
                    <xsl:otherwise>
                        <xsl:apply-templates select="@errors"/>
                    </xsl:otherwise>
                </xsl:choose>
            </td>
            <td>
                <xsl:choose>
                    <xsl:when test="@failures != 0">
                        <a title="Display only failures" href="{@id}_{@name}-fails.html"><xsl:apply-templates select="@failures"/></a>
                    </xsl:when>
                    <xsl:otherwise>
                        <xsl:apply-templates select="@failures"/>
                    </xsl:otherwise>
                </xsl:choose>
            </td>
            <td>
                <xsl:choose>
                    <xsl:when test="@skipped != 0">
                        <a title="Display only skipped tests" href="{@id}_{@name}-skipped.html"><xsl:apply-templates select="@skipped"/></a>
                    </xsl:when>
                    <xsl:otherwise>
                        <xsl:apply-templates select="@skipped"/>
                    </xsl:otherwise>
                </xsl:choose>
            </td>
            <td><xsl:call-template name="display-time">
                <xsl:with-param name="value" select="@time"/>
            </xsl:call-template>
            </td>
            <td><xsl:apply-templates select="@timestamp"/></td>
            <td><xsl:apply-templates select="@hostname"/></td>
        </tr>
    </xsl:template>

    <xsl:template match="testcase" mode="print.test">
        <xsl:param name="show.class" select="''"/>
        <tr valign="top">
            <xsl:attribute name="class">
                <xsl:choose>
                    <xsl:when test="error">Error</xsl:when>
                    <xsl:when test="failure">Failure</xsl:when>
                    <xsl:otherwise>TableRowColor</xsl:otherwise>
                </xsl:choose>
            </xsl:attribute>
            <xsl:variable name="class.href">
                <xsl:value-of select="concat(translate(../@package,'.','/'), '/', ../@id, '_', ../@name, '.html')"/>
            </xsl:variable>
            <xsl:if test="boolean($show.class)">
                <td><a href="{$class.href}"><xsl:value-of select="../@name"/></a></td>
            </xsl:if>
            <td>
                <a name="{@name}"/>
                <xsl:choose>
                    <xsl:when test="boolean($show.class)">
                        <a href="{concat($class.href, '#', @name)}"><xsl:value-of select="@name"/></a>
                    </xsl:when>
                    <xsl:otherwise>
                        <xsl:value-of select="@name"/>
                    </xsl:otherwise>
                </xsl:choose>
            </td>
            <xsl:choose>
                <xsl:when test="failure">
                    <td>Failure</td>
                    <td><xsl:apply-templates select="failure"/></td>
                </xsl:when>
                <xsl:when test="error">
                    <td>Error</td>
                    <td><xsl:apply-templates select="error"/></td>
                </xsl:when>
                <xsl:when test="skipped">
                    <td>Skipped</td>
                    <td><xsl:apply-templates select="skipped"/></td>
                </xsl:when>
                <xsl:otherwise>
                    <td>Success</td>
                    <td></td>
                </xsl:otherwise>
            </xsl:choose>
            <td>
                <xsl:call-template name="display-time">
                    <xsl:with-param name="value" select="@time"/>
                </xsl:call-template>
            </td>
        </tr>
    </xsl:template>


    <!-- Note : the below template skipped, error and failure are the same style
                so just call the same style store in the toolkit template -->
    <xsl:template match="failure">
        <xsl:call-template name="display-failures"/>
    </xsl:template>

    <xsl:template match="error">
        <xsl:call-template name="display-failures"/>
    </xsl:template>

    <xsl:template match="skipped">
        <xsl:call-template name="display-failures"/>
    </xsl:template>

    <!-- Style for the error and failure in the testcase template -->
    <xsl:template name="display-failures">
        <xsl:choose>
            <xsl:when test="not(@message)">N/A</xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="@message"/>
            </xsl:otherwise>
        </xsl:choose>
        <!-- display the stacktrace -->
        <br/><br/>
        <code>
            <xsl:call-template name="br-replace">
                <xsl:with-param name="word" select="."/>
            </xsl:call-template>
        </code>
        <!-- the latter is better but might be problematic for non-21" monitors... -->
        <!--pre><xsl:value-of select="."/></pre-->
    </xsl:template>

    <xsl:template name="JS-escape">
        <xsl:param name="string"/>
        <xsl:variable name="tmp1" select="replace($string,'\\','\\\\')"/>
        <xsl:variable name="tmp2" select="replace($tmp1,&quot;'&quot;,&quot;\\&apos;&quot;)"/>
        <xsl:variable name="tmp3" select="replace($tmp2,&quot;&#10;&quot;,'\\n')"/>
        <xsl:variable name="tmp4" select="replace($tmp3,&quot;&#13;&quot;,'\\r')"/>
        <xsl:value-of select="$tmp4"/>
    </xsl:template>


    <!--
        template that will convert a carriage return into a br tag
        @param word the text from which to convert CR to BR tag
    -->
    <xsl:template name="br-replace">
        <xsl:param name="word"/>
        <xsl:param name="splitlimit">32</xsl:param>
        <xsl:variable name="secondhalfstartindex" select="(string-length($word)+(string-length($word) mod 2)) div 2"/>
        <xsl:variable name="secondhalfword" select="substring($word, $secondhalfstartindex)"/>
        <!-- When word is very big, a recursive replace is very heap/stack expensive, so subdivide on line break after middle of string -->
        <xsl:choose>
            <xsl:when test="(string-length($word) > $splitlimit) and (contains($secondhalfword, '&#xa;'))">
                <xsl:variable name="secondhalfend" select="substring-after($secondhalfword, '&#xa;')"/>
                <xsl:variable name="firsthalflen" select="string-length($word) - string-length($secondhalfword)"/>
                <xsl:variable name="firsthalfword" select="substring($word, 1, $firsthalflen)"/>
                <xsl:variable name="firsthalfend" select="substring-before($secondhalfword, '&#xa;')"/>
                <xsl:call-template name="br-replace">
                    <xsl:with-param name="word" select="concat($firsthalfword,$firsthalfend)"/>
                </xsl:call-template>
                <br/>
                <xsl:call-template name="br-replace">
                    <xsl:with-param name="word" select="$secondhalfend"/>
                </xsl:call-template>
            </xsl:when>
            <xsl:when test="contains($word, '&#xa;')">
                <xsl:value-of select="substring-before($word, '&#xa;')"/>
                <br/>
                <xsl:call-template name="br-replace">
                    <xsl:with-param name="word" select="substring-after($word, '&#xa;')"/>
                </xsl:call-template>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="$word"/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>

    <xsl:template name="display-time">
        <xsl:param name="value"/>
        <xsl:value-of select="format-number($value,'0.000')"/>
    </xsl:template>

    <xsl:template name="display-percent">
        <xsl:param name="value"/>
        <xsl:value-of select="format-number($value,'0.00%')"/>
    </xsl:template>

    <xsl:template match="testsuite" mode="alltests.error.row">
      <xsl:variable name="package.dir">
        <xsl:if test="not(@package = '')"><xsl:value-of select="translate(@package,'.','/')"/><xsl:text>/</xsl:text></xsl:if>
      </xsl:variable>
      <xsl:variable name="class.href">
        <xsl:value-of select="concat($package.dir, @id, '_', @name, '.html')"/>
      </xsl:variable>
      <tr class="Error">
        <td><a href="{$class.href}"><xsl:value-of select="@name"/></a></td>
        <td colspan="3"><xsl:apply-templates select="./error"/></td>
      </tr>
    </xsl:template>

</xsl:stylesheet>
PKdi�U����Aorg/apache/tools/ant/taskdefs/optional/junit/xsl/junit-frames.xsl<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
    xmlns:lxslt="http://xml.apache.org/xslt"
    xmlns:redirect="http://xml.apache.org/xalan/redirect"
    xmlns:string="xalan://java.lang.String"
    extension-element-prefixes="redirect">
<xsl:output method="html" indent="yes" encoding="UTF-8"/>
<xsl:decimal-format decimal-separator="." grouping-separator=","/>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       https://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
 -->

<!--

 Sample stylesheet to be used with Ant JUnitReport output.

 It creates a set of HTML files a la javadoc where you can browse easily
 through all packages and classes.

-->
<xsl:param name="output.dir" select="'.'"/>
<xsl:param name="TITLE">Unit Test Results.</xsl:param>


<xsl:template match="testsuites">
    <!-- create the index.html -->
    <redirect:write file="{$output.dir}/index.html">
        <xsl:call-template name="index.html"/>
    </redirect:write>

    <!-- create the stylesheet.css -->
    <redirect:write file="{$output.dir}/stylesheet.css">
        <xsl:call-template name="stylesheet.css"/>
    </redirect:write>

    <!-- create the overview-packages.html at the root -->
    <redirect:write file="{$output.dir}/overview-summary.html">
        <xsl:apply-templates select="." mode="overview.packages"/>
    </redirect:write>

    <!-- create the all-packages.html at the root -->
    <redirect:write file="{$output.dir}/overview-frame.html">
        <xsl:apply-templates select="." mode="all.packages"/>
    </redirect:write>

    <!-- create the all-classes.html at the root -->
    <redirect:write file="{$output.dir}/allclasses-frame.html">
        <xsl:apply-templates select="." mode="all.classes"/>
    </redirect:write>

    <!-- create the all-tests.html at the root -->
    <redirect:write file="{$output.dir}/all-tests.html">
        <xsl:apply-templates select="." mode="all.tests"/>
    </redirect:write>

    <!-- create the alltests-fails.html at the root -->
    <redirect:write file="{$output.dir}/alltests-fails.html">
      <xsl:apply-templates select="." mode="all.tests">
        <xsl:with-param name="type" select="'fails'"/>
      </xsl:apply-templates>
    </redirect:write>

  <!-- create the alltests-errors.html at the root -->
    <redirect:write file="{$output.dir}/alltests-errors.html">
      <xsl:apply-templates select="." mode="all.tests">
        <xsl:with-param name="type" select="'errors'"/>
      </xsl:apply-templates>
    </redirect:write>
    
    <!-- create the alltests-skipped.html at the root -->
    <redirect:write file="{$output.dir}/alltests-skipped.html">
      <xsl:apply-templates select="." mode="all.tests">
        <xsl:with-param name="type" select="'skipped'"/>
      </xsl:apply-templates>
    </redirect:write>

  <!-- process all packages -->
    <xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
        <xsl:call-template name="package">
            <xsl:with-param name="name" select="@package"/>
        </xsl:call-template>
    </xsl:for-each>
</xsl:template>


<xsl:template name="package">
    <xsl:param name="name"/>
    <xsl:variable name="package.dir">
        <xsl:if test="not($name = '')"><xsl:value-of select="translate($name,'.','/')"/></xsl:if>
        <xsl:if test="$name = ''">.</xsl:if>
    </xsl:variable>
    <!--Processing package <xsl:value-of select="@name"/> in <xsl:value-of select="$output.dir"/> -->
    <!-- create a classes-list.html in the package directory -->
    <redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
        <xsl:call-template name="classes.list">
            <xsl:with-param name="name" select="$name"/>
        </xsl:call-template>
    </redirect:write>

    <!-- create a package-summary.html in the package directory -->
    <redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
        <xsl:call-template name="package.summary">
            <xsl:with-param name="name" select="$name"/>
        </xsl:call-template>
    </redirect:write>

    <!-- for each class, creates a @name.html -->
    <!-- @bug there will be a problem with inner classes having the same name, it will be overwritten -->
  <xsl:for-each select="/testsuites/testsuite[@package = $name]">
    <redirect:write file="{$output.dir}/{$package.dir}/{@id}_{@name}.html">
      <xsl:apply-templates select="." mode="class.details"/>
    </redirect:write>
    <xsl:if test="string-length(./system-out)!=0">
      <redirect:write file="{$output.dir}/{$package.dir}/{@id}_{@name}-out.html">
        <html>
          <head>
            <title>Standard Output from <xsl:value-of select="@name"/></title>
          </head>
          <body>
            <pre><xsl:value-of select="./system-out"/></pre>
          </body>
        </html>
      </redirect:write>
    </xsl:if>
    <xsl:if test="string-length(./system-err)!=0">
      <redirect:write file="{$output.dir}/{$package.dir}/{@id}_{@name}-err.html">
        <html>
          <head>
            <title>Standard Error from <xsl:value-of select="@name"/></title>
          </head>
          <body>
            <pre><xsl:value-of select="./system-err"/></pre>
          </body>
        </html>
      </redirect:write>
    </xsl:if>
    <xsl:if test="@failures != 0">
      <redirect:write file="{$output.dir}/{$package.dir}/{@id}_{@name}-fails.html">
        <xsl:apply-templates select="." mode="class.details">
          <xsl:with-param name="type" select="'fails'"/>
        </xsl:apply-templates>
      </redirect:write>
    </xsl:if>
    <xsl:if test="@errors != 0">
      <redirect:write file="{$output.dir}/{$package.dir}/{@id}_{@name}-errors.html">
        <xsl:apply-templates select="." mode="class.details">
          <xsl:with-param name="type" select="'errors'"/>
        </xsl:apply-templates>
      </redirect:write>
    </xsl:if>
    <xsl:if test="@skipped != 0">
      <redirect:write file="{$output.dir}/{$package.dir}/{@id}_{@name}-skipped.html">
        <xsl:apply-templates select="." mode="class.details">
          <xsl:with-param name="type" select="'skipped'"/>
        </xsl:apply-templates>
      </redirect:write>
    </xsl:if>
  </xsl:for-each>
</xsl:template>

<xsl:template name="index.html">
<html>
    <head>
        <title><xsl:value-of select="$TITLE"/></title>
    </head>
    <frameset cols="20%,80%">
        <frameset rows="30%,70%">
            <frame src="overview-frame.html" name="packageListFrame"/>
            <frame src="allclasses-frame.html" name="classListFrame"/>
        </frameset>
        <frame src="overview-summary.html" name="classFrame"/>
        <noframes>
            <h2>Frame Alert</h2>
            <p>
                This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
            </p>
        </noframes>
    </frameset>
</html>
</xsl:template>

<!-- this is the stylesheet css to use for nearly everything -->
<xsl:template name="stylesheet.css">
body {
    font:normal 68% verdana,arial,helvetica;
    color:#000000;
}
table tr td, table tr th {
    font-size: 68%;
}
table.details tr th{
    font-weight: bold;
    text-align:left;
    background:#a6caf0;
}
table.details tr td{
    background:#eeeee0;
}

p {
    line-height:1.5em;
    margin-top:0.5em; margin-bottom:1.0em;
}
h1 {
    margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
}
h2 {
    margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
}
h3 {
    margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
}
h4 {
    margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
}
h5 {
    margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
}
h6 {
    margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
}
.Error {
    font-weight:bold; color:red;
}
.Failure {
    font-weight:bold; color:purple;
}
.Properties {
  text-align:right;
}
</xsl:template>

<!-- Create list of all/failed/errored/skipped tests -->
<xsl:template match="testsuites" mode="all.tests">
    <xsl:param name="type" select="'all'"/>
    <html>
	<xsl:variable name="title">
	    <xsl:choose>
		<xsl:when test="$type = 'fails'">
		    <xsl:text>All Failures</xsl:text>
		</xsl:when>
		<xsl:when test="$type = 'errors'">
		    <xsl:text>All Errors</xsl:text>
		</xsl:when>
		<xsl:when test="$type = 'skipped'">
		    <xsl:text>All Skipped</xsl:text>
		</xsl:when>
		<xsl:otherwise>
		    <xsl:text>All Tests</xsl:text>
		</xsl:otherwise>
	    </xsl:choose>
	</xsl:variable>
	<head>
	    <title>Unit Test Results: <xsl:value-of select="$title"/></title>
	    <xsl:call-template name="create.stylesheet.link">
                <xsl:with-param name="package.name"/>
            </xsl:call-template>
	</head>
	<body>
	    <xsl:attribute name="onload">open('allclasses-frame.html','classListFrame')</xsl:attribute>
            <xsl:call-template name="pageHeader"/>
            <h2><xsl:value-of select="$title"/></h2>

            <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
		<xsl:call-template name="testcase.test.header">
		    <xsl:with-param name="show.class" select="'yes'"/>
		</xsl:call-template>
		<!--
                test can even not be started at all (failure to load the class)
		so report the error directly
		-->
              <xsl:if test="./error">
                <tr class="Error">
                  <td colspan="4">
                    <xsl:apply-templates select="./error"/>
                  </td>
                </tr>
              </xsl:if>
              <xsl:choose>
                <xsl:when test="$type = 'fails'">
                  <xsl:apply-templates select=".//testcase[failure]" mode="print.test">
                    <xsl:with-param name="show.class" select="'yes'"/>
                  </xsl:apply-templates>
                </xsl:when>
                <xsl:when test="$type = 'errors'">
                  <xsl:apply-templates select=".//testsuite[error]" mode="alltests.error.row"/>
                  <xsl:apply-templates select=".//testcase[error]" mode="print.test">
                    <xsl:with-param name="show.class" select="'yes'"/>
                  </xsl:apply-templates>
                </xsl:when>
                <xsl:when test="$type = 'skipped'">
                  <xsl:apply-templates select=".//testcase[skipped]" mode="print.test">
                    <xsl:with-param name="show.class" select="'yes'"/>
                  </xsl:apply-templates>
                </xsl:when>
                <xsl:otherwise>
                  <xsl:apply-templates select=".//testsuite[error]" mode="alltests.error.row"/>
                  <xsl:apply-templates select=".//testcase" mode="print.test">
                    <xsl:with-param name="show.class" select="'yes'"/>
                  </xsl:apply-templates>
                </xsl:otherwise>
              </xsl:choose>
            </table>
        </body>
    </html>
</xsl:template>


<!-- ======================================================================
    This page is created for every testsuite class.
    It prints a summary of the testsuite and detailed information about
    testcase methods.
     ====================================================================== -->
<xsl:template match="testsuite" mode="class.details">
    <xsl:param name="type" select="'all'"/>
    <xsl:variable name="package.name" select="@package"/>
    <xsl:variable name="class.name"><xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></xsl:variable>
    <html>
        <head>
          <title>Unit Test Results: <xsl:value-of select="$class.name"/></title>
            <xsl:call-template name="create.stylesheet.link">
                <xsl:with-param name="package.name" select="$package.name"/>
            </xsl:call-template>
       <script type="text/javascript" language="JavaScript">
        var TestCases = new Array();
        var cur;
        <xsl:apply-templates select="properties"/>
       </script>
       <script type="text/javascript" language="JavaScript"><![CDATA[
        function displayProperties (name) {
          var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
          var doc = win.document;
          doc.open();
          doc.write("<html><head><title>Properties of " + name + "</title>");
          doc.write("<style type=\"text/css\">");
          doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
          doc.write("table tr td, table tr th { font-size: 68%; }");
          doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
          doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
          doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
          doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
          doc.write("</style>");
          doc.write("</head><body>");
          doc.write("<h3>Properties of " + name + "</h3>");
          doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
          doc.write("<table class='properties'>");
          doc.write("<tr><th>Name</th><th>Value</th></tr>");
          for (prop in TestCases[name]) {
            doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
          }
          doc.write("</table>");
          doc.write("</body></html>");
          doc.close();
          win.focus();
        }
      ]]>
      </script>
        </head>
        <body>
            <xsl:call-template name="pageHeader"/>
            <h3>Class <xsl:value-of select="$class.name"/></h3>


            <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
                <xsl:call-template name="testsuite.test.header"/>
                <xsl:apply-templates select="." mode="print.test"/>
            </table>

	    <xsl:choose>
		<xsl:when test="$type = 'fails'">
		    <h2>Failures</h2>
		</xsl:when>
		<xsl:when test="$type = 'errors'">
		    <h2>Errors</h2>
		</xsl:when>
		<xsl:when test="$type = 'skipped'">
		    <h2>Skipped</h2>
		</xsl:when>
		<xsl:otherwise>
		    <h2>Tests</h2>
		</xsl:otherwise>
	    </xsl:choose>
            <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
		<xsl:call-template name="testcase.test.header"/>
		<!--
                test can even not be started at all (failure to load the class)
		so report the error directly
		-->
                <xsl:if test="./error">
                    <tr class="Error">
                        <td colspan="4"><xsl:apply-templates select="./error"/></td>
                    </tr>
                </xsl:if>
		<xsl:choose>
		    <xsl:when test="$type = 'fails'">
			<xsl:apply-templates select="./testcase[failure]" mode="print.test"/>
		    </xsl:when>
		    <xsl:when test="$type = 'errors'">
			<xsl:apply-templates select="./testcase[error]" mode="print.test"/>
		    </xsl:when>
		    <xsl:when test="$type = 'skipped'">
			<xsl:apply-templates select="./testcase[skipped]" mode="print.test"/>
		    </xsl:when>
		    <xsl:otherwise>
			<xsl:apply-templates select="./testcase" mode="print.test"/>
		    </xsl:otherwise>
		</xsl:choose>
            </table>
            <div class="Properties">
                <a>
                    <xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
                    Properties &#187;
                </a>
            </div>
            <xsl:if test="string-length(./system-out)!=0">
                <div class="Properties">
                    <a>
                        <xsl:attribute name="href">./<xsl:value-of select="@id"/>_<xsl:value-of select="@name"/>-out.html</xsl:attribute>
                        System.out &#187;
                    </a>
                </div>
            </xsl:if>
            <xsl:if test="string-length(./system-err)!=0">
                <div class="Properties">
                    <a>
                        <xsl:attribute name="href">./<xsl:value-of select="@id"/>_<xsl:value-of select="@name"/>-err.html</xsl:attribute>
                        System.err &#187;
                    </a>
                </div>
            </xsl:if>
        </body>
    </html>
</xsl:template>

  <!--
   Write properties into a JavaScript data structure.
   This is based on the original idea by Erik Hatcher (ehatcher@apache.org)
   -->
  <xsl:template match="properties">
    cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
    <xsl:for-each select="property">
    <xsl:sort select="@name"/>
        cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
    </xsl:for-each>
  </xsl:template>


<!-- ======================================================================
    This page is created for every package.
    It prints the name of all classes that belongs to this package.
    @param name the package name to print classes.
     ====================================================================== -->
<!-- list of classes in a package -->
<xsl:template name="classes.list">
    <xsl:param name="name"/>
    <html>
        <head>
            <title>Unit Test Classes: <xsl:value-of select="$name"/></title>
            <xsl:call-template name="create.stylesheet.link">
                <xsl:with-param name="package.name" select="$name"/>
            </xsl:call-template>
        </head>
        <body>
            <table width="100%">
                <tr>
                    <td nowrap="nowrap">
                        <h2><a href="package-summary.html" target="classFrame">
                            <xsl:value-of select="$name"/>
                            <xsl:if test="$name = ''">&lt;none&gt;</xsl:if>
                        </a></h2>
                    </td>
                </tr>
            </table>

            <h2>Classes</h2>
            <table width="100%">
                <xsl:for-each select="/testsuites/testsuite[./@package = $name]">
                    <xsl:sort select="@name"/>
                    <tr>
                        <td nowrap="nowrap">
                            <a href="{@id}_{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
                        </td>
                    </tr>
                </xsl:for-each>
            </table>
        </body>
    </html>
</xsl:template>


<!--
    Creates an all-classes.html file that contains a link to all package-summary.html
    on each class.
-->
<xsl:template match="testsuites" mode="all.classes">
    <html>
        <head>
            <title>All Unit Test Classes</title>
            <xsl:call-template name="create.stylesheet.link">
                <xsl:with-param name="package.name"/>
            </xsl:call-template>
        </head>
        <body>
            <h2>Classes</h2>
            <table width="100%">
                <xsl:apply-templates select="testsuite" mode="all.classes">
                    <xsl:sort select="@name"/>
                </xsl:apply-templates>
            </table>
        </body>
    </html>
</xsl:template>

<xsl:template match="testsuite" mode="all.classes">
    <xsl:variable name="package.name" select="@package"/>
    <tr>
        <td nowrap="nowrap">
            <a target="classFrame">
                <xsl:attribute name="href">
                    <xsl:if test="not($package.name='')">
                        <xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
                    </xsl:if><xsl:value-of select="@id"/>_<xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
                </xsl:attribute>
                <xsl:value-of select="@name"/>
            </a>
        </td>
    </tr>
</xsl:template>


<!--
    Creates an html file that contains a link to all package-summary.html files on
    each package existing on testsuites.
    @bug there will be a problem here, I don't know yet how to handle unnamed package :(
-->
<xsl:template match="testsuites" mode="all.packages">
    <html>
        <head>
            <title>All Unit Test Packages</title>
            <xsl:call-template name="create.stylesheet.link">
                <xsl:with-param name="package.name"/>
            </xsl:call-template>
        </head>
        <body>
            <h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
            <h2>Packages</h2>
            <table width="100%">
                <xsl:apply-templates select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]" mode="all.packages">
                    <xsl:sort select="@package"/>
                </xsl:apply-templates>
            </table>
        </body>
    </html>
</xsl:template>

<xsl:template match="testsuite" mode="all.packages">
    <tr>
        <td nowrap="nowrap">
            <a href="./{translate(@package,'.','/')}/package-summary.html" target="classFrame">
                <xsl:value-of select="@package"/>
                <xsl:if test="@package = ''">&lt;none&gt;</xsl:if>
            </a>
        </td>
    </tr>
</xsl:template>


<xsl:template match="testsuites" mode="overview.packages">
    <html>
        <head>
            <title>Unit Test Results: Summary</title>
            <xsl:call-template name="create.stylesheet.link">
                <xsl:with-param name="package.name"/>
            </xsl:call-template>
        </head>
        <body>
        <xsl:attribute name="onload">open('allclasses-frame.html','classListFrame')</xsl:attribute>
        <xsl:call-template name="pageHeader"/>
        <h2>Summary</h2>
        <xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
        <xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
        <xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
        <xsl:variable name="skippedCount" select="sum(testsuite/@skipped)" />
        <xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
        <xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
        <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
        <tr valign="top">
            <th>Tests</th>
            <th>Failures</th>
            <th>Errors</th>
            <th>Skipped</th>
            <th>Success rate</th>
            <th>Time</th>
        </tr>
        <tr valign="top">
            <xsl:attribute name="class">
                <xsl:choose>
                    <xsl:when test="$errorCount &gt; 0">Error</xsl:when>
                    <xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
                    <xsl:otherwise>Pass</xsl:otherwise>
                </xsl:choose>
            </xsl:attribute>
            <td><a title="Display all tests" href="all-tests.html"><xsl:value-of select="$testCount"/></a></td>
            <td><a title="Display all failures" href="alltests-fails.html"><xsl:value-of select="$failureCount"/></a></td>
            <td><a title="Display all errors" href="alltests-errors.html"><xsl:value-of select="$errorCount"/></a></td>
            <td><a title="Display all skipped test" href="alltests-skipped.html"><xsl:value-of select="$skippedCount" /></a></td>
            <td>
                <xsl:call-template name="display-percent">
                    <xsl:with-param name="value" select="$successRate"/>
                </xsl:call-template>
            </td>
            <td>
                <xsl:call-template name="display-time">
                    <xsl:with-param name="value" select="$timeCount"/>
                </xsl:call-template>
            </td>
        </tr>
        </table>
        <table border="0" width="95%">
        <tr>
        <td style="text-align: justify;">
        Note: <em>failures</em> are anticipated and checked for with assertions while <em>errors</em> are unanticipated.
        </td>
        </tr>
        </table>

        <h2>Packages</h2>
        <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
            <xsl:call-template name="testsuite.test.header"/>
            <xsl:for-each select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
                <xsl:sort select="@package" order="ascending"/>
                <!-- get the node set containing all testsuites that have the same package -->
                <xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = current()/@package]"/>
                <tr valign="top">
                    <!-- display a failure if there is any failure/error in the package -->
                    <xsl:attribute name="class">
                        <xsl:choose>
                            <xsl:when test="sum($insamepackage/@errors) &gt; 0">Error</xsl:when>
                            <xsl:when test="sum($insamepackage/@failures) &gt; 0">Failure</xsl:when>
                            <xsl:otherwise>Pass</xsl:otherwise>
                        </xsl:choose>
                    </xsl:attribute>
                    <td><a href="./{translate(@package,'.','/')}/package-summary.html">
                        <xsl:value-of select="@package"/>
                        <xsl:if test="@package = ''">&lt;none&gt;</xsl:if>
                    </a></td>
                    <td><xsl:value-of select="sum($insamepackage/@tests)"/></td>
                    <td><xsl:value-of select="sum($insamepackage/@errors)"/></td>
                    <td><xsl:value-of select="sum($insamepackage/@failures)"/></td>
                    <td><xsl:value-of select="sum($insamepackage/@skipped)" /></td>
                    <td>
                    <xsl:call-template name="display-time">
                        <xsl:with-param name="value" select="sum($insamepackage/@time)"/>
                    </xsl:call-template>
                    </td>
                    <td><xsl:value-of select="$insamepackage/@timestamp"/></td>
                    <td><xsl:value-of select="$insamepackage/@hostname"/></td>
                </tr>
            </xsl:for-each>
        </table>
        </body>
        </html>
</xsl:template>


<xsl:template name="package.summary">
    <xsl:param name="name"/>
    <html>
        <head>
            <xsl:call-template name="create.stylesheet.link">
                <xsl:with-param name="package.name" select="$name"/>
            </xsl:call-template>
        </head>
        <body>
            <xsl:attribute name="onload">open('package-frame.html','classListFrame')</xsl:attribute>
            <xsl:call-template name="pageHeader"/>
            <h3>Package <xsl:value-of select="$name"/></h3>

            <!--table border="0" cellpadding="5" cellspacing="2" width="95%">
                <xsl:call-template name="class.metrics.header"/>
                <xsl:apply-templates select="." mode="print.metrics"/>
            </table-->

            <xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = $name]"/>
            <xsl:if test="count($insamepackage) &gt; 0">
                <h2>Classes</h2>
                <p>
                <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
                    <xsl:call-template name="testsuite.test.header"/>
                    <xsl:apply-templates select="$insamepackage" mode="print.test">
                        <xsl:sort select="@name"/>
                    </xsl:apply-templates>
                </table>
                </p>
            </xsl:if>
        </body>
    </html>
</xsl:template>


<!--
    transform string like a.b.c to ../../../
    @param path the path to transform into a descending directory path
-->
<xsl:template name="path">
    <xsl:param name="path"/>
    <xsl:if test="contains($path,'.')">
        <xsl:text>../</xsl:text>
        <xsl:call-template name="path">
            <xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
        </xsl:call-template>
    </xsl:if>
    <xsl:if test="not(contains($path,'.')) and not($path = '')">
        <xsl:text>../</xsl:text>
    </xsl:if>
</xsl:template>


<!-- create the link to the stylesheet based on the package name -->
<xsl:template name="create.stylesheet.link">
    <xsl:param name="package.name"/>
    <link rel="stylesheet" type="text/css" title="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></link>
</xsl:template>


<!-- Page HEADER -->
<xsl:template name="pageHeader">
    <h1><xsl:value-of select="$TITLE"/></h1>
    <table width="100%">
    <tr>
        <td align="left"></td>
        <td align="right">Designed for use with <a href="https://www.junit.org/">JUnit</a> and <a href="https://ant.apache.org/">Ant</a>.</td>
    </tr>
    </table>
    <hr size="1"/>
</xsl:template>

<!-- class header -->
<xsl:template name="testsuite.test.header">
    <tr valign="top">
        <th width="80%">Name</th>
        <th>Tests</th>
        <th>Errors</th>
        <th>Failures</th>
        <th>Skipped</th>
        <th nowrap="nowrap">Time(s)</th>
        <th nowrap="nowrap">Time Stamp</th>
        <th>Host</th>
    </tr>
</xsl:template>

<!-- method header -->
<xsl:template name="testcase.test.header">
    <xsl:param name="show.class" select="''"/>
    <tr valign="top">
	<xsl:if test="boolean($show.class)">
	    <th>Class</th>
	</xsl:if>
        <th>Name</th>
        <th>Status</th>
        <th width="80%">Type</th>
        <th nowrap="nowrap">Time(s)</th>
    </tr>
</xsl:template>


<!-- class information -->
<xsl:template match="testsuite" mode="print.test">
    <tr valign="top">
        <xsl:attribute name="class">
            <xsl:choose>
                <xsl:when test="@errors[.&gt; 0]">Error</xsl:when>
                <xsl:when test="@failures[.&gt; 0]">Failure</xsl:when>
                <xsl:otherwise>Pass</xsl:otherwise>
            </xsl:choose>
        </xsl:attribute>
        <td><a title="Display all tests" href="{@id}_{@name}.html"><xsl:value-of select="@name"/></a></td>
        <td><a title="Display all tests" href="{@id}_{@name}.html"><xsl:apply-templates select="@tests"/></a></td>
        <td>
	    <xsl:choose>
		<xsl:when test="@errors != 0">
		    <a title="Display only errors" href="{@id}_{@name}-errors.html"><xsl:apply-templates select="@errors"/></a>
		</xsl:when>
		<xsl:otherwise>
		    <xsl:apply-templates select="@errors"/>
		</xsl:otherwise>
	    </xsl:choose>
		</td>
	    <td>
	    <xsl:choose>
		<xsl:when test="@failures != 0">
		    <a title="Display only failures" href="{@id}_{@name}-fails.html"><xsl:apply-templates select="@failures"/></a>
		</xsl:when>
		<xsl:otherwise>
		    <xsl:apply-templates select="@failures"/>
		</xsl:otherwise>
	    </xsl:choose>
		</td>
	    <td>
	    <xsl:choose>
		<xsl:when test="@skipped != 0">
		    <a title="Display only skipped tests" href="{@id}_{@name}-skipped.html"><xsl:apply-templates select="@skipped"/></a>
		</xsl:when>
		<xsl:otherwise>
		    <xsl:apply-templates select="@skipped"/>
		</xsl:otherwise>
	    </xsl:choose>
		</td>
        <td><xsl:call-template name="display-time">
                <xsl:with-param name="value" select="@time"/>
            </xsl:call-template>
        </td>
        <td><xsl:apply-templates select="@timestamp"/></td>
        <td><xsl:apply-templates select="@hostname"/></td>
    </tr>
</xsl:template>

<xsl:template match="testcase" mode="print.test">
    <xsl:param name="show.class" select="''"/>
    <tr valign="top">
        <xsl:attribute name="class">
            <xsl:choose>
                <xsl:when test="error">Error</xsl:when>
                <xsl:when test="failure">Failure</xsl:when>
                <xsl:otherwise>TableRowColor</xsl:otherwise>
            </xsl:choose>
        </xsl:attribute>
	<xsl:variable name="class.href">
	    <xsl:value-of select="concat(translate(../@package,'.','/'), '/', ../@id, '_', ../@name, '.html')"/>
	</xsl:variable>
	<xsl:if test="boolean($show.class)">
	    <td><a href="{$class.href}"><xsl:value-of select="../@name"/></a></td>
	</xsl:if>
        <td>
	    <a name="{@name}"/>
	    <xsl:choose>
		<xsl:when test="boolean($show.class)">
		    <a href="{concat($class.href, '#', @name)}"><xsl:value-of select="@name"/></a>
		</xsl:when>
		<xsl:otherwise>
		    <xsl:value-of select="@name"/>
		</xsl:otherwise>
	    </xsl:choose>
	</td>
        <xsl:choose>
            <xsl:when test="failure">
                <td>Failure</td>
                <td><xsl:apply-templates select="failure"/></td>
            </xsl:when>
            <xsl:when test="error">
                <td>Error</td>
                <td><xsl:apply-templates select="error"/></td>
            </xsl:when>
            <xsl:when test="skipped">
                <td>Skipped</td>
                <td><xsl:apply-templates select="skipped"/></td>
            </xsl:when>
            <xsl:otherwise>
                <td>Success</td>
                <td></td>
            </xsl:otherwise>
        </xsl:choose>
        <td>
            <xsl:call-template name="display-time">
                <xsl:with-param name="value" select="@time"/>
            </xsl:call-template>
        </td>
    </tr>
</xsl:template>


<!-- Note : the below template skipped, error and failure are the same style
            so just call the same style store in the toolkit template -->
<xsl:template match="failure">
    <xsl:call-template name="display-failures"/>
</xsl:template>

<xsl:template match="error">
    <xsl:call-template name="display-failures"/>
</xsl:template>

<xsl:template match="skipped">
    <xsl:call-template name="display-failures"/>
</xsl:template>

<!-- Style for the error and failure in the testcase template -->
<xsl:template name="display-failures">
    <xsl:choose>
        <xsl:when test="not(@message)">N/A</xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="@message"/>
        </xsl:otherwise>
    </xsl:choose>
    <!-- display the stacktrace -->
    <br/><br/>
    <code>
        <xsl:call-template name="br-replace">
            <xsl:with-param name="word" select="."/>
        </xsl:call-template>
    </code>
    <!-- the latter is better but might be problematic for non-21" monitors... -->
    <!--pre><xsl:value-of select="."/></pre-->
</xsl:template>

<xsl:template name="JS-escape">
    <xsl:param name="string"/>
    <xsl:param name="tmp1" select="string:replaceAll(string:new(string($string)),'\\','\\\\')"/>
    <xsl:param name="tmp2" select="string:replaceAll(string:new(string($tmp1)),&quot;'&quot;,&quot;\\&apos;&quot;)"/>
    <xsl:param name="tmp3" select="string:replaceAll(string:new(string($tmp2)),&quot;&#10;&quot;,'\\n')"/>
    <xsl:param name="tmp4" select="string:replaceAll(string:new(string($tmp3)),&quot;&#13;&quot;,'\\r')"/>
    <xsl:value-of select="$tmp4"/>
</xsl:template>


<!--
    template that will convert a carriage return into a br tag
    @param word the text from which to convert CR to BR tag
-->
<xsl:template name="br-replace">
    <xsl:param name="word"/>
    <xsl:param name="splitlimit">32</xsl:param>
    <xsl:variable name="secondhalfstartindex" select="(string-length($word)+(string-length($word) mod 2)) div 2"/>
    <xsl:variable name="secondhalfword" select="substring($word, $secondhalfstartindex)"/>
    <!-- When word is very big, a recursive replace is very heap/stack expensive, so subdivide on line break after middle of string -->
    <xsl:choose>
      <xsl:when test="(string-length($word) > $splitlimit) and (contains($secondhalfword, '&#xa;'))">
        <xsl:variable name="secondhalfend" select="substring-after($secondhalfword, '&#xa;')"/>
        <xsl:variable name="firsthalflen" select="string-length($word) - string-length($secondhalfword)"/>
        <xsl:variable name="firsthalfword" select="substring($word, 1, $firsthalflen)"/>
        <xsl:variable name="firsthalfend" select="substring-before($secondhalfword, '&#xa;')"/>
        <xsl:call-template name="br-replace">
            <xsl:with-param name="word" select="concat($firsthalfword,$firsthalfend)"/>
        </xsl:call-template>
        <br/>
        <xsl:call-template name="br-replace">
            <xsl:with-param name="word" select="$secondhalfend"/>
        </xsl:call-template>
      </xsl:when>
      <xsl:when test="contains($word, '&#xa;')">
        <xsl:value-of select="substring-before($word, '&#xa;')"/>
        <br/>
        <xsl:call-template name="br-replace">
          <xsl:with-param name="word" select="substring-after($word, '&#xa;')"/>
        </xsl:call-template>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="$word"/>
      </xsl:otherwise>
    </xsl:choose>
</xsl:template>

<xsl:template name="display-time">
    <xsl:param name="value"/>
    <xsl:value-of select="format-number($value,'0.000')"/>
</xsl:template>

<xsl:template name="display-percent">
    <xsl:param name="value"/>
    <xsl:value-of select="format-number($value,'0.00%')"/>
</xsl:template>

<xsl:template match="testsuite" mode="alltests.error.row">
  <xsl:variable name="package.dir">
    <xsl:if test="not(@package = '')"><xsl:value-of select="translate(@package,'.','/')"/><xsl:text>/</xsl:text></xsl:if>
  </xsl:variable>
  <xsl:variable name="class.href">
    <xsl:value-of select="concat($package.dir, @id, '_', @name, '.html')"/>
  </xsl:variable>
  <tr class="Error">
    <td><a href="{$class.href}"><xsl:value-of select="@name"/></a></td>
    <td colspan="3"><xsl:apply-templates select="./error"/></td>
  </tr>
</xsl:template>

</xsl:stylesheet>
PK��6YYIorg/apache/tools/ant/taskdefs/optional/junit/xsl/junit-noframes-saxon.xsl<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">
    <xsl:character-map name="no-control-characters">
        <xsl:output-character character="&#127;" string="&amp;#127;"/>
        <xsl:output-character character="&#128;" string="&amp;#128;"/>
        <xsl:output-character character="&#129;" string="&amp;#129;"/>
        <xsl:output-character character="&#130;" string="&amp;#130;"/>
        <xsl:output-character character="&#131;" string="&amp;#131;"/>
        <xsl:output-character character="&#132;" string="&amp;#132;"/>
        <xsl:output-character character="&#133;" string="&amp;#133;"/>
        <xsl:output-character character="&#134;" string="&amp;#134;"/>
        <xsl:output-character character="&#135;" string="&amp;#135;"/>
        <xsl:output-character character="&#136;" string="&amp;#136;"/>
        <xsl:output-character character="&#137;" string="&amp;#137;"/>
        <xsl:output-character character="&#138;" string="&amp;#138;"/>
        <xsl:output-character character="&#139;" string="&amp;#139;"/>
        <xsl:output-character character="&#140;" string="&amp;#140;"/>
        <xsl:output-character character="&#141;" string="&amp;#141;"/>
        <xsl:output-character character="&#142;" string="&amp;#142;"/>
        <xsl:output-character character="&#143;" string="&amp;#143;"/>
        <xsl:output-character character="&#144;" string="&amp;#144;"/>
        <xsl:output-character character="&#145;" string="&amp;#145;"/>
        <xsl:output-character character="&#146;" string="&amp;#146;"/>
        <xsl:output-character character="&#147;" string="&amp;#147;"/>
        <xsl:output-character character="&#148;" string="&amp;#148;"/>
        <xsl:output-character character="&#149;" string="&amp;#149;"/>
        <xsl:output-character character="&#150;" string="&amp;#150;"/>
        <xsl:output-character character="&#151;" string="&amp;#151;"/>
        <xsl:output-character character="&#152;" string="&amp;#152;"/>
        <xsl:output-character character="&#153;" string="&amp;#153;"/>
        <xsl:output-character character="&#154;" string="&amp;#154;"/>
        <xsl:output-character character="&#155;" string="&amp;#155;"/>
        <xsl:output-character character="&#156;" string="&amp;#156;"/>
        <xsl:output-character character="&#157;" string="&amp;#157;"/>
        <xsl:output-character character="&#158;" string="&amp;#158;"/>
        <xsl:output-character character="&#159;" string="&amp;#159;"/>
    </xsl:character-map>
<xsl:output method="html" indent="yes" encoding="UTF-8" use-character-maps="no-control-characters"
  doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />
<xsl:decimal-format decimal-separator="." grouping-separator="," />
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       https://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
 -->

<xsl:param name="TITLE">Unit Test Results.</xsl:param>

<!--

 Sample stylesheet to be used with Ant JUnitReport output.

 It creates a non-framed report that can be useful to send via
 e-mail or such.

-->
<xsl:template match="testsuites">
    <html>
        <head>
            <title><xsl:value-of select="$TITLE"/></title>
    <style type="text/css">
      body {
        font:normal 68% verdana,arial,helvetica;
        color:#000000;
      }
      table tr td, table tr th {
          font-size: 68%;
      }
      table.details tr th{
        font-weight: bold;
        text-align:left;
        background:#a6caf0;
      }
      table.details tr td{
        background:#eeeee0;
      }

      p {
        line-height:1.5em;
        margin-top:0.5em; margin-bottom:1.0em;
      }
      h1 {
        margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
      }
      h2 {
        margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
      }
      h3 {
        margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
      }
      h4 {
        margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
      }
      h5 {
        margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
      }
      h6 {
        margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
      }
      .Error {
        font-weight:bold; color:red;
      }
      .Failure {
        font-weight:bold; color:purple;
      }
      .Properties {
        text-align:right;
      }
      </style>
      <script type="text/javascript" language="JavaScript">
        var TestCases = new Array();
        var cur;
        <xsl:for-each select="./testsuite">
            <xsl:apply-templates select="properties"/>
        </xsl:for-each>

       </script>
       <script type="text/javascript" language="JavaScript"><![CDATA[
        function displayProperties (name) {
          var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
          var doc = win.document;
          doc.open();
          doc.write("<html><head><title>Properties of " + name + "</title>");
          doc.write("<style>")
          doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
          doc.write("table tr td, table tr th { font-size: 68%; }");
          doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
          doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
          doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
          doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
          doc.write("</style>");
          doc.write("</head><body>");
          doc.write("<h3>Properties of " + name + "</h3>");
          doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
          doc.write("<table class='properties'>");
          doc.write("<tr><th>Name</th><th>Value</th></tr>");
          for (prop in TestCases[name]) {
            doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
          }
          doc.write("</table>");
          doc.write("</body></html>");
          doc.close();
          win.focus();
        }
      ]]>
      </script>
        </head>
        <body>
            <a name="top"></a>
            <xsl:call-template name="pageHeader"/>

            <!-- Summary part -->
            <xsl:call-template name="summary"/>
            <hr size="1" width="95%" align="left"/>

            <!-- Package List part -->
            <xsl:call-template name="packagelist"/>
            <hr size="1" width="95%" align="left"/>

            <!-- For each package create its part -->
            <xsl:call-template name="packages"/>
            <hr size="1" width="95%" align="left"/>

            <!-- For each class create the  part -->
            <xsl:call-template name="classes"/>

        </body>
    </html>
</xsl:template>



    <!-- ================================================================== -->
    <!-- Write a list of all packages with an hyperlink to the anchor of    -->
    <!-- of the package name.                                               -->
    <!-- ================================================================== -->
    <xsl:template name="packagelist">
        <h2>Packages</h2>
        Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.
        <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
            <xsl:call-template name="testsuite.test.header"/>
            <!-- list all packages recursively -->
            <xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
                <xsl:sort select="@package"/>
                <xsl:variable name="testsuites-in-package" select="/testsuites/testsuite[./@package = current()/@package]"/>
                <xsl:variable name="testCount" select="sum($testsuites-in-package/@tests)"/>
                <xsl:variable name="errorCount" select="sum($testsuites-in-package/@errors)"/>
                <xsl:variable name="failureCount" select="sum($testsuites-in-package/@failures)"/>
                <xsl:variable name="skippedCount" select="sum($testsuites-in-package/@skipped)" />
                <xsl:variable name="timeCount" select="sum($testsuites-in-package/@time)"/>

                <!-- write a summary for the package -->
                <tr valign="top">
                    <!-- set a nice color depending if there is an error/failure -->
                    <xsl:attribute name="class">
                        <xsl:choose>
                            <xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
                            <xsl:when test="$errorCount &gt; 0">Error</xsl:when>
                        </xsl:choose>
                    </xsl:attribute>
                    <td><a href="#{@package}"><xsl:value-of select="@package"/></a></td>
                    <td><xsl:value-of select="$testCount"/></td>
                    <td><xsl:value-of select="$errorCount"/></td>
                    <td><xsl:value-of select="$failureCount"/></td>
                    <td><xsl:value-of select="$skippedCount" /></td>
                    <td>
                    <xsl:call-template name="display-time">
                        <xsl:with-param name="value" select="$timeCount"/>
                    </xsl:call-template>
                    </td>
                    <td><xsl:value-of select="$testsuites-in-package/@timestamp"/></td>
                    <td><xsl:value-of select="$testsuites-in-package/@hostname"/></td>
                </tr>
            </xsl:for-each>
        </table>
    </xsl:template>


    <!-- ================================================================== -->
    <!-- Write a package level report                                       -->
    <!-- It creates a table with values from the document:                  -->
    <!-- Name | Tests | Errors | Failures | Time                            -->
    <!-- ================================================================== -->
    <xsl:template name="packages">
        <!-- create an anchor to this package name -->
        <xsl:for-each select="/testsuites/testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
            <xsl:sort select="@package"/>
                <a name="{@package}"></a>
                <h3>Package <xsl:value-of select="@package"/></h3>

                <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
                    <xsl:call-template name="testsuite.test.header"/>

                    <!-- match the testsuites of this package -->
                    <xsl:apply-templates select="/testsuites/testsuite[./@package = current()/@package]" mode="print.test"/>
                </table>
                <a href="#top">Back to top</a>
                <p/>
                <p/>
        </xsl:for-each>
    </xsl:template>

    <xsl:template name="classes">
        <xsl:for-each select="testsuite">
            <xsl:sort select="@name"/>
            <!-- create an anchor to this class name -->
            <a name="{@name}"></a>
            <h3>TestCase <xsl:value-of select="@name"/></h3>

            <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
              <xsl:call-template name="testcase.test.header"/>
              <!--
              test can even not be started at all (failure to load the class)
              so report the error directly
              -->
                <xsl:if test="./error">
                    <tr class="Error">
                        <td colspan="4"><xsl:apply-templates select="./error"/></td>
                    </tr>
                </xsl:if>
                <xsl:apply-templates select="./testcase" mode="print.test"/>
            </table>
            <div class="Properties">
                <a>
                    <xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
                    Properties &#187;
                </a>
            </div>
            <p/>

            <a href="#top">Back to top</a>
        </xsl:for-each>
    </xsl:template>

    <xsl:template name="summary">
        <h2>Summary</h2>
        <xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
        <xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
        <xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
        <xsl:variable name="skippedCount" select="sum(testsuite/@skipped)" />
        <xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
        <xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
        <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
        <tr valign="top">
            <th>Tests</th>
            <th>Failures</th>
            <th>Errors</th>
            <th>Skipped</th>
            <th>Success rate</th>
            <th>Time</th>
        </tr>
        <tr valign="top">
            <xsl:attribute name="class">
                <xsl:choose>
                    <xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
                    <xsl:when test="$errorCount &gt; 0">Error</xsl:when>
                </xsl:choose>
            </xsl:attribute>
            <td><xsl:value-of select="$testCount"/></td>
            <td><xsl:value-of select="$failureCount"/></td>
            <td><xsl:value-of select="$errorCount"/></td>
            <td><xsl:value-of select="$skippedCount" /></td>
            <td>
                <xsl:call-template name="display-percent">
                    <xsl:with-param name="value" select="$successRate"/>
                </xsl:call-template>
            </td>
            <td>
                <xsl:call-template name="display-time">
                    <xsl:with-param name="value" select="$timeCount"/>
                </xsl:call-template>
            </td>

        </tr>
        </table>
        <table border="0" width="95%">
        <tr>
        <td style="text-align: justify;">
        Note: <i>failures</i> are anticipated and checked for with assertions while <i>errors</i> are unanticipated.
        </td>
        </tr>
        </table>
    </xsl:template>

  <!--
   Write properties into a JavaScript data structure.
   This is based on the original idea by Erik Hatcher (ehatcher@apache.org)
   -->
  <xsl:template match="properties">
    cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
    <xsl:for-each select="property">
    <xsl:sort select="@name"/>
        cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
    </xsl:for-each>
  </xsl:template>

<!-- Page HEADER -->
<xsl:template name="pageHeader">
    <h1><xsl:value-of select="$TITLE"/></h1>
    <table width="100%">
    <tr>
        <td align="left"></td>
        <td align="right">Designed for use with <a href='https://www.junit.org'>JUnit</a> and <a href='https://ant.apache.org/ant'>Ant</a>.</td>
    </tr>
    </table>
    <hr size="1"/>
</xsl:template>

<xsl:template match="testsuite" mode="header">
    <tr valign="top">
        <th width="80%">Name</th>
        <th>Tests</th>
        <th>Errors</th>
        <th>Failures</th>
        <th>Skipped</th>
        <th nowrap="nowrap">Time(s)</th>
    </tr>
</xsl:template>

<!-- class header -->
<xsl:template name="testsuite.test.header">
    <tr valign="top">
        <th width="80%">Name</th>
        <th>Tests</th>
        <th>Errors</th>
        <th>Failures</th>
        <th>Skipped</th>
        <th nowrap="nowrap">Time(s)</th>
        <th nowrap="nowrap">Time Stamp</th>
        <th>Host</th>
    </tr>
</xsl:template>

<!-- method header -->
<xsl:template name="testcase.test.header">
    <tr valign="top">
        <th>Name</th>
        <th>Status</th>
        <th width="80%">Type</th>
        <th nowrap="nowrap">Time(s)</th>
    </tr>
</xsl:template>


<!-- class information -->
<xsl:template match="testsuite" mode="print.test">
    <tr valign="top">
        <!-- set a nice color depending if there is an error/failure -->
        <xsl:attribute name="class">
            <xsl:choose>
                <xsl:when test="@failures[.&gt; 0]">Failure</xsl:when>
                <xsl:when test="@errors[.&gt; 0]">Error</xsl:when>
            </xsl:choose>
        </xsl:attribute>

        <!-- print testsuite information -->
        <td><a href="#{@name}"><xsl:value-of select="@name"/></a></td>
        <td><xsl:value-of select="@tests"/></td>
        <td><xsl:value-of select="@errors"/></td>
        <td><xsl:value-of select="@failures"/></td>
        <td><xsl:value-of select="@skipped" /></td>
        <td>
            <xsl:call-template name="display-time">
                <xsl:with-param name="value" select="@time"/>
            </xsl:call-template>
        </td>
        <td><xsl:apply-templates select="@timestamp"/></td>
        <td><xsl:apply-templates select="@hostname"/></td>
    </tr>
</xsl:template>

<xsl:template match="testcase" mode="print.test">
    <tr valign="top">
        <xsl:attribute name="class">
            <xsl:choose>
                <xsl:when test="failure | error">Error</xsl:when>
            </xsl:choose>
        </xsl:attribute>
        <td><xsl:value-of select="@name"/></td>
        <xsl:choose>
            <xsl:when test="failure">
                <td>Failure</td>
                <td><xsl:apply-templates select="failure"/></td>
            </xsl:when>
            <xsl:when test="error">
                <td>Error</td>
                <td><xsl:apply-templates select="error"/></td>
            </xsl:when>
            <xsl:when test="skipped">
            	<td>Skipped</td>
            	<td><xsl:apply-templates select="skipped"/></td>
            </xsl:when>
            <xsl:otherwise>
                <td>Success</td>
                <td></td>
            </xsl:otherwise>
        </xsl:choose>
        <td>
            <xsl:call-template name="display-time">
                <xsl:with-param name="value" select="@time"/>
            </xsl:call-template>
        </td>
    </tr>
</xsl:template>


<xsl:template match="failure">
    <xsl:call-template name="display-failures"/>
</xsl:template>

<xsl:template match="error">
    <xsl:call-template name="display-failures"/>
</xsl:template>

<xsl:template match="skipped">
    <xsl:call-template name="display-failures"/>
</xsl:template>

<!-- Style for the error, failure and skipped in the testcase template -->
<xsl:template name="display-failures">
    <xsl:choose>
        <xsl:when test="not(@message)">N/A</xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="@message"/>
        </xsl:otherwise>
    </xsl:choose>
    <!-- display the stacktrace -->
    <code>
        <br/><br/>
        <xsl:call-template name="br-replace">
            <xsl:with-param name="word" select="."/>
        </xsl:call-template>
    </code>
    <!-- the later is better but might be problematic for non-21" monitors... -->
    <!--pre><xsl:value-of select="."/></pre-->
</xsl:template>

<xsl:template name="JS-escape">
    <xsl:param name="string"/>
    <xsl:variable name="tmp1" select="replace($string,'\\','\\\\')"/>
    <xsl:variable name="tmp2" select="replace($tmp1,&quot;'&quot;,&quot;\\&apos;&quot;)"/>
    <xsl:variable name="tmp3" select="replace($tmp2,&quot;&#10;&quot;,'\\n')"/>
    <xsl:variable name="tmp4" select="replace($tmp3,&quot;&#13;&quot;,'\\r')"/>
    <xsl:value-of select="$tmp4"/>
</xsl:template>


<!--
    template that will convert a carriage return into a br tag
    @param word the text from which to convert CR to BR tag
-->
<xsl:template name="br-replace">
    <xsl:param name="word"/>
    <xsl:param name="splitlimit">32</xsl:param>
    <xsl:variable name="secondhalfstartindex" select="(string-length($word)+(string-length($word) mod 2)) div 2"/>
    <xsl:variable name="secondhalfword" select="substring($word, $secondhalfstartindex)"/>
    <!-- When word is very big, a recursive replace is very heap/stack expensive, so subdivide on line break after middle of string -->
    <xsl:choose>
      <xsl:when test="(string-length($word) > $splitlimit) and (contains($secondhalfword, '&#xa;'))">
        <xsl:variable name="secondhalfend" select="substring-after($secondhalfword, '&#xa;')"/>
        <xsl:variable name="firsthalflen" select="string-length($word) - string-length($secondhalfword)"/>
        <xsl:variable name="firsthalfword" select="substring($word, 1, $firsthalflen)"/>
        <xsl:variable name="firsthalfend" select="substring-before($secondhalfword, '&#xa;')"/>
        <xsl:call-template name="br-replace">
          <xsl:with-param name="word" select="concat($firsthalfword,$firsthalfend)"/>
        </xsl:call-template>
        <br/>
        <xsl:call-template name="br-replace">
          <xsl:with-param name="word" select="$secondhalfend"/>
        </xsl:call-template>
      </xsl:when>
      <xsl:when test="contains($word, '&#xa;')">
        <xsl:value-of select="substring-before($word, '&#xa;')"/>
        <br/>
        <xsl:call-template name="br-replace">
          <xsl:with-param name="word" select="substring-after($word, '&#xa;')"/>
        </xsl:call-template>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="$word"/>
      </xsl:otherwise>
    </xsl:choose>
</xsl:template>

<xsl:template name="display-time">
    <xsl:param name="value"/>
    <xsl:value-of select="format-number($value,'0.000')"/>
</xsl:template>

<xsl:template name="display-percent">
    <xsl:param name="value"/>
    <xsl:value-of select="format-number($value,'0.00%')"/>
</xsl:template>

</xsl:stylesheet>
PK���b�O�OCorg/apache/tools/ant/taskdefs/optional/junit/xsl/junit-noframes.xsl<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
        xmlns:lxslt="http://xml.apache.org/xslt"
        xmlns:string="xalan://java.lang.String">
<xsl:output method="html" indent="yes" encoding="UTF-8"
  doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />
<xsl:decimal-format decimal-separator="." grouping-separator="," />
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       https://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
 -->

<xsl:param name="TITLE">Unit Test Results.</xsl:param>

<!--

 Sample stylesheet to be used with Ant JUnitReport output.

 It creates a non-framed report that can be useful to send via
 e-mail or such.

-->
<xsl:template match="testsuites">
    <html>
        <head>
            <title><xsl:value-of select="$TITLE"/></title>
    <style type="text/css">
      body {
        font:normal 68% verdana,arial,helvetica;
        color:#000000;
      }
      table tr td, table tr th {
          font-size: 68%;
      }
      table.details tr th{
        font-weight: bold;
        text-align:left;
        background:#a6caf0;
      }
      table.details tr td{
        background:#eeeee0;
      }

      p {
        line-height:1.5em;
        margin-top:0.5em; margin-bottom:1.0em;
      }
      h1 {
        margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
      }
      h2 {
        margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
      }
      h3 {
        margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
      }
      h4 {
        margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
      }
      h5 {
        margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
      }
      h6 {
        margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
      }
      .Error {
        font-weight:bold; color:red;
      }
      .Failure {
        font-weight:bold; color:purple;
      }
      .Properties {
        text-align:right;
      }
      </style>
      <script type="text/javascript" language="JavaScript">
        var TestCases = new Array();
        var cur;
        <xsl:for-each select="./testsuite">
            <xsl:apply-templates select="properties"/>
        </xsl:for-each>

       </script>
       <script type="text/javascript" language="JavaScript"><![CDATA[
        function displayProperties (name) {
          var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
          var doc = win.document;
          doc.open();
          doc.write("<html><head><title>Properties of " + name + "</title>");
          doc.write("<style>")
          doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
          doc.write("table tr td, table tr th { font-size: 68%; }");
          doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
          doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
          doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
          doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
          doc.write("</style>");
          doc.write("</head><body>");
          doc.write("<h3>Properties of " + name + "</h3>");
          doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
          doc.write("<table class='properties'>");
          doc.write("<tr><th>Name</th><th>Value</th></tr>");
          for (prop in TestCases[name]) {
            doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
          }
          doc.write("</table>");
          doc.write("</body></html>");
          doc.close();
          win.focus();
        }
      ]]>
      </script>
        </head>
        <body>
            <a name="top"></a>
            <xsl:call-template name="pageHeader"/>

            <!-- Summary part -->
            <xsl:call-template name="summary"/>
            <hr size="1" width="95%" align="left"/>

            <!-- Package List part -->
            <xsl:call-template name="packagelist"/>
            <hr size="1" width="95%" align="left"/>

            <!-- For each package create its part -->
            <xsl:call-template name="packages"/>
            <hr size="1" width="95%" align="left"/>

            <!-- For each class create the  part -->
            <xsl:call-template name="classes"/>

        </body>
    </html>
</xsl:template>



    <!-- ================================================================== -->
    <!-- Write a list of all packages with an hyperlink to the anchor of    -->
    <!-- of the package name.                                               -->
    <!-- ================================================================== -->
    <xsl:template name="packagelist">
        <h2>Packages</h2>
        Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.
        <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
            <xsl:call-template name="testsuite.test.header"/>
            <!-- list all packages recursively -->
            <xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
                <xsl:sort select="@package"/>
                <xsl:variable name="testsuites-in-package" select="/testsuites/testsuite[./@package = current()/@package]"/>
                <xsl:variable name="testCount" select="sum($testsuites-in-package/@tests)"/>
                <xsl:variable name="errorCount" select="sum($testsuites-in-package/@errors)"/>
                <xsl:variable name="failureCount" select="sum($testsuites-in-package/@failures)"/>
                <xsl:variable name="skippedCount" select="sum($testsuites-in-package/@skipped)" />
                <xsl:variable name="timeCount" select="sum($testsuites-in-package/@time)"/>

                <!-- write a summary for the package -->
                <tr valign="top">
                    <!-- set a nice color depending if there is an error/failure -->
                    <xsl:attribute name="class">
                        <xsl:choose>
                            <xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
                            <xsl:when test="$errorCount &gt; 0">Error</xsl:when>
                        </xsl:choose>
                    </xsl:attribute>
                    <td><a href="#{@package}"><xsl:value-of select="@package"/></a></td>
                    <td><xsl:value-of select="$testCount"/></td>
                    <td><xsl:value-of select="$errorCount"/></td>
                    <td><xsl:value-of select="$failureCount"/></td>
                    <td><xsl:value-of select="$skippedCount" /></td>
                    <td>
                    <xsl:call-template name="display-time">
                        <xsl:with-param name="value" select="$timeCount"/>
                    </xsl:call-template>
                    </td>
                    <td><xsl:value-of select="$testsuites-in-package/@timestamp"/></td>
                    <td><xsl:value-of select="$testsuites-in-package/@hostname"/></td>
                </tr>
            </xsl:for-each>
        </table>
    </xsl:template>


    <!-- ================================================================== -->
    <!-- Write a package level report                                       -->
    <!-- It creates a table with values from the document:                  -->
    <!-- Name | Tests | Errors | Failures | Time                            -->
    <!-- ================================================================== -->
    <xsl:template name="packages">
        <!-- create an anchor to this package name -->
        <xsl:for-each select="/testsuites/testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
            <xsl:sort select="@package"/>
                <a name="{@package}"></a>
                <h3>Package <xsl:value-of select="@package"/></h3>

                <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
                    <xsl:call-template name="testsuite.test.header"/>

                    <!-- match the testsuites of this package -->
                    <xsl:apply-templates select="/testsuites/testsuite[./@package = current()/@package]" mode="print.test"/>
                </table>
                <a href="#top">Back to top</a>
                <p/>
                <p/>
        </xsl:for-each>
    </xsl:template>

    <xsl:template name="classes">
        <xsl:for-each select="testsuite">
            <xsl:sort select="@name"/>
            <!-- create an anchor to this class name -->
            <a name="{@name}"></a>
            <h3>TestCase <xsl:value-of select="@name"/></h3>

            <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
              <xsl:call-template name="testcase.test.header"/>
              <!--
              test can even not be started at all (failure to load the class)
              so report the error directly
              -->
                <xsl:if test="./error">
                    <tr class="Error">
                        <td colspan="4"><xsl:apply-templates select="./error"/></td>
                    </tr>
                </xsl:if>
                <xsl:apply-templates select="./testcase" mode="print.test"/>
            </table>
            <div class="Properties">
                <a>
                    <xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
                    Properties &#187;
                </a>
            </div>
            <p/>

            <a href="#top">Back to top</a>
        </xsl:for-each>
    </xsl:template>

    <xsl:template name="summary">
        <h2>Summary</h2>
        <xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
        <xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
        <xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
        <xsl:variable name="skippedCount" select="sum(testsuite/@skipped)" />
        <xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
        <xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
        <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
        <tr valign="top">
            <th>Tests</th>
            <th>Failures</th>
            <th>Errors</th>
            <th>Skipped</th>
            <th>Success rate</th>
            <th>Time</th>
        </tr>
        <tr valign="top">
            <xsl:attribute name="class">
                <xsl:choose>
                    <xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
                    <xsl:when test="$errorCount &gt; 0">Error</xsl:when>
                </xsl:choose>
            </xsl:attribute>
            <td><xsl:value-of select="$testCount"/></td>
            <td><xsl:value-of select="$failureCount"/></td>
            <td><xsl:value-of select="$errorCount"/></td>
            <td><xsl:value-of select="$skippedCount" /></td>
            <td>
                <xsl:call-template name="display-percent">
                    <xsl:with-param name="value" select="$successRate"/>
                </xsl:call-template>
            </td>
            <td>
                <xsl:call-template name="display-time">
                    <xsl:with-param name="value" select="$timeCount"/>
                </xsl:call-template>
            </td>

        </tr>
        </table>
        <table border="0" width="95%">
        <tr>
        <td style="text-align: justify;">
        Note: <i>failures</i> are anticipated and checked for with assertions while <i>errors</i> are unanticipated.
        </td>
        </tr>
        </table>
    </xsl:template>

  <!--
   Write properties into a JavaScript data structure.
   This is based on the original idea by Erik Hatcher (ehatcher@apache.org)
   -->
  <xsl:template match="properties">
    cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
    <xsl:for-each select="property">
    <xsl:sort select="@name"/>
        cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
    </xsl:for-each>
  </xsl:template>

<!-- Page HEADER -->
<xsl:template name="pageHeader">
    <h1><xsl:value-of select="$TITLE"/></h1>
    <table width="100%">
    <tr>
        <td align="left"></td>
        <td align="right">Designed for use with <a href='https://www.junit.org'>JUnit</a> and <a href='https://ant.apache.org/ant'>Ant</a>.</td>
    </tr>
    </table>
    <hr size="1"/>
</xsl:template>

<xsl:template match="testsuite" mode="header">
    <tr valign="top">
        <th width="80%">Name</th>
        <th>Tests</th>
        <th>Errors</th>
        <th>Failures</th>
        <th>Skipped</th>
        <th nowrap="nowrap">Time(s)</th>
    </tr>
</xsl:template>

<!-- class header -->
<xsl:template name="testsuite.test.header">
    <tr valign="top">
        <th width="80%">Name</th>
        <th>Tests</th>
        <th>Errors</th>
        <th>Failures</th>
        <th>Skipped</th>
        <th nowrap="nowrap">Time(s)</th>
        <th nowrap="nowrap">Time Stamp</th>
        <th>Host</th>
    </tr>
</xsl:template>

<!-- method header -->
<xsl:template name="testcase.test.header">
    <tr valign="top">
        <th>Name</th>
        <th>Status</th>
        <th width="80%">Type</th>
        <th nowrap="nowrap">Time(s)</th>
    </tr>
</xsl:template>


<!-- class information -->
<xsl:template match="testsuite" mode="print.test">
    <tr valign="top">
        <!-- set a nice color depending if there is an error/failure -->
        <xsl:attribute name="class">
            <xsl:choose>
                <xsl:when test="@failures[.&gt; 0]">Failure</xsl:when>
                <xsl:when test="@errors[.&gt; 0]">Error</xsl:when>
            </xsl:choose>
        </xsl:attribute>

        <!-- print testsuite information -->
        <td><a href="#{@name}"><xsl:value-of select="@name"/></a></td>
        <td><xsl:value-of select="@tests"/></td>
        <td><xsl:value-of select="@errors"/></td>
        <td><xsl:value-of select="@failures"/></td>
        <td><xsl:value-of select="@skipped" /></td>
        <td>
            <xsl:call-template name="display-time">
                <xsl:with-param name="value" select="@time"/>
            </xsl:call-template>
        </td>
        <td><xsl:apply-templates select="@timestamp"/></td>
        <td><xsl:apply-templates select="@hostname"/></td>
    </tr>
</xsl:template>

<xsl:template match="testcase" mode="print.test">
    <tr valign="top">
        <xsl:attribute name="class">
            <xsl:choose>
                <xsl:when test="failure | error">Error</xsl:when>
            </xsl:choose>
        </xsl:attribute>
        <td><xsl:value-of select="@name"/></td>
        <xsl:choose>
            <xsl:when test="failure">
                <td>Failure</td>
                <td><xsl:apply-templates select="failure"/></td>
            </xsl:when>
            <xsl:when test="error">
                <td>Error</td>
                <td><xsl:apply-templates select="error"/></td>
            </xsl:when>
            <xsl:when test="skipped">
            	<td>Skipped</td>
            	<td><xsl:apply-templates select="skipped"/></td>
            </xsl:when>
            <xsl:otherwise>
                <td>Success</td>
                <td></td>
            </xsl:otherwise>
        </xsl:choose>
        <td>
            <xsl:call-template name="display-time">
                <xsl:with-param name="value" select="@time"/>
            </xsl:call-template>
        </td>
    </tr>
</xsl:template>


<xsl:template match="failure">
    <xsl:call-template name="display-failures"/>
</xsl:template>

<xsl:template match="error">
    <xsl:call-template name="display-failures"/>
</xsl:template>

<xsl:template match="skipped">
    <xsl:call-template name="display-failures"/>
</xsl:template>

<!-- Style for the error, failure and skipped in the testcase template -->
<xsl:template name="display-failures">
    <xsl:choose>
        <xsl:when test="not(@message)">N/A</xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="@message"/>
        </xsl:otherwise>
    </xsl:choose>
    <!-- display the stacktrace -->
    <code>
        <br/><br/>
        <xsl:call-template name="br-replace">
            <xsl:with-param name="word" select="."/>
        </xsl:call-template>
    </code>
    <!-- the later is better but might be problematic for non-21" monitors... -->
    <!--pre><xsl:value-of select="."/></pre-->
</xsl:template>

<xsl:template name="JS-escape">
    <xsl:param name="string"/>
    <xsl:param name="tmp1" select="string:replaceAll(string:new(string($string)),'\\','\\\\')"/>
    <xsl:param name="tmp2" select="string:replaceAll(string:new(string($tmp1)),&quot;'&quot;,&quot;\\&apos;&quot;)"/>
    <xsl:param name="tmp3" select="string:replaceAll(string:new(string($tmp2)),&quot;&#10;&quot;,'\\n')"/>
    <xsl:param name="tmp4" select="string:replaceAll(string:new(string($tmp3)),&quot;&#13;&quot;,'\\r')"/>
    <xsl:value-of select="$tmp4"/>
</xsl:template>


<!--
    template that will convert a carriage return into a br tag
    @param word the text from which to convert CR to BR tag
-->
<xsl:template name="br-replace">
    <xsl:param name="word"/>
    <xsl:param name="splitlimit">32</xsl:param>
    <xsl:variable name="secondhalfstartindex" select="(string-length($word)+(string-length($word) mod 2)) div 2"/>
    <xsl:variable name="secondhalfword" select="substring($word, $secondhalfstartindex)"/>
    <!-- When word is very big, a recursive replace is very heap/stack expensive, so subdivide on line break after middle of string -->
    <xsl:choose>
      <xsl:when test="(string-length($word) > $splitlimit) and (contains($secondhalfword, '&#xa;'))">
        <xsl:variable name="secondhalfend" select="substring-after($secondhalfword, '&#xa;')"/>
        <xsl:variable name="firsthalflen" select="string-length($word) - string-length($secondhalfword)"/>
        <xsl:variable name="firsthalfword" select="substring($word, 1, $firsthalflen)"/>
        <xsl:variable name="firsthalfend" select="substring-before($secondhalfword, '&#xa;')"/>
        <xsl:call-template name="br-replace">
          <xsl:with-param name="word" select="concat($firsthalfword,$firsthalfend)"/>
        </xsl:call-template>
        <br/>
        <xsl:call-template name="br-replace">
          <xsl:with-param name="word" select="$secondhalfend"/>
        </xsl:call-template>
      </xsl:when>
      <xsl:when test="contains($word, '&#xa;')">
        <xsl:value-of select="substring-before($word, '&#xa;')"/>
        <br/>
        <xsl:call-template name="br-replace">
          <xsl:with-param name="word" select="substring-after($word, '&#xa;')"/>
        </xsl:call-template>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="$word"/>
      </xsl:otherwise>
    </xsl:choose>
</xsl:template>

<xsl:template name="display-time">
    <xsl:param name="value"/>
    <xsl:value-of select="format-number($value,'0.000')"/>
</xsl:template>

<xsl:template name="display-percent">
    <xsl:param name="value"/>
    <xsl:value-of select="format-number($value,'0.00%')"/>
</xsl:template>

</xsl:stylesheet>
PKorg/PKorg/apache/PKorg/apache/tools/PKorg/apache/tools/ant/PKorg/apache/tools/ant/taskdefs/PK'org/apache/tools/ant/taskdefs/optional/PK-org/apache/tools/ant/taskdefs/optional/junit/PK1org/apache/tools/ant/taskdefs/optional/junit/xsl/PK}�5u==	__index__�6�rB�2�
�f�ǭOE��kb��&a���f��(�,ۏ��4���;�N������dUd@H~48��m_���O+Sؼ�sI��A I��&�x�,��q/Mzoj�r���o��~G7�6�8r�XNX�վ��W
ޘ���Vq^��x$���E�p�������3M�J����$��3qC��#����
K��x�ڕ���+	H��J�L-��x��>C5����FQ(�'���rF�:A�;�&���wذ-Ū�!���K�����3��蘆��e4�P��i 
�H�.�]���#�`�76e�	el��/l�)QG��g��dF���o�������1�Ǩ쎰*�@�p�`�=[�
#R��`]���>!-*SQЏ&G�)�/J�XU�ƔX3셻�kyHGg
N<#�4�NI���mG�1/
�L�uH�Y!\�����
�8��bL�.ۊDQ�K�8��V'�F]���Xm��	#m	T��+7�OQ�Gb��F��,z��7$֡���&�ï�����)�>�)OhB���¹�h/>c.�g戗�"�����Y��T#|.(o�O[D�s(��8����=a+�W%�����+�"����%����U�
$qb������\7��J�	�����mC�D��,����v��;	�|�����
��F������=
�a,���U���g�$���7G���@���i���a,���U��ݐ�t/#�*+�I;`��Ĥ�K�x��^�*R�ٜ[�aiNG;<LF<EG:?LB[QCFDGETQRLMM<]XdBVF<DDDBETLND>F?JFGAIC
&,0META-INF/MANIFEST.MForg/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer$Format.classorg/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer.classorg/apache/tools/ant/taskdefs/optional/junit/BaseTest.classorg/apache/tools/ant/taskdefs/optional/junit/BatchTest.classorg/apache/tools/ant/taskdefs/optional/junit/BriefJUnitResultFormatter.classorg/apache/tools/ant/taskdefs/optional/junit/CompoundEnumeration.classorg/apache/tools/ant/taskdefs/optional/junit/Constants.classorg/apache/tools/ant/taskdefs/optional/junit/DOMUtil$NodeFilter.classorg/apache/tools/ant/taskdefs/optional/junit/DOMUtil$NodeListImpl.classorg/apache/tools/ant/taskdefs/optional/junit/DOMUtil.classorg/apache/tools/ant/taskdefs/optional/junit/Enumerations.classorg/apache/tools/ant/taskdefs/optional/junit/FailureRecorder$TestInfos.classorg/apache/tools/ant/taskdefs/optional/junit/FailureRecorder.classorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement$DelayedFileOutputStream.classorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement$TypeAttribute.classorg/apache/tools/ant/taskdefs/optional/junit/FormatterElement.classorg/apache/tools/ant/taskdefs/optional/junit/IgnoredTestListener.classorg/apache/tools/ant/taskdefs/optional/junit/IgnoredTestResult.classorg/apache/tools/ant/taskdefs/optional/junit/JUnitResultFormatter.classorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$ForkMode.classorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$ForkedTestConfiguration.classorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$JUnitLogOutputStream.classorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$JUnitLogStreamHandler.classorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$JunitTestThread.classorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$SummaryAttribute.classorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask$TestResultHolder.classorg/apache/tools/ant/taskdefs/optional/junit/JUnitTask.classorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirror.classorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitTestRunnerMirror.classorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$SummaryJUnitResultFormatterMirror.classorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror.classorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorImpl$VmExitErrorTest.classorg/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorImpl.classorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest.classorg/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner$1.classorg/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner$2.classorg/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner$3.classorg/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.classorg/apache/tools/ant/taskdefs/optional/junit/JUnitVersionHelper.classorg/apache/tools/ant/taskdefs/optional/junit/OutErrSummaryJUnitResultFormatter.classorg/apache/tools/ant/taskdefs/optional/junit/PlainJUnitResultFormatter.classorg/apache/tools/ant/taskdefs/optional/junit/SummaryJUnitResultFormatter.classorg/apache/tools/ant/taskdefs/optional/junit/TearDownOnVmCrash.classorg/apache/tools/ant/taskdefs/optional/junit/TestIgnored.classorg/apache/tools/ant/taskdefs/optional/junit/TestListenerWrapper.classorg/apache/tools/ant/taskdefs/optional/junit/XMLConstants.classorg/apache/tools/ant/taskdefs/optional/junit/XMLJUnitResultFormatter.classorg/apache/tools/ant/taskdefs/optional/junit/XMLResultAggregator.classorg/apache/tools/ant/taskdefs/optional/junit/xsl/junit-frames-saxon.xslorg/apache/tools/ant/taskdefs/optional/junit/xsl/junit-frames.xslorg/apache/tools/ant/taskdefs/optional/junit/xsl/junit-noframes-saxon.xslorg/apache/tools/ant/taskdefs/optional/junit/xsl/junit-noframes.xslorgorg/apacheorg/apache/toolsorg/apache/tools/antorg/apache/tools/ant/taskdefsorg/apache/tools/ant/taskdefs/optionalorg/apache/tools/ant/taskdefs/optional/junitorg/apache/tools/ant/taskdefs/optional/junit/xslPK��X����META-INF/MANIFEST.MFPK�.3��N���org/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer$Format.classPK�a�&�&G���org/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer.classPK�q�((;��3,org/apache/tools/ant/taskdefs/optional/junit/BaseTest.classPK�T�n��<���:org/apache/tools/ant/taskdefs/optional/junit/BatchTest.classPK��P��L���Torg/apache/tools/ant/taskdefs/optional/junit/BriefJUnitResultFormatter.classPK#+��F��Amorg/apache/tools/ant/taskdefs/optional/junit/CompoundEnumeration.classPK�8-���<��Isorg/apache/tools/ant/taskdefs/optional/junit/Constants.classPK���c&&E��_xorg/apache/tools/ant/taskdefs/optional/junit/DOMUtil$NodeFilter.classPK��%�//G���yorg/apache/tools/ant/taskdefs/optional/junit/DOMUtil$NodeListImpl.classPK��O���:��|~org/apache/tools/ant/taskdefs/optional/junit/DOMUtil.classPK�햅rr?����org/apache/tools/ant/taskdefs/optional/junit/Enumerations.classPK/N�W
W
L��t�org/apache/tools/ant/taskdefs/optional/junit/FailureRecorder$TestInfos.classPK8cw�x$x$B��5�org/apache/tools/ant/taskdefs/optional/junit/FailureRecorder.classPK�s��[��
�org/apache/tools/ant/taskdefs/optional/junit/FormatterElement$DelayedFileOutputStream.classPK��?6��Q����org/apache/tools/ant/taskdefs/optional/junit/FormatterElement$TypeAttribute.classPK�&��C����org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.classPK�KKF��7�org/apache/tools/ant/taskdefs/optional/junit/IgnoredTestListener.classPK2%��+	+	D����org/apache/tools/ant/taskdefs/optional/junit/IgnoredTestResult.classPKX��q��G��s�org/apache/tools/ant/taskdefs/optional/junit/JUnitResultFormatter.classPK�M���E����org/apache/tools/ant/taskdefs/optional/junit/JUnitTask$ForkMode.classPKu��rrT���org/apache/tools/ant/taskdefs/optional/junit/JUnitTask$ForkedTestConfiguration.classPK����&&Q���org/apache/tools/ant/taskdefs/optional/junit/JUnitTask$JUnitLogOutputStream.classPKr
���R��%org/apache/tools/ant/taskdefs/optional/junit/JUnitTask$JUnitLogStreamHandler.classPK}SV��L��?org/apache/tools/ant/taskdefs/optional/junit/JUnitTask$JunitTestThread.classPKe_R�M���org/apache/tools/ant/taskdefs/optional/junit/JUnitTask$SummaryAttribute.classPKt��M���org/apache/tools/ant/taskdefs/optional/junit/JUnitTask$TestResultHolder.classPK�Z"���<���#org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.classPK��D�ee]����org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitResultFormatterMirror.classPK��&X����org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$JUnitTestRunnerMirror.classPK5H2��d��f�org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror$SummaryJUnitResultFormatterMirror.classPK{��f��B����org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirror.classPK�1��V���org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorImpl$VmExitErrorTest.classPK�����
�
F����org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorImpl.classPK�Q�>!>!<���
org/apache/tools/ant/taskdefs/optional/junit/JUnitTest.classPK�5@))D��k/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner$1.classPK��ي��D���2org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner$2.classPK�@�g
g
D���;org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner$3.classPK��b�m�mB���Forg/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.classPK��#E���org/apache/tools/ant/taskdefs/optional/junit/JUnitVersionHelper.classPK`�`�T��i�org/apache/tools/ant/taskdefs/optional/junit/OutErrSummaryJUnitResultFormatter.classPKv�[+bbL����org/apache/tools/ant/taskdefs/optional/junit/PlainJUnitResultFormatter.classPK��&�88N����org/apache/tools/ant/taskdefs/optional/junit/SummaryJUnitResultFormatter.classPK1�kw]]D��R�org/apache/tools/ant/taskdefs/optional/junit/TearDownOnVmCrash.classPK|�m0##>��	org/apache/tools/ant/taskdefs/optional/junit/TestIgnored.classPK��QQF���org/apache/tools/ant/taskdefs/optional/junit/TestListenerWrapper.classPK�F-�zz?��Eorg/apache/tools/ant/taskdefs/optional/junit/XMLConstants.classPK��ǥ&�&J��org/apache/tools/ant/taskdefs/optional/junit/XMLJUnitResultFormatter.classPK�wT�)�)F��)>org/apache/tools/ant/taskdefs/optional/junit/XMLResultAggregator.classPK��$¹¹G��yhorg/apache/tools/ant/taskdefs/optional/junit/xsl/junit-frames-saxon.xslPKdi�U����A���"org/apache/tools/ant/taskdefs/optional/junit/xsl/junit-frames.xslPK��6YYI����org/apache/tools/ant/taskdefs/optional/junit/xsl/junit-noframes-saxon.xslPK���b�O�OC���org/apache/tools/ant/taskdefs/optional/junit/xsl/junit-noframes.xslPK�A?dorg/PK�Aadorg/apache/PK�A�dorg/apache/tools/PK�A�dorg/apache/tools/ant/PK�A�dorg/apache/tools/ant/taskdefs/PK'�A(eorg/apache/tools/ant/taskdefs/optional/PK-�Ameorg/apache/tools/ant/taskdefs/optional/junit/PK1�A�eorg/apache/tools/ant/taskdefs/optional/junit/xsl/PK}�5u==	��f__index__PK>>�kzj

Youez - 2016 - github.com/yon3zu
LinuXploit