From 0f74e87419bd3bc16cd93f5cf1c444f2f472bc2f Mon Sep 17 00:00:00 2001 From: Cosmin Stroe Date: Fri, 3 Feb 2017 07:52:54 -0600 Subject: [PATCH 01/11] Moved source into standard directory --- src/{ => main/java}/org/lsmp/djep/djep/DJep.java | 0 src/{ => main/java}/org/lsmp/djep/djep/DPrintVisitor.java | 0 src/{ => main/java}/org/lsmp/djep/djep/DSymbolTable.java | 0 src/{ => main/java}/org/lsmp/djep/djep/DVariable.java | 0 src/{ => main/java}/org/lsmp/djep/djep/DVariableFactory.java | 0 src/{ => main/java}/org/lsmp/djep/djep/Diff.java | 0 src/{ => main/java}/org/lsmp/djep/djep/DiffRulesI.java | 0 .../java}/org/lsmp/djep/djep/DifferentiationVisitor.java | 0 src/{ => main/java}/org/lsmp/djep/djep/PartialDerivative.java | 0 .../java}/org/lsmp/djep/djep/diffRules/AdditionDiffRule.java | 0 .../java}/org/lsmp/djep/djep/diffRules/ChainRuleDiffRules.java | 0 .../java}/org/lsmp/djep/djep/diffRules/DivideDiffRule.java | 0 .../java}/org/lsmp/djep/djep/diffRules/MacroDiffRules.java | 0 .../org/lsmp/djep/djep/diffRules/MacroFunctionDiffRules.java | 0 .../java}/org/lsmp/djep/djep/diffRules/MultiplyDiffRule.java | 0 .../java}/org/lsmp/djep/djep/diffRules/PassThroughDiffRule.java | 0 .../java}/org/lsmp/djep/djep/diffRules/PowerDiffRule.java | 0 .../java}/org/lsmp/djep/djep/diffRules/SubtractDiffRule.java | 0 src/{ => main/java}/org/lsmp/djep/djep/diffRules/package.html | 0 src/{ => main/java}/org/lsmp/djep/djep/package.html | 0 src/{ => main/java}/org/lsmp/djep/groupJep/GOperatorSet.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/GroupI.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/GroupJep.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/PolynomialVisitor.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/function/GAdd.java | 0 .../java}/org/lsmp/djep/groupJep/function/GComparative.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/function/GDivide.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/function/GList.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/function/GLogical.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/function/GMod.java | 0 .../java}/org/lsmp/djep/groupJep/function/GMultiply.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/function/GNot.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/function/GPower.java | 0 .../java}/org/lsmp/djep/groupJep/function/GSubtract.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/function/GUMinus.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/function/package.html | 0 .../java}/org/lsmp/djep/groupJep/groups/AlgebraicExtension.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/groups/BigReals.java | 0 .../java}/org/lsmp/djep/groupJep/groups/ExtendedFreeGroup.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/groups/FreeGroup.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/groups/Group.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/groups/Integers.java | 0 .../java}/org/lsmp/djep/groupJep/groups/PermutationGroup.java | 0 .../java}/org/lsmp/djep/groupJep/groups/Quaternions.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/groups/Rationals.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/groups/Reals.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/groups/Zn.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/groups/package.html | 0 .../java}/org/lsmp/djep/groupJep/interfaces/AbelianGroupI.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/interfaces/FieldI.java | 0 .../java}/org/lsmp/djep/groupJep/interfaces/HasDivI.java | 0 .../java}/org/lsmp/djep/groupJep/interfaces/HasListI.java | 0 .../java}/org/lsmp/djep/groupJep/interfaces/HasModI.java | 0 .../java}/org/lsmp/djep/groupJep/interfaces/HasPowerI.java | 0 .../java}/org/lsmp/djep/groupJep/interfaces/IntegralDomainI.java | 0 .../java}/org/lsmp/djep/groupJep/interfaces/OrderedSetI.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/interfaces/RingI.java | 0 .../java}/org/lsmp/djep/groupJep/interfaces/package.html | 0 src/{ => main/java}/org/lsmp/djep/groupJep/package.html | 0 .../org/lsmp/djep/groupJep/values/AlgebraicExtensionElement.java | 0 .../java}/org/lsmp/djep/groupJep/values/FreeGroupElement.java | 0 .../java}/org/lsmp/djep/groupJep/values/HasComplexValueI.java | 0 .../java}/org/lsmp/djep/groupJep/values/Permutation.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/values/Polynomial.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/values/Rational.java | 0 src/{ => main/java}/org/lsmp/djep/groupJep/values/package.html | 0 src/{ => main/java}/org/lsmp/djep/jama/Inverse.java | 0 src/{ => main/java}/org/lsmp/djep/jama/JamaUtil.java | 0 src/{ => main/java}/org/lsmp/djep/jama/Rank.java | 0 src/{ => main/java}/org/lsmp/djep/jama/Solve.java | 0 src/{ => main/java}/org/lsmp/djep/jama/package.html | 0 src/{ => main/java}/org/lsmp/djep/matrixJep/MatrixEvaluator.java | 0 src/{ => main/java}/org/lsmp/djep/matrixJep/MatrixJep.java | 0 .../java}/org/lsmp/djep/matrixJep/MatrixNodeFactory.java | 0 .../java}/org/lsmp/djep/matrixJep/MatrixOperatorSet.java | 0 .../java}/org/lsmp/djep/matrixJep/MatrixPartialDerivative.java | 0 .../java}/org/lsmp/djep/matrixJep/MatrixPreprocessor.java | 0 .../java}/org/lsmp/djep/matrixJep/MatrixSpecialEvaluationI.java | 0 src/{ => main/java}/org/lsmp/djep/matrixJep/MatrixVariable.java | 0 .../java}/org/lsmp/djep/matrixJep/MatrixVariableFactory.java | 0 src/{ => main/java}/org/lsmp/djep/matrixJep/MatrixVariableI.java | 0 .../java}/org/lsmp/djep/matrixJep/SpecialPreProcessorI.java | 0 .../java}/org/lsmp/djep/matrixJep/function/MArrayAccess.java | 0 src/{ => main/java}/org/lsmp/djep/matrixJep/function/MAssign.java | 0 src/{ => main/java}/org/lsmp/djep/matrixJep/function/MDiff.java | 0 src/{ => main/java}/org/lsmp/djep/matrixJep/function/MIf.java | 0 src/{ => main/java}/org/lsmp/djep/matrixJep/function/MList.java | 0 src/{ => main/java}/org/lsmp/djep/matrixJep/function/MMap.java | 0 src/{ => main/java}/org/lsmp/djep/matrixJep/function/MPower.java | 0 src/{ => main/java}/org/lsmp/djep/matrixJep/function/MSum.java | 0 src/{ => main/java}/org/lsmp/djep/matrixJep/function/package.html | 0 .../java}/org/lsmp/djep/matrixJep/nodeTypes/ASTMConstant.java | 0 .../java}/org/lsmp/djep/matrixJep/nodeTypes/ASTMFunNode.java | 0 .../java}/org/lsmp/djep/matrixJep/nodeTypes/ASTMVarNode.java | 0 .../java}/org/lsmp/djep/matrixJep/nodeTypes/MatrixNodeI.java | 0 .../java}/org/lsmp/djep/matrixJep/nodeTypes/package.html | 0 src/{ => main/java}/org/lsmp/djep/matrixJep/package.html | 0 src/{ => main/java}/org/lsmp/djep/mrpe/MRpCommandList.java | 0 src/{ => main/java}/org/lsmp/djep/mrpe/MRpEval.java | 0 src/{ => main/java}/org/lsmp/djep/mrpe/MRpRes.java | 0 src/{ => main/java}/org/lsmp/djep/mrpe/package.html | 0 src/{ => main/java}/org/lsmp/djep/package.html | 0 src/{ => main/java}/org/lsmp/djep/rewrite/AbstractRewrite.java | 0 src/{ => main/java}/org/lsmp/djep/rewrite/CollectPowers.java | 0 src/{ => main/java}/org/lsmp/djep/rewrite/ExpandBrackets.java | 0 src/{ => main/java}/org/lsmp/djep/rewrite/ExpandPower.java | 0 src/{ => main/java}/org/lsmp/djep/rewrite/RewriteRuleI.java | 0 src/{ => main/java}/org/lsmp/djep/rewrite/RewriteVisitor.java | 0 src/{ => main/java}/org/lsmp/djep/rewrite/package.html | 0 src/{ => main/java}/org/lsmp/djep/rpe/RpCommand.java | 0 src/{ => main/java}/org/lsmp/djep/rpe/RpCommandList.java | 0 src/{ => main/java}/org/lsmp/djep/rpe/RpEval.java | 0 src/{ => main/java}/org/lsmp/djep/rpe/package.html | 0 src/{ => main/java}/org/lsmp/djep/sjep/AbstractPNode.java | 0 src/{ => main/java}/org/lsmp/djep/sjep/Monomial.java | 0 src/{ => main/java}/org/lsmp/djep/sjep/MutiableMonomial.java | 0 src/{ => main/java}/org/lsmp/djep/sjep/MutiablePolynomial.java | 0 src/{ => main/java}/org/lsmp/djep/sjep/PConstant.java | 0 src/{ => main/java}/org/lsmp/djep/sjep/PFunction.java | 0 src/{ => main/java}/org/lsmp/djep/sjep/PNodeI.java | 0 src/{ => main/java}/org/lsmp/djep/sjep/POperator.java | 0 src/{ => main/java}/org/lsmp/djep/sjep/PVariable.java | 0 src/{ => main/java}/org/lsmp/djep/sjep/Polynomial.java | 0 src/{ => main/java}/org/lsmp/djep/sjep/PolynomialCreator.java | 0 src/{ => main/java}/org/lsmp/djep/sjep/package.html | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/Dimensions.java | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/VOperatorSet.java | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/VectorEvaluator.java | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/VectorJep.java | 0 .../java}/org/lsmp/djep/vectorJep/function/ArrayAccess.java | 0 .../java}/org/lsmp/djep/vectorJep/function/BinaryOperatorI.java | 0 .../java}/org/lsmp/djep/vectorJep/function/Determinant.java | 0 .../java}/org/lsmp/djep/vectorJep/function/Diagonal.java | 0 .../org/lsmp/djep/vectorJep/function/ElementComparative.java | 0 .../java}/org/lsmp/djep/vectorJep/function/ElementDivide.java | 0 .../java}/org/lsmp/djep/vectorJep/function/ElementMultiply.java | 0 .../java}/org/lsmp/djep/vectorJep/function/ExteriorProduct.java | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/function/GenMat.java | 0 .../java}/org/lsmp/djep/vectorJep/function/GetDiagonal.java | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/function/Id.java | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/function/Length.java | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/function/MAdd.java | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/function/MDivide.java | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/function/MDot.java | 0 .../java}/org/lsmp/djep/vectorJep/function/MMultiply.java | 0 .../java}/org/lsmp/djep/vectorJep/function/MSubtract.java | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/function/MUMinus.java | 0 .../java}/org/lsmp/djep/vectorJep/function/NaryOperatorI.java | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/function/Size.java | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/function/Trace.java | 0 .../java}/org/lsmp/djep/vectorJep/function/Transpose.java | 0 .../java}/org/lsmp/djep/vectorJep/function/UnaryOperatorI.java | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/function/VEle.java | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/function/VList.java | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/function/VMap.java | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/function/VPower.java | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/function/VRange.java | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/function/VSum.java | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/function/package.html | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/package.html | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/values/MVector.java | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/values/Matrix.java | 0 .../java}/org/lsmp/djep/vectorJep/values/MatrixValueI.java | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/values/Scaler.java | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/values/Tensor.java | 0 src/{ => main/java}/org/lsmp/djep/vectorJep/values/package.html | 0 src/{ => main/java}/org/lsmp/djep/xjep/BaseFormat.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/CommandVisitor.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/CommandVisitorI.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/DeepCopyVisitor.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/DoNothingVisitor.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/ErrorCatchingVisitor.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/Eval.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/MacroFunction.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/NodeFactory.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/PrintVisitor.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/SimplificationVisitor.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/SubstitutionVisitor.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/TreeUtils.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/XEvaluatorVisitor.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/XJep.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/XMath.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/XOperator.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/XOperatorSet.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/XSymbolTable.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/XVariable.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/XVariableFactory.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/function/Define.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/function/FromBase.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/function/Max.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/function/MaxArg.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/function/Min.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/function/MinArg.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/function/Product.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/function/Simpson.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/function/Sum.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/function/SumType.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/function/ToBase.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/function/Trapezium.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/function/XAssign.java | 0 src/{ => main/java}/org/lsmp/djep/xjep/function/package.html | 0 src/{ => main/java}/org/lsmp/djep/xjep/package.html | 0 src/{ => main/java}/org/lsmp/djepExamples/AssignmentExample.java | 0 src/{ => main/java}/org/lsmp/djepExamples/BlockStatments.java | 0 src/{ => main/java}/org/lsmp/djepExamples/Console.java | 0 src/{ => main/java}/org/lsmp/djepExamples/DJepApplet.java | 0 src/{ => main/java}/org/lsmp/djepExamples/DJepConsole.java | 0 src/{ => main/java}/org/lsmp/djepExamples/DiffExample.java | 0 src/{ => main/java}/org/lsmp/djepExamples/GroupConsole.java | 0 src/{ => main/java}/org/lsmp/djepExamples/JamaConsole.java | 0 src/{ => main/java}/org/lsmp/djepExamples/MRpConsole.java | 0 src/{ => main/java}/org/lsmp/djepExamples/MRpDiffExample.java | 0 src/{ => main/java}/org/lsmp/djepExamples/MRpExample.java | 0 src/{ => main/java}/org/lsmp/djepExamples/MRpSpeed.java | 0 src/{ => main/java}/org/lsmp/djepExamples/MRpSurfExample.java | 0 src/{ => main/java}/org/lsmp/djepExamples/MatrixConsole.java | 0 src/{ => main/java}/org/lsmp/djepExamples/MatrixExample.java | 0 src/{ => main/java}/org/lsmp/djepExamples/MatrixSpeed.java | 0 src/{ => main/java}/org/lsmp/djepExamples/ObserverConsole.java | 0 src/{ => main/java}/org/lsmp/djepExamples/PrintExample.java | 0 src/{ => main/java}/org/lsmp/djepExamples/RpExample.java | 0 src/{ => main/java}/org/lsmp/djepExamples/RpSpeed.java | 0 src/{ => main/java}/org/lsmp/djepExamples/RpeConsole.java | 0 src/{ => main/java}/org/lsmp/djepExamples/SJepConsole.java | 0 src/{ => main/java}/org/lsmp/djepExamples/VectorConsole.java | 0 src/{ => main/java}/org/lsmp/djepExamples/VectorExample.java | 0 src/{ => main/java}/org/lsmp/djepExamples/VectorPrint.java | 0 src/{ => main/java}/org/lsmp/djepExamples/XJepConsole.java | 0 src/{ => main/java}/org/lsmp/djepExamples/XJepExample.java | 0 src/{ => main/java}/org/lsmp/djepExamples/package.html | 0 src/{ => main/java}/org/lsmp/djepJUnit/DJepTest.java | 0 src/{ => main/java}/org/lsmp/djepJUnit/GroupJepTest.java | 0 src/{ => main/java}/org/lsmp/djepJUnit/JepTest.java | 0 src/{ => main/java}/org/lsmp/djepJUnit/MRpTest.java | 0 src/{ => main/java}/org/lsmp/djepJUnit/MatrixJepTest.java | 0 src/{ => main/java}/org/lsmp/djepJUnit/RewriteTest.java | 0 src/{ => main/java}/org/lsmp/djepJUnit/RpTest.java | 0 src/{ => main/java}/org/lsmp/djepJUnit/SJepTest.java | 0 src/{ => main/java}/org/lsmp/djepJUnit/VectorJepTest.java | 0 src/{ => main/java}/org/lsmp/djepJUnit/XJepTest.java | 0 src/{ => main/java}/org/lsmp/djepJUnit/package.html | 0 src/{ => main/java}/org/nfunk/jep/.cvsignore | 0 src/{ => main/java}/org/nfunk/jep/ASTConstant.java | 0 src/{ => main/java}/org/nfunk/jep/ASTFunNode.java | 0 src/{ => main/java}/org/nfunk/jep/ASTStart.java | 0 src/{ => main/java}/org/nfunk/jep/ASTVarNode.java | 0 src/{ => main/java}/org/nfunk/jep/EvaluatorI.java | 0 src/{ => main/java}/org/nfunk/jep/EvaluatorVisitor.java | 0 src/{ => main/java}/org/nfunk/jep/FunctionTable.java | 0 src/{ => main/java}/org/nfunk/jep/JEP.java | 0 src/{ => main/java}/org/nfunk/jep/JJTParserState.java | 0 src/{ => main/java}/org/nfunk/jep/JavaCharStream.java | 0 src/{ => main/java}/org/nfunk/jep/Node.java | 0 src/{ => main/java}/org/nfunk/jep/Operator.java | 0 src/{ => main/java}/org/nfunk/jep/OperatorSet.java | 0 src/{ => main/java}/org/nfunk/jep/ParseException.java | 0 src/{ => main/java}/org/nfunk/jep/Parser.java | 0 src/{ => main/java}/org/nfunk/jep/Parser.jjt | 0 src/{ => main/java}/org/nfunk/jep/ParserConstants.java | 0 src/{ => main/java}/org/nfunk/jep/ParserDumpVisitor.java | 0 src/{ => main/java}/org/nfunk/jep/ParserTokenManager.java | 0 src/{ => main/java}/org/nfunk/jep/ParserTreeConstants.java | 0 src/{ => main/java}/org/nfunk/jep/ParserVisitor.java | 0 src/{ => main/java}/org/nfunk/jep/SimpleCharStream.java | 0 src/{ => main/java}/org/nfunk/jep/SimpleNode.java | 0 src/{ => main/java}/org/nfunk/jep/SymbolTable.java | 0 src/{ => main/java}/org/nfunk/jep/Token.java | 0 src/{ => main/java}/org/nfunk/jep/TokenMgrError.java | 0 src/{ => main/java}/org/nfunk/jep/Variable.java | 0 src/{ => main/java}/org/nfunk/jep/VariableFactory.java | 0 src/{ => main/java}/org/nfunk/jep/evaluation/CommandElement.java | 0 .../java}/org/nfunk/jep/evaluation/CommandEvaluator.java | 0 .../java}/org/nfunk/jep/evaluation/ExpressionCompiler.java | 0 src/{ => main/java}/org/nfunk/jep/evaluation/package.html | 0 src/{ => main/java}/org/nfunk/jep/function/Abs.java | 0 src/{ => main/java}/org/nfunk/jep/function/Add.java | 0 src/{ => main/java}/org/nfunk/jep/function/ArcCosine.java | 0 src/{ => main/java}/org/nfunk/jep/function/ArcCosineH.java | 0 src/{ => main/java}/org/nfunk/jep/function/ArcSine.java | 0 src/{ => main/java}/org/nfunk/jep/function/ArcSineH.java | 0 src/{ => main/java}/org/nfunk/jep/function/ArcTanH.java | 0 src/{ => main/java}/org/nfunk/jep/function/ArcTangent.java | 0 src/{ => main/java}/org/nfunk/jep/function/ArcTangent2.java | 0 src/{ => main/java}/org/nfunk/jep/function/Arg.java | 0 src/{ => main/java}/org/nfunk/jep/function/Assign.java | 0 src/{ => main/java}/org/nfunk/jep/function/Binomial.java | 0 .../java}/org/nfunk/jep/function/CallbackEvaluationI.java | 0 src/{ => main/java}/org/nfunk/jep/function/Comparative.java | 0 src/{ => main/java}/org/nfunk/jep/function/ComplexPFMC.java | 0 src/{ => main/java}/org/nfunk/jep/function/Conjugate.java | 0 src/{ => main/java}/org/nfunk/jep/function/Cosine.java | 0 src/{ => main/java}/org/nfunk/jep/function/CosineH.java | 0 src/{ => main/java}/org/nfunk/jep/function/Cross.java | 0 src/{ => main/java}/org/nfunk/jep/function/Divide.java | 0 src/{ => main/java}/org/nfunk/jep/function/Dot.java | 0 src/{ => main/java}/org/nfunk/jep/function/Ele.java | 0 src/{ => main/java}/org/nfunk/jep/function/Exp.java | 0 src/{ => main/java}/org/nfunk/jep/function/If.java | 0 src/{ => main/java}/org/nfunk/jep/function/Imaginary.java | 0 src/{ => main/java}/org/nfunk/jep/function/LValueI.java | 0 src/{ => main/java}/org/nfunk/jep/function/List.java | 0 src/{ => main/java}/org/nfunk/jep/function/Logarithm.java | 0 src/{ => main/java}/org/nfunk/jep/function/Logical.java | 0 src/{ => main/java}/org/nfunk/jep/function/Modulus.java | 0 src/{ => main/java}/org/nfunk/jep/function/Multiply.java | 0 src/{ => main/java}/org/nfunk/jep/function/NaturalLogarithm.java | 0 src/{ => main/java}/org/nfunk/jep/function/Not.java | 0 src/{ => main/java}/org/nfunk/jep/function/Polar.java | 0 .../java}/org/nfunk/jep/function/PostfixMathCommand.java | 0 .../java}/org/nfunk/jep/function/PostfixMathCommandI.java | 0 src/{ => main/java}/org/nfunk/jep/function/Power.java | 0 src/{ => main/java}/org/nfunk/jep/function/Random.java | 0 src/{ => main/java}/org/nfunk/jep/function/Range.java | 0 src/{ => main/java}/org/nfunk/jep/function/Real.java | 0 src/{ => main/java}/org/nfunk/jep/function/Sine.java | 0 src/{ => main/java}/org/nfunk/jep/function/SineH.java | 0 .../java}/org/nfunk/jep/function/SpecialEvaluationI.java | 0 src/{ => main/java}/org/nfunk/jep/function/SquareRoot.java | 0 src/{ => main/java}/org/nfunk/jep/function/Str.java | 0 src/{ => main/java}/org/nfunk/jep/function/Subtract.java | 0 src/{ => main/java}/org/nfunk/jep/function/Sum.java | 0 src/{ => main/java}/org/nfunk/jep/function/TanH.java | 0 src/{ => main/java}/org/nfunk/jep/function/Tangent.java | 0 src/{ => main/java}/org/nfunk/jep/function/UMinus.java | 0 src/{ => main/java}/org/nfunk/jep/function/package.html | 0 src/{ => main/java}/org/nfunk/jep/package.html | 0 src/{ => main/java}/org/nfunk/jep/type/Complex.java | 0 src/{ => main/java}/org/nfunk/jep/type/DoubleNumberFactory.java | 0 src/{ => main/java}/org/nfunk/jep/type/NumberFactory.java | 0 src/{ => main/java}/org/nfunk/jep/type/package.html | 0 src/{ => main/java}/org/nfunk/jepexamples/Console.java | 0 src/{ => main/java}/org/nfunk/jepexamples/Evaluator.java | 0 src/{ => main/java}/org/nfunk/jepexamples/Fractal.java | 0 src/{ => main/java}/org/nfunk/jepexamples/FractalCanvas.java | 0 src/{ => main/java}/org/nfunk/jepexamples/FunctionPlotter.java | 0 src/{ => main/java}/org/nfunk/jepexamples/GraphCanvas.java | 0 .../java}/org/nfunk/jepexamples/LargeExpressionTest.java | 0 src/{ => main/java}/org/nfunk/jepexamples/SimpleTest.java | 0 src/{ => main/java}/org/nfunk/jepexamples/ThreadTest.java | 0 src/{ => main/java}/org/nfunk/jepexamples/ThreadTestThread.java | 0 src/{ => main/java}/org/nfunk/jepexamples/package.html | 0 src/{ => main/java}/org/nfunk/jeptesting/AllTests.java | 0 src/{ => main/java}/org/nfunk/jeptesting/JEPTest.java | 0 src/{ => main/java}/org/nfunk/jeptesting/LogarithmTest.java | 0 .../java}/org/nfunk/jeptesting/NaturalLogarithmTest.java | 0 src/{ => main/java}/org/nfunk/jeptesting/package.html | 0 src/{ => main/java}/overview.html | 0 347 files changed, 0 insertions(+), 0 deletions(-) rename src/{ => main/java}/org/lsmp/djep/djep/DJep.java (100%) rename src/{ => main/java}/org/lsmp/djep/djep/DPrintVisitor.java (100%) rename src/{ => main/java}/org/lsmp/djep/djep/DSymbolTable.java (100%) rename src/{ => main/java}/org/lsmp/djep/djep/DVariable.java (100%) rename src/{ => main/java}/org/lsmp/djep/djep/DVariableFactory.java (100%) rename src/{ => main/java}/org/lsmp/djep/djep/Diff.java (100%) rename src/{ => main/java}/org/lsmp/djep/djep/DiffRulesI.java (100%) rename src/{ => main/java}/org/lsmp/djep/djep/DifferentiationVisitor.java (100%) rename src/{ => main/java}/org/lsmp/djep/djep/PartialDerivative.java (100%) rename src/{ => main/java}/org/lsmp/djep/djep/diffRules/AdditionDiffRule.java (100%) rename src/{ => main/java}/org/lsmp/djep/djep/diffRules/ChainRuleDiffRules.java (100%) rename src/{ => main/java}/org/lsmp/djep/djep/diffRules/DivideDiffRule.java (100%) rename src/{ => main/java}/org/lsmp/djep/djep/diffRules/MacroDiffRules.java (100%) rename src/{ => main/java}/org/lsmp/djep/djep/diffRules/MacroFunctionDiffRules.java (100%) rename src/{ => main/java}/org/lsmp/djep/djep/diffRules/MultiplyDiffRule.java (100%) rename src/{ => main/java}/org/lsmp/djep/djep/diffRules/PassThroughDiffRule.java (100%) rename src/{ => main/java}/org/lsmp/djep/djep/diffRules/PowerDiffRule.java (100%) rename src/{ => main/java}/org/lsmp/djep/djep/diffRules/SubtractDiffRule.java (100%) rename src/{ => main/java}/org/lsmp/djep/djep/diffRules/package.html (100%) rename src/{ => main/java}/org/lsmp/djep/djep/package.html (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/GOperatorSet.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/GroupI.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/GroupJep.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/PolynomialVisitor.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/function/GAdd.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/function/GComparative.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/function/GDivide.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/function/GList.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/function/GLogical.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/function/GMod.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/function/GMultiply.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/function/GNot.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/function/GPower.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/function/GSubtract.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/function/GUMinus.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/function/package.html (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/groups/AlgebraicExtension.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/groups/BigReals.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/groups/ExtendedFreeGroup.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/groups/FreeGroup.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/groups/Group.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/groups/Integers.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/groups/PermutationGroup.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/groups/Quaternions.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/groups/Rationals.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/groups/Reals.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/groups/Zn.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/groups/package.html (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/interfaces/AbelianGroupI.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/interfaces/FieldI.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/interfaces/HasDivI.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/interfaces/HasListI.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/interfaces/HasModI.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/interfaces/HasPowerI.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/interfaces/IntegralDomainI.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/interfaces/OrderedSetI.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/interfaces/RingI.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/interfaces/package.html (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/package.html (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/values/AlgebraicExtensionElement.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/values/FreeGroupElement.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/values/HasComplexValueI.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/values/Permutation.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/values/Polynomial.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/values/Rational.java (100%) rename src/{ => main/java}/org/lsmp/djep/groupJep/values/package.html (100%) rename src/{ => main/java}/org/lsmp/djep/jama/Inverse.java (100%) rename src/{ => main/java}/org/lsmp/djep/jama/JamaUtil.java (100%) rename src/{ => main/java}/org/lsmp/djep/jama/Rank.java (100%) rename src/{ => main/java}/org/lsmp/djep/jama/Solve.java (100%) rename src/{ => main/java}/org/lsmp/djep/jama/package.html (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/MatrixEvaluator.java (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/MatrixJep.java (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/MatrixNodeFactory.java (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/MatrixOperatorSet.java (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/MatrixPartialDerivative.java (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/MatrixPreprocessor.java (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/MatrixSpecialEvaluationI.java (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/MatrixVariable.java (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/MatrixVariableFactory.java (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/MatrixVariableI.java (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/SpecialPreProcessorI.java (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/function/MArrayAccess.java (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/function/MAssign.java (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/function/MDiff.java (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/function/MIf.java (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/function/MList.java (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/function/MMap.java (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/function/MPower.java (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/function/MSum.java (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/function/package.html (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/nodeTypes/ASTMConstant.java (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/nodeTypes/ASTMFunNode.java (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/nodeTypes/ASTMVarNode.java (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/nodeTypes/MatrixNodeI.java (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/nodeTypes/package.html (100%) rename src/{ => main/java}/org/lsmp/djep/matrixJep/package.html (100%) rename src/{ => main/java}/org/lsmp/djep/mrpe/MRpCommandList.java (100%) rename src/{ => main/java}/org/lsmp/djep/mrpe/MRpEval.java (100%) rename src/{ => main/java}/org/lsmp/djep/mrpe/MRpRes.java (100%) rename src/{ => main/java}/org/lsmp/djep/mrpe/package.html (100%) rename src/{ => main/java}/org/lsmp/djep/package.html (100%) rename src/{ => main/java}/org/lsmp/djep/rewrite/AbstractRewrite.java (100%) rename src/{ => main/java}/org/lsmp/djep/rewrite/CollectPowers.java (100%) rename src/{ => main/java}/org/lsmp/djep/rewrite/ExpandBrackets.java (100%) rename src/{ => main/java}/org/lsmp/djep/rewrite/ExpandPower.java (100%) rename src/{ => main/java}/org/lsmp/djep/rewrite/RewriteRuleI.java (100%) rename src/{ => main/java}/org/lsmp/djep/rewrite/RewriteVisitor.java (100%) rename src/{ => main/java}/org/lsmp/djep/rewrite/package.html (100%) rename src/{ => main/java}/org/lsmp/djep/rpe/RpCommand.java (100%) rename src/{ => main/java}/org/lsmp/djep/rpe/RpCommandList.java (100%) rename src/{ => main/java}/org/lsmp/djep/rpe/RpEval.java (100%) rename src/{ => main/java}/org/lsmp/djep/rpe/package.html (100%) rename src/{ => main/java}/org/lsmp/djep/sjep/AbstractPNode.java (100%) rename src/{ => main/java}/org/lsmp/djep/sjep/Monomial.java (100%) rename src/{ => main/java}/org/lsmp/djep/sjep/MutiableMonomial.java (100%) rename src/{ => main/java}/org/lsmp/djep/sjep/MutiablePolynomial.java (100%) rename src/{ => main/java}/org/lsmp/djep/sjep/PConstant.java (100%) rename src/{ => main/java}/org/lsmp/djep/sjep/PFunction.java (100%) rename src/{ => main/java}/org/lsmp/djep/sjep/PNodeI.java (100%) rename src/{ => main/java}/org/lsmp/djep/sjep/POperator.java (100%) rename src/{ => main/java}/org/lsmp/djep/sjep/PVariable.java (100%) rename src/{ => main/java}/org/lsmp/djep/sjep/Polynomial.java (100%) rename src/{ => main/java}/org/lsmp/djep/sjep/PolynomialCreator.java (100%) rename src/{ => main/java}/org/lsmp/djep/sjep/package.html (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/Dimensions.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/VOperatorSet.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/VectorEvaluator.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/VectorJep.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/ArrayAccess.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/BinaryOperatorI.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/Determinant.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/Diagonal.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/ElementComparative.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/ElementDivide.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/ElementMultiply.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/ExteriorProduct.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/GenMat.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/GetDiagonal.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/Id.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/Length.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/MAdd.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/MDivide.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/MDot.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/MMultiply.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/MSubtract.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/MUMinus.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/NaryOperatorI.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/Size.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/Trace.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/Transpose.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/UnaryOperatorI.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/VEle.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/VList.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/VMap.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/VPower.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/VRange.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/VSum.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/function/package.html (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/package.html (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/values/MVector.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/values/Matrix.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/values/MatrixValueI.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/values/Scaler.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/values/Tensor.java (100%) rename src/{ => main/java}/org/lsmp/djep/vectorJep/values/package.html (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/BaseFormat.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/CommandVisitor.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/CommandVisitorI.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/DeepCopyVisitor.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/DoNothingVisitor.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/ErrorCatchingVisitor.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/Eval.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/MacroFunction.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/NodeFactory.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/PrintVisitor.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/SimplificationVisitor.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/SubstitutionVisitor.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/TreeUtils.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/XEvaluatorVisitor.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/XJep.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/XMath.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/XOperator.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/XOperatorSet.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/XSymbolTable.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/XVariable.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/XVariableFactory.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/function/Define.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/function/FromBase.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/function/Max.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/function/MaxArg.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/function/Min.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/function/MinArg.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/function/Product.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/function/Simpson.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/function/Sum.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/function/SumType.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/function/ToBase.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/function/Trapezium.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/function/XAssign.java (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/function/package.html (100%) rename src/{ => main/java}/org/lsmp/djep/xjep/package.html (100%) rename src/{ => main/java}/org/lsmp/djepExamples/AssignmentExample.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/BlockStatments.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/Console.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/DJepApplet.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/DJepConsole.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/DiffExample.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/GroupConsole.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/JamaConsole.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/MRpConsole.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/MRpDiffExample.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/MRpExample.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/MRpSpeed.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/MRpSurfExample.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/MatrixConsole.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/MatrixExample.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/MatrixSpeed.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/ObserverConsole.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/PrintExample.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/RpExample.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/RpSpeed.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/RpeConsole.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/SJepConsole.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/VectorConsole.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/VectorExample.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/VectorPrint.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/XJepConsole.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/XJepExample.java (100%) rename src/{ => main/java}/org/lsmp/djepExamples/package.html (100%) rename src/{ => main/java}/org/lsmp/djepJUnit/DJepTest.java (100%) rename src/{ => main/java}/org/lsmp/djepJUnit/GroupJepTest.java (100%) rename src/{ => main/java}/org/lsmp/djepJUnit/JepTest.java (100%) rename src/{ => main/java}/org/lsmp/djepJUnit/MRpTest.java (100%) rename src/{ => main/java}/org/lsmp/djepJUnit/MatrixJepTest.java (100%) rename src/{ => main/java}/org/lsmp/djepJUnit/RewriteTest.java (100%) rename src/{ => main/java}/org/lsmp/djepJUnit/RpTest.java (100%) rename src/{ => main/java}/org/lsmp/djepJUnit/SJepTest.java (100%) rename src/{ => main/java}/org/lsmp/djepJUnit/VectorJepTest.java (100%) rename src/{ => main/java}/org/lsmp/djepJUnit/XJepTest.java (100%) rename src/{ => main/java}/org/lsmp/djepJUnit/package.html (100%) rename src/{ => main/java}/org/nfunk/jep/.cvsignore (100%) rename src/{ => main/java}/org/nfunk/jep/ASTConstant.java (100%) rename src/{ => main/java}/org/nfunk/jep/ASTFunNode.java (100%) rename src/{ => main/java}/org/nfunk/jep/ASTStart.java (100%) rename src/{ => main/java}/org/nfunk/jep/ASTVarNode.java (100%) rename src/{ => main/java}/org/nfunk/jep/EvaluatorI.java (100%) rename src/{ => main/java}/org/nfunk/jep/EvaluatorVisitor.java (100%) rename src/{ => main/java}/org/nfunk/jep/FunctionTable.java (100%) rename src/{ => main/java}/org/nfunk/jep/JEP.java (100%) rename src/{ => main/java}/org/nfunk/jep/JJTParserState.java (100%) rename src/{ => main/java}/org/nfunk/jep/JavaCharStream.java (100%) rename src/{ => main/java}/org/nfunk/jep/Node.java (100%) rename src/{ => main/java}/org/nfunk/jep/Operator.java (100%) rename src/{ => main/java}/org/nfunk/jep/OperatorSet.java (100%) rename src/{ => main/java}/org/nfunk/jep/ParseException.java (100%) rename src/{ => main/java}/org/nfunk/jep/Parser.java (100%) rename src/{ => main/java}/org/nfunk/jep/Parser.jjt (100%) rename src/{ => main/java}/org/nfunk/jep/ParserConstants.java (100%) rename src/{ => main/java}/org/nfunk/jep/ParserDumpVisitor.java (100%) rename src/{ => main/java}/org/nfunk/jep/ParserTokenManager.java (100%) rename src/{ => main/java}/org/nfunk/jep/ParserTreeConstants.java (100%) rename src/{ => main/java}/org/nfunk/jep/ParserVisitor.java (100%) rename src/{ => main/java}/org/nfunk/jep/SimpleCharStream.java (100%) rename src/{ => main/java}/org/nfunk/jep/SimpleNode.java (100%) rename src/{ => main/java}/org/nfunk/jep/SymbolTable.java (100%) rename src/{ => main/java}/org/nfunk/jep/Token.java (100%) rename src/{ => main/java}/org/nfunk/jep/TokenMgrError.java (100%) rename src/{ => main/java}/org/nfunk/jep/Variable.java (100%) rename src/{ => main/java}/org/nfunk/jep/VariableFactory.java (100%) rename src/{ => main/java}/org/nfunk/jep/evaluation/CommandElement.java (100%) rename src/{ => main/java}/org/nfunk/jep/evaluation/CommandEvaluator.java (100%) rename src/{ => main/java}/org/nfunk/jep/evaluation/ExpressionCompiler.java (100%) rename src/{ => main/java}/org/nfunk/jep/evaluation/package.html (100%) rename src/{ => main/java}/org/nfunk/jep/function/Abs.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Add.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/ArcCosine.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/ArcCosineH.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/ArcSine.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/ArcSineH.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/ArcTanH.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/ArcTangent.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/ArcTangent2.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Arg.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Assign.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Binomial.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/CallbackEvaluationI.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Comparative.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/ComplexPFMC.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Conjugate.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Cosine.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/CosineH.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Cross.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Divide.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Dot.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Ele.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Exp.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/If.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Imaginary.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/LValueI.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/List.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Logarithm.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Logical.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Modulus.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Multiply.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/NaturalLogarithm.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Not.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Polar.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/PostfixMathCommand.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/PostfixMathCommandI.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Power.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Random.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Range.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Real.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Sine.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/SineH.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/SpecialEvaluationI.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/SquareRoot.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Str.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Subtract.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Sum.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/TanH.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/Tangent.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/UMinus.java (100%) rename src/{ => main/java}/org/nfunk/jep/function/package.html (100%) rename src/{ => main/java}/org/nfunk/jep/package.html (100%) rename src/{ => main/java}/org/nfunk/jep/type/Complex.java (100%) rename src/{ => main/java}/org/nfunk/jep/type/DoubleNumberFactory.java (100%) rename src/{ => main/java}/org/nfunk/jep/type/NumberFactory.java (100%) rename src/{ => main/java}/org/nfunk/jep/type/package.html (100%) rename src/{ => main/java}/org/nfunk/jepexamples/Console.java (100%) rename src/{ => main/java}/org/nfunk/jepexamples/Evaluator.java (100%) rename src/{ => main/java}/org/nfunk/jepexamples/Fractal.java (100%) rename src/{ => main/java}/org/nfunk/jepexamples/FractalCanvas.java (100%) rename src/{ => main/java}/org/nfunk/jepexamples/FunctionPlotter.java (100%) rename src/{ => main/java}/org/nfunk/jepexamples/GraphCanvas.java (100%) rename src/{ => main/java}/org/nfunk/jepexamples/LargeExpressionTest.java (100%) rename src/{ => main/java}/org/nfunk/jepexamples/SimpleTest.java (100%) rename src/{ => main/java}/org/nfunk/jepexamples/ThreadTest.java (100%) rename src/{ => main/java}/org/nfunk/jepexamples/ThreadTestThread.java (100%) rename src/{ => main/java}/org/nfunk/jepexamples/package.html (100%) rename src/{ => main/java}/org/nfunk/jeptesting/AllTests.java (100%) rename src/{ => main/java}/org/nfunk/jeptesting/JEPTest.java (100%) rename src/{ => main/java}/org/nfunk/jeptesting/LogarithmTest.java (100%) rename src/{ => main/java}/org/nfunk/jeptesting/NaturalLogarithmTest.java (100%) rename src/{ => main/java}/org/nfunk/jeptesting/package.html (100%) rename src/{ => main/java}/overview.html (100%) diff --git a/src/org/lsmp/djep/djep/DJep.java b/src/main/java/org/lsmp/djep/djep/DJep.java similarity index 100% rename from src/org/lsmp/djep/djep/DJep.java rename to src/main/java/org/lsmp/djep/djep/DJep.java diff --git a/src/org/lsmp/djep/djep/DPrintVisitor.java b/src/main/java/org/lsmp/djep/djep/DPrintVisitor.java similarity index 100% rename from src/org/lsmp/djep/djep/DPrintVisitor.java rename to src/main/java/org/lsmp/djep/djep/DPrintVisitor.java diff --git a/src/org/lsmp/djep/djep/DSymbolTable.java b/src/main/java/org/lsmp/djep/djep/DSymbolTable.java similarity index 100% rename from src/org/lsmp/djep/djep/DSymbolTable.java rename to src/main/java/org/lsmp/djep/djep/DSymbolTable.java diff --git a/src/org/lsmp/djep/djep/DVariable.java b/src/main/java/org/lsmp/djep/djep/DVariable.java similarity index 100% rename from src/org/lsmp/djep/djep/DVariable.java rename to src/main/java/org/lsmp/djep/djep/DVariable.java diff --git a/src/org/lsmp/djep/djep/DVariableFactory.java b/src/main/java/org/lsmp/djep/djep/DVariableFactory.java similarity index 100% rename from src/org/lsmp/djep/djep/DVariableFactory.java rename to src/main/java/org/lsmp/djep/djep/DVariableFactory.java diff --git a/src/org/lsmp/djep/djep/Diff.java b/src/main/java/org/lsmp/djep/djep/Diff.java similarity index 100% rename from src/org/lsmp/djep/djep/Diff.java rename to src/main/java/org/lsmp/djep/djep/Diff.java diff --git a/src/org/lsmp/djep/djep/DiffRulesI.java b/src/main/java/org/lsmp/djep/djep/DiffRulesI.java similarity index 100% rename from src/org/lsmp/djep/djep/DiffRulesI.java rename to src/main/java/org/lsmp/djep/djep/DiffRulesI.java diff --git a/src/org/lsmp/djep/djep/DifferentiationVisitor.java b/src/main/java/org/lsmp/djep/djep/DifferentiationVisitor.java similarity index 100% rename from src/org/lsmp/djep/djep/DifferentiationVisitor.java rename to src/main/java/org/lsmp/djep/djep/DifferentiationVisitor.java diff --git a/src/org/lsmp/djep/djep/PartialDerivative.java b/src/main/java/org/lsmp/djep/djep/PartialDerivative.java similarity index 100% rename from src/org/lsmp/djep/djep/PartialDerivative.java rename to src/main/java/org/lsmp/djep/djep/PartialDerivative.java diff --git a/src/org/lsmp/djep/djep/diffRules/AdditionDiffRule.java b/src/main/java/org/lsmp/djep/djep/diffRules/AdditionDiffRule.java similarity index 100% rename from src/org/lsmp/djep/djep/diffRules/AdditionDiffRule.java rename to src/main/java/org/lsmp/djep/djep/diffRules/AdditionDiffRule.java diff --git a/src/org/lsmp/djep/djep/diffRules/ChainRuleDiffRules.java b/src/main/java/org/lsmp/djep/djep/diffRules/ChainRuleDiffRules.java similarity index 100% rename from src/org/lsmp/djep/djep/diffRules/ChainRuleDiffRules.java rename to src/main/java/org/lsmp/djep/djep/diffRules/ChainRuleDiffRules.java diff --git a/src/org/lsmp/djep/djep/diffRules/DivideDiffRule.java b/src/main/java/org/lsmp/djep/djep/diffRules/DivideDiffRule.java similarity index 100% rename from src/org/lsmp/djep/djep/diffRules/DivideDiffRule.java rename to src/main/java/org/lsmp/djep/djep/diffRules/DivideDiffRule.java diff --git a/src/org/lsmp/djep/djep/diffRules/MacroDiffRules.java b/src/main/java/org/lsmp/djep/djep/diffRules/MacroDiffRules.java similarity index 100% rename from src/org/lsmp/djep/djep/diffRules/MacroDiffRules.java rename to src/main/java/org/lsmp/djep/djep/diffRules/MacroDiffRules.java diff --git a/src/org/lsmp/djep/djep/diffRules/MacroFunctionDiffRules.java b/src/main/java/org/lsmp/djep/djep/diffRules/MacroFunctionDiffRules.java similarity index 100% rename from src/org/lsmp/djep/djep/diffRules/MacroFunctionDiffRules.java rename to src/main/java/org/lsmp/djep/djep/diffRules/MacroFunctionDiffRules.java diff --git a/src/org/lsmp/djep/djep/diffRules/MultiplyDiffRule.java b/src/main/java/org/lsmp/djep/djep/diffRules/MultiplyDiffRule.java similarity index 100% rename from src/org/lsmp/djep/djep/diffRules/MultiplyDiffRule.java rename to src/main/java/org/lsmp/djep/djep/diffRules/MultiplyDiffRule.java diff --git a/src/org/lsmp/djep/djep/diffRules/PassThroughDiffRule.java b/src/main/java/org/lsmp/djep/djep/diffRules/PassThroughDiffRule.java similarity index 100% rename from src/org/lsmp/djep/djep/diffRules/PassThroughDiffRule.java rename to src/main/java/org/lsmp/djep/djep/diffRules/PassThroughDiffRule.java diff --git a/src/org/lsmp/djep/djep/diffRules/PowerDiffRule.java b/src/main/java/org/lsmp/djep/djep/diffRules/PowerDiffRule.java similarity index 100% rename from src/org/lsmp/djep/djep/diffRules/PowerDiffRule.java rename to src/main/java/org/lsmp/djep/djep/diffRules/PowerDiffRule.java diff --git a/src/org/lsmp/djep/djep/diffRules/SubtractDiffRule.java b/src/main/java/org/lsmp/djep/djep/diffRules/SubtractDiffRule.java similarity index 100% rename from src/org/lsmp/djep/djep/diffRules/SubtractDiffRule.java rename to src/main/java/org/lsmp/djep/djep/diffRules/SubtractDiffRule.java diff --git a/src/org/lsmp/djep/djep/diffRules/package.html b/src/main/java/org/lsmp/djep/djep/diffRules/package.html similarity index 100% rename from src/org/lsmp/djep/djep/diffRules/package.html rename to src/main/java/org/lsmp/djep/djep/diffRules/package.html diff --git a/src/org/lsmp/djep/djep/package.html b/src/main/java/org/lsmp/djep/djep/package.html similarity index 100% rename from src/org/lsmp/djep/djep/package.html rename to src/main/java/org/lsmp/djep/djep/package.html diff --git a/src/org/lsmp/djep/groupJep/GOperatorSet.java b/src/main/java/org/lsmp/djep/groupJep/GOperatorSet.java similarity index 100% rename from src/org/lsmp/djep/groupJep/GOperatorSet.java rename to src/main/java/org/lsmp/djep/groupJep/GOperatorSet.java diff --git a/src/org/lsmp/djep/groupJep/GroupI.java b/src/main/java/org/lsmp/djep/groupJep/GroupI.java similarity index 100% rename from src/org/lsmp/djep/groupJep/GroupI.java rename to src/main/java/org/lsmp/djep/groupJep/GroupI.java diff --git a/src/org/lsmp/djep/groupJep/GroupJep.java b/src/main/java/org/lsmp/djep/groupJep/GroupJep.java similarity index 100% rename from src/org/lsmp/djep/groupJep/GroupJep.java rename to src/main/java/org/lsmp/djep/groupJep/GroupJep.java diff --git a/src/org/lsmp/djep/groupJep/PolynomialVisitor.java b/src/main/java/org/lsmp/djep/groupJep/PolynomialVisitor.java similarity index 100% rename from src/org/lsmp/djep/groupJep/PolynomialVisitor.java rename to src/main/java/org/lsmp/djep/groupJep/PolynomialVisitor.java diff --git a/src/org/lsmp/djep/groupJep/function/GAdd.java b/src/main/java/org/lsmp/djep/groupJep/function/GAdd.java similarity index 100% rename from src/org/lsmp/djep/groupJep/function/GAdd.java rename to src/main/java/org/lsmp/djep/groupJep/function/GAdd.java diff --git a/src/org/lsmp/djep/groupJep/function/GComparative.java b/src/main/java/org/lsmp/djep/groupJep/function/GComparative.java similarity index 100% rename from src/org/lsmp/djep/groupJep/function/GComparative.java rename to src/main/java/org/lsmp/djep/groupJep/function/GComparative.java diff --git a/src/org/lsmp/djep/groupJep/function/GDivide.java b/src/main/java/org/lsmp/djep/groupJep/function/GDivide.java similarity index 100% rename from src/org/lsmp/djep/groupJep/function/GDivide.java rename to src/main/java/org/lsmp/djep/groupJep/function/GDivide.java diff --git a/src/org/lsmp/djep/groupJep/function/GList.java b/src/main/java/org/lsmp/djep/groupJep/function/GList.java similarity index 100% rename from src/org/lsmp/djep/groupJep/function/GList.java rename to src/main/java/org/lsmp/djep/groupJep/function/GList.java diff --git a/src/org/lsmp/djep/groupJep/function/GLogical.java b/src/main/java/org/lsmp/djep/groupJep/function/GLogical.java similarity index 100% rename from src/org/lsmp/djep/groupJep/function/GLogical.java rename to src/main/java/org/lsmp/djep/groupJep/function/GLogical.java diff --git a/src/org/lsmp/djep/groupJep/function/GMod.java b/src/main/java/org/lsmp/djep/groupJep/function/GMod.java similarity index 100% rename from src/org/lsmp/djep/groupJep/function/GMod.java rename to src/main/java/org/lsmp/djep/groupJep/function/GMod.java diff --git a/src/org/lsmp/djep/groupJep/function/GMultiply.java b/src/main/java/org/lsmp/djep/groupJep/function/GMultiply.java similarity index 100% rename from src/org/lsmp/djep/groupJep/function/GMultiply.java rename to src/main/java/org/lsmp/djep/groupJep/function/GMultiply.java diff --git a/src/org/lsmp/djep/groupJep/function/GNot.java b/src/main/java/org/lsmp/djep/groupJep/function/GNot.java similarity index 100% rename from src/org/lsmp/djep/groupJep/function/GNot.java rename to src/main/java/org/lsmp/djep/groupJep/function/GNot.java diff --git a/src/org/lsmp/djep/groupJep/function/GPower.java b/src/main/java/org/lsmp/djep/groupJep/function/GPower.java similarity index 100% rename from src/org/lsmp/djep/groupJep/function/GPower.java rename to src/main/java/org/lsmp/djep/groupJep/function/GPower.java diff --git a/src/org/lsmp/djep/groupJep/function/GSubtract.java b/src/main/java/org/lsmp/djep/groupJep/function/GSubtract.java similarity index 100% rename from src/org/lsmp/djep/groupJep/function/GSubtract.java rename to src/main/java/org/lsmp/djep/groupJep/function/GSubtract.java diff --git a/src/org/lsmp/djep/groupJep/function/GUMinus.java b/src/main/java/org/lsmp/djep/groupJep/function/GUMinus.java similarity index 100% rename from src/org/lsmp/djep/groupJep/function/GUMinus.java rename to src/main/java/org/lsmp/djep/groupJep/function/GUMinus.java diff --git a/src/org/lsmp/djep/groupJep/function/package.html b/src/main/java/org/lsmp/djep/groupJep/function/package.html similarity index 100% rename from src/org/lsmp/djep/groupJep/function/package.html rename to src/main/java/org/lsmp/djep/groupJep/function/package.html diff --git a/src/org/lsmp/djep/groupJep/groups/AlgebraicExtension.java b/src/main/java/org/lsmp/djep/groupJep/groups/AlgebraicExtension.java similarity index 100% rename from src/org/lsmp/djep/groupJep/groups/AlgebraicExtension.java rename to src/main/java/org/lsmp/djep/groupJep/groups/AlgebraicExtension.java diff --git a/src/org/lsmp/djep/groupJep/groups/BigReals.java b/src/main/java/org/lsmp/djep/groupJep/groups/BigReals.java similarity index 100% rename from src/org/lsmp/djep/groupJep/groups/BigReals.java rename to src/main/java/org/lsmp/djep/groupJep/groups/BigReals.java diff --git a/src/org/lsmp/djep/groupJep/groups/ExtendedFreeGroup.java b/src/main/java/org/lsmp/djep/groupJep/groups/ExtendedFreeGroup.java similarity index 100% rename from src/org/lsmp/djep/groupJep/groups/ExtendedFreeGroup.java rename to src/main/java/org/lsmp/djep/groupJep/groups/ExtendedFreeGroup.java diff --git a/src/org/lsmp/djep/groupJep/groups/FreeGroup.java b/src/main/java/org/lsmp/djep/groupJep/groups/FreeGroup.java similarity index 100% rename from src/org/lsmp/djep/groupJep/groups/FreeGroup.java rename to src/main/java/org/lsmp/djep/groupJep/groups/FreeGroup.java diff --git a/src/org/lsmp/djep/groupJep/groups/Group.java b/src/main/java/org/lsmp/djep/groupJep/groups/Group.java similarity index 100% rename from src/org/lsmp/djep/groupJep/groups/Group.java rename to src/main/java/org/lsmp/djep/groupJep/groups/Group.java diff --git a/src/org/lsmp/djep/groupJep/groups/Integers.java b/src/main/java/org/lsmp/djep/groupJep/groups/Integers.java similarity index 100% rename from src/org/lsmp/djep/groupJep/groups/Integers.java rename to src/main/java/org/lsmp/djep/groupJep/groups/Integers.java diff --git a/src/org/lsmp/djep/groupJep/groups/PermutationGroup.java b/src/main/java/org/lsmp/djep/groupJep/groups/PermutationGroup.java similarity index 100% rename from src/org/lsmp/djep/groupJep/groups/PermutationGroup.java rename to src/main/java/org/lsmp/djep/groupJep/groups/PermutationGroup.java diff --git a/src/org/lsmp/djep/groupJep/groups/Quaternions.java b/src/main/java/org/lsmp/djep/groupJep/groups/Quaternions.java similarity index 100% rename from src/org/lsmp/djep/groupJep/groups/Quaternions.java rename to src/main/java/org/lsmp/djep/groupJep/groups/Quaternions.java diff --git a/src/org/lsmp/djep/groupJep/groups/Rationals.java b/src/main/java/org/lsmp/djep/groupJep/groups/Rationals.java similarity index 100% rename from src/org/lsmp/djep/groupJep/groups/Rationals.java rename to src/main/java/org/lsmp/djep/groupJep/groups/Rationals.java diff --git a/src/org/lsmp/djep/groupJep/groups/Reals.java b/src/main/java/org/lsmp/djep/groupJep/groups/Reals.java similarity index 100% rename from src/org/lsmp/djep/groupJep/groups/Reals.java rename to src/main/java/org/lsmp/djep/groupJep/groups/Reals.java diff --git a/src/org/lsmp/djep/groupJep/groups/Zn.java b/src/main/java/org/lsmp/djep/groupJep/groups/Zn.java similarity index 100% rename from src/org/lsmp/djep/groupJep/groups/Zn.java rename to src/main/java/org/lsmp/djep/groupJep/groups/Zn.java diff --git a/src/org/lsmp/djep/groupJep/groups/package.html b/src/main/java/org/lsmp/djep/groupJep/groups/package.html similarity index 100% rename from src/org/lsmp/djep/groupJep/groups/package.html rename to src/main/java/org/lsmp/djep/groupJep/groups/package.html diff --git a/src/org/lsmp/djep/groupJep/interfaces/AbelianGroupI.java b/src/main/java/org/lsmp/djep/groupJep/interfaces/AbelianGroupI.java similarity index 100% rename from src/org/lsmp/djep/groupJep/interfaces/AbelianGroupI.java rename to src/main/java/org/lsmp/djep/groupJep/interfaces/AbelianGroupI.java diff --git a/src/org/lsmp/djep/groupJep/interfaces/FieldI.java b/src/main/java/org/lsmp/djep/groupJep/interfaces/FieldI.java similarity index 100% rename from src/org/lsmp/djep/groupJep/interfaces/FieldI.java rename to src/main/java/org/lsmp/djep/groupJep/interfaces/FieldI.java diff --git a/src/org/lsmp/djep/groupJep/interfaces/HasDivI.java b/src/main/java/org/lsmp/djep/groupJep/interfaces/HasDivI.java similarity index 100% rename from src/org/lsmp/djep/groupJep/interfaces/HasDivI.java rename to src/main/java/org/lsmp/djep/groupJep/interfaces/HasDivI.java diff --git a/src/org/lsmp/djep/groupJep/interfaces/HasListI.java b/src/main/java/org/lsmp/djep/groupJep/interfaces/HasListI.java similarity index 100% rename from src/org/lsmp/djep/groupJep/interfaces/HasListI.java rename to src/main/java/org/lsmp/djep/groupJep/interfaces/HasListI.java diff --git a/src/org/lsmp/djep/groupJep/interfaces/HasModI.java b/src/main/java/org/lsmp/djep/groupJep/interfaces/HasModI.java similarity index 100% rename from src/org/lsmp/djep/groupJep/interfaces/HasModI.java rename to src/main/java/org/lsmp/djep/groupJep/interfaces/HasModI.java diff --git a/src/org/lsmp/djep/groupJep/interfaces/HasPowerI.java b/src/main/java/org/lsmp/djep/groupJep/interfaces/HasPowerI.java similarity index 100% rename from src/org/lsmp/djep/groupJep/interfaces/HasPowerI.java rename to src/main/java/org/lsmp/djep/groupJep/interfaces/HasPowerI.java diff --git a/src/org/lsmp/djep/groupJep/interfaces/IntegralDomainI.java b/src/main/java/org/lsmp/djep/groupJep/interfaces/IntegralDomainI.java similarity index 100% rename from src/org/lsmp/djep/groupJep/interfaces/IntegralDomainI.java rename to src/main/java/org/lsmp/djep/groupJep/interfaces/IntegralDomainI.java diff --git a/src/org/lsmp/djep/groupJep/interfaces/OrderedSetI.java b/src/main/java/org/lsmp/djep/groupJep/interfaces/OrderedSetI.java similarity index 100% rename from src/org/lsmp/djep/groupJep/interfaces/OrderedSetI.java rename to src/main/java/org/lsmp/djep/groupJep/interfaces/OrderedSetI.java diff --git a/src/org/lsmp/djep/groupJep/interfaces/RingI.java b/src/main/java/org/lsmp/djep/groupJep/interfaces/RingI.java similarity index 100% rename from src/org/lsmp/djep/groupJep/interfaces/RingI.java rename to src/main/java/org/lsmp/djep/groupJep/interfaces/RingI.java diff --git a/src/org/lsmp/djep/groupJep/interfaces/package.html b/src/main/java/org/lsmp/djep/groupJep/interfaces/package.html similarity index 100% rename from src/org/lsmp/djep/groupJep/interfaces/package.html rename to src/main/java/org/lsmp/djep/groupJep/interfaces/package.html diff --git a/src/org/lsmp/djep/groupJep/package.html b/src/main/java/org/lsmp/djep/groupJep/package.html similarity index 100% rename from src/org/lsmp/djep/groupJep/package.html rename to src/main/java/org/lsmp/djep/groupJep/package.html diff --git a/src/org/lsmp/djep/groupJep/values/AlgebraicExtensionElement.java b/src/main/java/org/lsmp/djep/groupJep/values/AlgebraicExtensionElement.java similarity index 100% rename from src/org/lsmp/djep/groupJep/values/AlgebraicExtensionElement.java rename to src/main/java/org/lsmp/djep/groupJep/values/AlgebraicExtensionElement.java diff --git a/src/org/lsmp/djep/groupJep/values/FreeGroupElement.java b/src/main/java/org/lsmp/djep/groupJep/values/FreeGroupElement.java similarity index 100% rename from src/org/lsmp/djep/groupJep/values/FreeGroupElement.java rename to src/main/java/org/lsmp/djep/groupJep/values/FreeGroupElement.java diff --git a/src/org/lsmp/djep/groupJep/values/HasComplexValueI.java b/src/main/java/org/lsmp/djep/groupJep/values/HasComplexValueI.java similarity index 100% rename from src/org/lsmp/djep/groupJep/values/HasComplexValueI.java rename to src/main/java/org/lsmp/djep/groupJep/values/HasComplexValueI.java diff --git a/src/org/lsmp/djep/groupJep/values/Permutation.java b/src/main/java/org/lsmp/djep/groupJep/values/Permutation.java similarity index 100% rename from src/org/lsmp/djep/groupJep/values/Permutation.java rename to src/main/java/org/lsmp/djep/groupJep/values/Permutation.java diff --git a/src/org/lsmp/djep/groupJep/values/Polynomial.java b/src/main/java/org/lsmp/djep/groupJep/values/Polynomial.java similarity index 100% rename from src/org/lsmp/djep/groupJep/values/Polynomial.java rename to src/main/java/org/lsmp/djep/groupJep/values/Polynomial.java diff --git a/src/org/lsmp/djep/groupJep/values/Rational.java b/src/main/java/org/lsmp/djep/groupJep/values/Rational.java similarity index 100% rename from src/org/lsmp/djep/groupJep/values/Rational.java rename to src/main/java/org/lsmp/djep/groupJep/values/Rational.java diff --git a/src/org/lsmp/djep/groupJep/values/package.html b/src/main/java/org/lsmp/djep/groupJep/values/package.html similarity index 100% rename from src/org/lsmp/djep/groupJep/values/package.html rename to src/main/java/org/lsmp/djep/groupJep/values/package.html diff --git a/src/org/lsmp/djep/jama/Inverse.java b/src/main/java/org/lsmp/djep/jama/Inverse.java similarity index 100% rename from src/org/lsmp/djep/jama/Inverse.java rename to src/main/java/org/lsmp/djep/jama/Inverse.java diff --git a/src/org/lsmp/djep/jama/JamaUtil.java b/src/main/java/org/lsmp/djep/jama/JamaUtil.java similarity index 100% rename from src/org/lsmp/djep/jama/JamaUtil.java rename to src/main/java/org/lsmp/djep/jama/JamaUtil.java diff --git a/src/org/lsmp/djep/jama/Rank.java b/src/main/java/org/lsmp/djep/jama/Rank.java similarity index 100% rename from src/org/lsmp/djep/jama/Rank.java rename to src/main/java/org/lsmp/djep/jama/Rank.java diff --git a/src/org/lsmp/djep/jama/Solve.java b/src/main/java/org/lsmp/djep/jama/Solve.java similarity index 100% rename from src/org/lsmp/djep/jama/Solve.java rename to src/main/java/org/lsmp/djep/jama/Solve.java diff --git a/src/org/lsmp/djep/jama/package.html b/src/main/java/org/lsmp/djep/jama/package.html similarity index 100% rename from src/org/lsmp/djep/jama/package.html rename to src/main/java/org/lsmp/djep/jama/package.html diff --git a/src/org/lsmp/djep/matrixJep/MatrixEvaluator.java b/src/main/java/org/lsmp/djep/matrixJep/MatrixEvaluator.java similarity index 100% rename from src/org/lsmp/djep/matrixJep/MatrixEvaluator.java rename to src/main/java/org/lsmp/djep/matrixJep/MatrixEvaluator.java diff --git a/src/org/lsmp/djep/matrixJep/MatrixJep.java b/src/main/java/org/lsmp/djep/matrixJep/MatrixJep.java similarity index 100% rename from src/org/lsmp/djep/matrixJep/MatrixJep.java rename to src/main/java/org/lsmp/djep/matrixJep/MatrixJep.java diff --git a/src/org/lsmp/djep/matrixJep/MatrixNodeFactory.java b/src/main/java/org/lsmp/djep/matrixJep/MatrixNodeFactory.java similarity index 100% rename from src/org/lsmp/djep/matrixJep/MatrixNodeFactory.java rename to src/main/java/org/lsmp/djep/matrixJep/MatrixNodeFactory.java diff --git a/src/org/lsmp/djep/matrixJep/MatrixOperatorSet.java b/src/main/java/org/lsmp/djep/matrixJep/MatrixOperatorSet.java similarity index 100% rename from src/org/lsmp/djep/matrixJep/MatrixOperatorSet.java rename to src/main/java/org/lsmp/djep/matrixJep/MatrixOperatorSet.java diff --git a/src/org/lsmp/djep/matrixJep/MatrixPartialDerivative.java b/src/main/java/org/lsmp/djep/matrixJep/MatrixPartialDerivative.java similarity index 100% rename from src/org/lsmp/djep/matrixJep/MatrixPartialDerivative.java rename to src/main/java/org/lsmp/djep/matrixJep/MatrixPartialDerivative.java diff --git a/src/org/lsmp/djep/matrixJep/MatrixPreprocessor.java b/src/main/java/org/lsmp/djep/matrixJep/MatrixPreprocessor.java similarity index 100% rename from src/org/lsmp/djep/matrixJep/MatrixPreprocessor.java rename to src/main/java/org/lsmp/djep/matrixJep/MatrixPreprocessor.java diff --git a/src/org/lsmp/djep/matrixJep/MatrixSpecialEvaluationI.java b/src/main/java/org/lsmp/djep/matrixJep/MatrixSpecialEvaluationI.java similarity index 100% rename from src/org/lsmp/djep/matrixJep/MatrixSpecialEvaluationI.java rename to src/main/java/org/lsmp/djep/matrixJep/MatrixSpecialEvaluationI.java diff --git a/src/org/lsmp/djep/matrixJep/MatrixVariable.java b/src/main/java/org/lsmp/djep/matrixJep/MatrixVariable.java similarity index 100% rename from src/org/lsmp/djep/matrixJep/MatrixVariable.java rename to src/main/java/org/lsmp/djep/matrixJep/MatrixVariable.java diff --git a/src/org/lsmp/djep/matrixJep/MatrixVariableFactory.java b/src/main/java/org/lsmp/djep/matrixJep/MatrixVariableFactory.java similarity index 100% rename from src/org/lsmp/djep/matrixJep/MatrixVariableFactory.java rename to src/main/java/org/lsmp/djep/matrixJep/MatrixVariableFactory.java diff --git a/src/org/lsmp/djep/matrixJep/MatrixVariableI.java b/src/main/java/org/lsmp/djep/matrixJep/MatrixVariableI.java similarity index 100% rename from src/org/lsmp/djep/matrixJep/MatrixVariableI.java rename to src/main/java/org/lsmp/djep/matrixJep/MatrixVariableI.java diff --git a/src/org/lsmp/djep/matrixJep/SpecialPreProcessorI.java b/src/main/java/org/lsmp/djep/matrixJep/SpecialPreProcessorI.java similarity index 100% rename from src/org/lsmp/djep/matrixJep/SpecialPreProcessorI.java rename to src/main/java/org/lsmp/djep/matrixJep/SpecialPreProcessorI.java diff --git a/src/org/lsmp/djep/matrixJep/function/MArrayAccess.java b/src/main/java/org/lsmp/djep/matrixJep/function/MArrayAccess.java similarity index 100% rename from src/org/lsmp/djep/matrixJep/function/MArrayAccess.java rename to src/main/java/org/lsmp/djep/matrixJep/function/MArrayAccess.java diff --git a/src/org/lsmp/djep/matrixJep/function/MAssign.java b/src/main/java/org/lsmp/djep/matrixJep/function/MAssign.java similarity index 100% rename from src/org/lsmp/djep/matrixJep/function/MAssign.java rename to src/main/java/org/lsmp/djep/matrixJep/function/MAssign.java diff --git a/src/org/lsmp/djep/matrixJep/function/MDiff.java b/src/main/java/org/lsmp/djep/matrixJep/function/MDiff.java similarity index 100% rename from src/org/lsmp/djep/matrixJep/function/MDiff.java rename to src/main/java/org/lsmp/djep/matrixJep/function/MDiff.java diff --git a/src/org/lsmp/djep/matrixJep/function/MIf.java b/src/main/java/org/lsmp/djep/matrixJep/function/MIf.java similarity index 100% rename from src/org/lsmp/djep/matrixJep/function/MIf.java rename to src/main/java/org/lsmp/djep/matrixJep/function/MIf.java diff --git a/src/org/lsmp/djep/matrixJep/function/MList.java b/src/main/java/org/lsmp/djep/matrixJep/function/MList.java similarity index 100% rename from src/org/lsmp/djep/matrixJep/function/MList.java rename to src/main/java/org/lsmp/djep/matrixJep/function/MList.java diff --git a/src/org/lsmp/djep/matrixJep/function/MMap.java b/src/main/java/org/lsmp/djep/matrixJep/function/MMap.java similarity index 100% rename from src/org/lsmp/djep/matrixJep/function/MMap.java rename to src/main/java/org/lsmp/djep/matrixJep/function/MMap.java diff --git a/src/org/lsmp/djep/matrixJep/function/MPower.java b/src/main/java/org/lsmp/djep/matrixJep/function/MPower.java similarity index 100% rename from src/org/lsmp/djep/matrixJep/function/MPower.java rename to src/main/java/org/lsmp/djep/matrixJep/function/MPower.java diff --git a/src/org/lsmp/djep/matrixJep/function/MSum.java b/src/main/java/org/lsmp/djep/matrixJep/function/MSum.java similarity index 100% rename from src/org/lsmp/djep/matrixJep/function/MSum.java rename to src/main/java/org/lsmp/djep/matrixJep/function/MSum.java diff --git a/src/org/lsmp/djep/matrixJep/function/package.html b/src/main/java/org/lsmp/djep/matrixJep/function/package.html similarity index 100% rename from src/org/lsmp/djep/matrixJep/function/package.html rename to src/main/java/org/lsmp/djep/matrixJep/function/package.html diff --git a/src/org/lsmp/djep/matrixJep/nodeTypes/ASTMConstant.java b/src/main/java/org/lsmp/djep/matrixJep/nodeTypes/ASTMConstant.java similarity index 100% rename from src/org/lsmp/djep/matrixJep/nodeTypes/ASTMConstant.java rename to src/main/java/org/lsmp/djep/matrixJep/nodeTypes/ASTMConstant.java diff --git a/src/org/lsmp/djep/matrixJep/nodeTypes/ASTMFunNode.java b/src/main/java/org/lsmp/djep/matrixJep/nodeTypes/ASTMFunNode.java similarity index 100% rename from src/org/lsmp/djep/matrixJep/nodeTypes/ASTMFunNode.java rename to src/main/java/org/lsmp/djep/matrixJep/nodeTypes/ASTMFunNode.java diff --git a/src/org/lsmp/djep/matrixJep/nodeTypes/ASTMVarNode.java b/src/main/java/org/lsmp/djep/matrixJep/nodeTypes/ASTMVarNode.java similarity index 100% rename from src/org/lsmp/djep/matrixJep/nodeTypes/ASTMVarNode.java rename to src/main/java/org/lsmp/djep/matrixJep/nodeTypes/ASTMVarNode.java diff --git a/src/org/lsmp/djep/matrixJep/nodeTypes/MatrixNodeI.java b/src/main/java/org/lsmp/djep/matrixJep/nodeTypes/MatrixNodeI.java similarity index 100% rename from src/org/lsmp/djep/matrixJep/nodeTypes/MatrixNodeI.java rename to src/main/java/org/lsmp/djep/matrixJep/nodeTypes/MatrixNodeI.java diff --git a/src/org/lsmp/djep/matrixJep/nodeTypes/package.html b/src/main/java/org/lsmp/djep/matrixJep/nodeTypes/package.html similarity index 100% rename from src/org/lsmp/djep/matrixJep/nodeTypes/package.html rename to src/main/java/org/lsmp/djep/matrixJep/nodeTypes/package.html diff --git a/src/org/lsmp/djep/matrixJep/package.html b/src/main/java/org/lsmp/djep/matrixJep/package.html similarity index 100% rename from src/org/lsmp/djep/matrixJep/package.html rename to src/main/java/org/lsmp/djep/matrixJep/package.html diff --git a/src/org/lsmp/djep/mrpe/MRpCommandList.java b/src/main/java/org/lsmp/djep/mrpe/MRpCommandList.java similarity index 100% rename from src/org/lsmp/djep/mrpe/MRpCommandList.java rename to src/main/java/org/lsmp/djep/mrpe/MRpCommandList.java diff --git a/src/org/lsmp/djep/mrpe/MRpEval.java b/src/main/java/org/lsmp/djep/mrpe/MRpEval.java similarity index 100% rename from src/org/lsmp/djep/mrpe/MRpEval.java rename to src/main/java/org/lsmp/djep/mrpe/MRpEval.java diff --git a/src/org/lsmp/djep/mrpe/MRpRes.java b/src/main/java/org/lsmp/djep/mrpe/MRpRes.java similarity index 100% rename from src/org/lsmp/djep/mrpe/MRpRes.java rename to src/main/java/org/lsmp/djep/mrpe/MRpRes.java diff --git a/src/org/lsmp/djep/mrpe/package.html b/src/main/java/org/lsmp/djep/mrpe/package.html similarity index 100% rename from src/org/lsmp/djep/mrpe/package.html rename to src/main/java/org/lsmp/djep/mrpe/package.html diff --git a/src/org/lsmp/djep/package.html b/src/main/java/org/lsmp/djep/package.html similarity index 100% rename from src/org/lsmp/djep/package.html rename to src/main/java/org/lsmp/djep/package.html diff --git a/src/org/lsmp/djep/rewrite/AbstractRewrite.java b/src/main/java/org/lsmp/djep/rewrite/AbstractRewrite.java similarity index 100% rename from src/org/lsmp/djep/rewrite/AbstractRewrite.java rename to src/main/java/org/lsmp/djep/rewrite/AbstractRewrite.java diff --git a/src/org/lsmp/djep/rewrite/CollectPowers.java b/src/main/java/org/lsmp/djep/rewrite/CollectPowers.java similarity index 100% rename from src/org/lsmp/djep/rewrite/CollectPowers.java rename to src/main/java/org/lsmp/djep/rewrite/CollectPowers.java diff --git a/src/org/lsmp/djep/rewrite/ExpandBrackets.java b/src/main/java/org/lsmp/djep/rewrite/ExpandBrackets.java similarity index 100% rename from src/org/lsmp/djep/rewrite/ExpandBrackets.java rename to src/main/java/org/lsmp/djep/rewrite/ExpandBrackets.java diff --git a/src/org/lsmp/djep/rewrite/ExpandPower.java b/src/main/java/org/lsmp/djep/rewrite/ExpandPower.java similarity index 100% rename from src/org/lsmp/djep/rewrite/ExpandPower.java rename to src/main/java/org/lsmp/djep/rewrite/ExpandPower.java diff --git a/src/org/lsmp/djep/rewrite/RewriteRuleI.java b/src/main/java/org/lsmp/djep/rewrite/RewriteRuleI.java similarity index 100% rename from src/org/lsmp/djep/rewrite/RewriteRuleI.java rename to src/main/java/org/lsmp/djep/rewrite/RewriteRuleI.java diff --git a/src/org/lsmp/djep/rewrite/RewriteVisitor.java b/src/main/java/org/lsmp/djep/rewrite/RewriteVisitor.java similarity index 100% rename from src/org/lsmp/djep/rewrite/RewriteVisitor.java rename to src/main/java/org/lsmp/djep/rewrite/RewriteVisitor.java diff --git a/src/org/lsmp/djep/rewrite/package.html b/src/main/java/org/lsmp/djep/rewrite/package.html similarity index 100% rename from src/org/lsmp/djep/rewrite/package.html rename to src/main/java/org/lsmp/djep/rewrite/package.html diff --git a/src/org/lsmp/djep/rpe/RpCommand.java b/src/main/java/org/lsmp/djep/rpe/RpCommand.java similarity index 100% rename from src/org/lsmp/djep/rpe/RpCommand.java rename to src/main/java/org/lsmp/djep/rpe/RpCommand.java diff --git a/src/org/lsmp/djep/rpe/RpCommandList.java b/src/main/java/org/lsmp/djep/rpe/RpCommandList.java similarity index 100% rename from src/org/lsmp/djep/rpe/RpCommandList.java rename to src/main/java/org/lsmp/djep/rpe/RpCommandList.java diff --git a/src/org/lsmp/djep/rpe/RpEval.java b/src/main/java/org/lsmp/djep/rpe/RpEval.java similarity index 100% rename from src/org/lsmp/djep/rpe/RpEval.java rename to src/main/java/org/lsmp/djep/rpe/RpEval.java diff --git a/src/org/lsmp/djep/rpe/package.html b/src/main/java/org/lsmp/djep/rpe/package.html similarity index 100% rename from src/org/lsmp/djep/rpe/package.html rename to src/main/java/org/lsmp/djep/rpe/package.html diff --git a/src/org/lsmp/djep/sjep/AbstractPNode.java b/src/main/java/org/lsmp/djep/sjep/AbstractPNode.java similarity index 100% rename from src/org/lsmp/djep/sjep/AbstractPNode.java rename to src/main/java/org/lsmp/djep/sjep/AbstractPNode.java diff --git a/src/org/lsmp/djep/sjep/Monomial.java b/src/main/java/org/lsmp/djep/sjep/Monomial.java similarity index 100% rename from src/org/lsmp/djep/sjep/Monomial.java rename to src/main/java/org/lsmp/djep/sjep/Monomial.java diff --git a/src/org/lsmp/djep/sjep/MutiableMonomial.java b/src/main/java/org/lsmp/djep/sjep/MutiableMonomial.java similarity index 100% rename from src/org/lsmp/djep/sjep/MutiableMonomial.java rename to src/main/java/org/lsmp/djep/sjep/MutiableMonomial.java diff --git a/src/org/lsmp/djep/sjep/MutiablePolynomial.java b/src/main/java/org/lsmp/djep/sjep/MutiablePolynomial.java similarity index 100% rename from src/org/lsmp/djep/sjep/MutiablePolynomial.java rename to src/main/java/org/lsmp/djep/sjep/MutiablePolynomial.java diff --git a/src/org/lsmp/djep/sjep/PConstant.java b/src/main/java/org/lsmp/djep/sjep/PConstant.java similarity index 100% rename from src/org/lsmp/djep/sjep/PConstant.java rename to src/main/java/org/lsmp/djep/sjep/PConstant.java diff --git a/src/org/lsmp/djep/sjep/PFunction.java b/src/main/java/org/lsmp/djep/sjep/PFunction.java similarity index 100% rename from src/org/lsmp/djep/sjep/PFunction.java rename to src/main/java/org/lsmp/djep/sjep/PFunction.java diff --git a/src/org/lsmp/djep/sjep/PNodeI.java b/src/main/java/org/lsmp/djep/sjep/PNodeI.java similarity index 100% rename from src/org/lsmp/djep/sjep/PNodeI.java rename to src/main/java/org/lsmp/djep/sjep/PNodeI.java diff --git a/src/org/lsmp/djep/sjep/POperator.java b/src/main/java/org/lsmp/djep/sjep/POperator.java similarity index 100% rename from src/org/lsmp/djep/sjep/POperator.java rename to src/main/java/org/lsmp/djep/sjep/POperator.java diff --git a/src/org/lsmp/djep/sjep/PVariable.java b/src/main/java/org/lsmp/djep/sjep/PVariable.java similarity index 100% rename from src/org/lsmp/djep/sjep/PVariable.java rename to src/main/java/org/lsmp/djep/sjep/PVariable.java diff --git a/src/org/lsmp/djep/sjep/Polynomial.java b/src/main/java/org/lsmp/djep/sjep/Polynomial.java similarity index 100% rename from src/org/lsmp/djep/sjep/Polynomial.java rename to src/main/java/org/lsmp/djep/sjep/Polynomial.java diff --git a/src/org/lsmp/djep/sjep/PolynomialCreator.java b/src/main/java/org/lsmp/djep/sjep/PolynomialCreator.java similarity index 100% rename from src/org/lsmp/djep/sjep/PolynomialCreator.java rename to src/main/java/org/lsmp/djep/sjep/PolynomialCreator.java diff --git a/src/org/lsmp/djep/sjep/package.html b/src/main/java/org/lsmp/djep/sjep/package.html similarity index 100% rename from src/org/lsmp/djep/sjep/package.html rename to src/main/java/org/lsmp/djep/sjep/package.html diff --git a/src/org/lsmp/djep/vectorJep/Dimensions.java b/src/main/java/org/lsmp/djep/vectorJep/Dimensions.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/Dimensions.java rename to src/main/java/org/lsmp/djep/vectorJep/Dimensions.java diff --git a/src/org/lsmp/djep/vectorJep/VOperatorSet.java b/src/main/java/org/lsmp/djep/vectorJep/VOperatorSet.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/VOperatorSet.java rename to src/main/java/org/lsmp/djep/vectorJep/VOperatorSet.java diff --git a/src/org/lsmp/djep/vectorJep/VectorEvaluator.java b/src/main/java/org/lsmp/djep/vectorJep/VectorEvaluator.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/VectorEvaluator.java rename to src/main/java/org/lsmp/djep/vectorJep/VectorEvaluator.java diff --git a/src/org/lsmp/djep/vectorJep/VectorJep.java b/src/main/java/org/lsmp/djep/vectorJep/VectorJep.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/VectorJep.java rename to src/main/java/org/lsmp/djep/vectorJep/VectorJep.java diff --git a/src/org/lsmp/djep/vectorJep/function/ArrayAccess.java b/src/main/java/org/lsmp/djep/vectorJep/function/ArrayAccess.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/ArrayAccess.java rename to src/main/java/org/lsmp/djep/vectorJep/function/ArrayAccess.java diff --git a/src/org/lsmp/djep/vectorJep/function/BinaryOperatorI.java b/src/main/java/org/lsmp/djep/vectorJep/function/BinaryOperatorI.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/BinaryOperatorI.java rename to src/main/java/org/lsmp/djep/vectorJep/function/BinaryOperatorI.java diff --git a/src/org/lsmp/djep/vectorJep/function/Determinant.java b/src/main/java/org/lsmp/djep/vectorJep/function/Determinant.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/Determinant.java rename to src/main/java/org/lsmp/djep/vectorJep/function/Determinant.java diff --git a/src/org/lsmp/djep/vectorJep/function/Diagonal.java b/src/main/java/org/lsmp/djep/vectorJep/function/Diagonal.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/Diagonal.java rename to src/main/java/org/lsmp/djep/vectorJep/function/Diagonal.java diff --git a/src/org/lsmp/djep/vectorJep/function/ElementComparative.java b/src/main/java/org/lsmp/djep/vectorJep/function/ElementComparative.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/ElementComparative.java rename to src/main/java/org/lsmp/djep/vectorJep/function/ElementComparative.java diff --git a/src/org/lsmp/djep/vectorJep/function/ElementDivide.java b/src/main/java/org/lsmp/djep/vectorJep/function/ElementDivide.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/ElementDivide.java rename to src/main/java/org/lsmp/djep/vectorJep/function/ElementDivide.java diff --git a/src/org/lsmp/djep/vectorJep/function/ElementMultiply.java b/src/main/java/org/lsmp/djep/vectorJep/function/ElementMultiply.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/ElementMultiply.java rename to src/main/java/org/lsmp/djep/vectorJep/function/ElementMultiply.java diff --git a/src/org/lsmp/djep/vectorJep/function/ExteriorProduct.java b/src/main/java/org/lsmp/djep/vectorJep/function/ExteriorProduct.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/ExteriorProduct.java rename to src/main/java/org/lsmp/djep/vectorJep/function/ExteriorProduct.java diff --git a/src/org/lsmp/djep/vectorJep/function/GenMat.java b/src/main/java/org/lsmp/djep/vectorJep/function/GenMat.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/GenMat.java rename to src/main/java/org/lsmp/djep/vectorJep/function/GenMat.java diff --git a/src/org/lsmp/djep/vectorJep/function/GetDiagonal.java b/src/main/java/org/lsmp/djep/vectorJep/function/GetDiagonal.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/GetDiagonal.java rename to src/main/java/org/lsmp/djep/vectorJep/function/GetDiagonal.java diff --git a/src/org/lsmp/djep/vectorJep/function/Id.java b/src/main/java/org/lsmp/djep/vectorJep/function/Id.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/Id.java rename to src/main/java/org/lsmp/djep/vectorJep/function/Id.java diff --git a/src/org/lsmp/djep/vectorJep/function/Length.java b/src/main/java/org/lsmp/djep/vectorJep/function/Length.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/Length.java rename to src/main/java/org/lsmp/djep/vectorJep/function/Length.java diff --git a/src/org/lsmp/djep/vectorJep/function/MAdd.java b/src/main/java/org/lsmp/djep/vectorJep/function/MAdd.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/MAdd.java rename to src/main/java/org/lsmp/djep/vectorJep/function/MAdd.java diff --git a/src/org/lsmp/djep/vectorJep/function/MDivide.java b/src/main/java/org/lsmp/djep/vectorJep/function/MDivide.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/MDivide.java rename to src/main/java/org/lsmp/djep/vectorJep/function/MDivide.java diff --git a/src/org/lsmp/djep/vectorJep/function/MDot.java b/src/main/java/org/lsmp/djep/vectorJep/function/MDot.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/MDot.java rename to src/main/java/org/lsmp/djep/vectorJep/function/MDot.java diff --git a/src/org/lsmp/djep/vectorJep/function/MMultiply.java b/src/main/java/org/lsmp/djep/vectorJep/function/MMultiply.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/MMultiply.java rename to src/main/java/org/lsmp/djep/vectorJep/function/MMultiply.java diff --git a/src/org/lsmp/djep/vectorJep/function/MSubtract.java b/src/main/java/org/lsmp/djep/vectorJep/function/MSubtract.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/MSubtract.java rename to src/main/java/org/lsmp/djep/vectorJep/function/MSubtract.java diff --git a/src/org/lsmp/djep/vectorJep/function/MUMinus.java b/src/main/java/org/lsmp/djep/vectorJep/function/MUMinus.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/MUMinus.java rename to src/main/java/org/lsmp/djep/vectorJep/function/MUMinus.java diff --git a/src/org/lsmp/djep/vectorJep/function/NaryOperatorI.java b/src/main/java/org/lsmp/djep/vectorJep/function/NaryOperatorI.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/NaryOperatorI.java rename to src/main/java/org/lsmp/djep/vectorJep/function/NaryOperatorI.java diff --git a/src/org/lsmp/djep/vectorJep/function/Size.java b/src/main/java/org/lsmp/djep/vectorJep/function/Size.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/Size.java rename to src/main/java/org/lsmp/djep/vectorJep/function/Size.java diff --git a/src/org/lsmp/djep/vectorJep/function/Trace.java b/src/main/java/org/lsmp/djep/vectorJep/function/Trace.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/Trace.java rename to src/main/java/org/lsmp/djep/vectorJep/function/Trace.java diff --git a/src/org/lsmp/djep/vectorJep/function/Transpose.java b/src/main/java/org/lsmp/djep/vectorJep/function/Transpose.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/Transpose.java rename to src/main/java/org/lsmp/djep/vectorJep/function/Transpose.java diff --git a/src/org/lsmp/djep/vectorJep/function/UnaryOperatorI.java b/src/main/java/org/lsmp/djep/vectorJep/function/UnaryOperatorI.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/UnaryOperatorI.java rename to src/main/java/org/lsmp/djep/vectorJep/function/UnaryOperatorI.java diff --git a/src/org/lsmp/djep/vectorJep/function/VEle.java b/src/main/java/org/lsmp/djep/vectorJep/function/VEle.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/VEle.java rename to src/main/java/org/lsmp/djep/vectorJep/function/VEle.java diff --git a/src/org/lsmp/djep/vectorJep/function/VList.java b/src/main/java/org/lsmp/djep/vectorJep/function/VList.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/VList.java rename to src/main/java/org/lsmp/djep/vectorJep/function/VList.java diff --git a/src/org/lsmp/djep/vectorJep/function/VMap.java b/src/main/java/org/lsmp/djep/vectorJep/function/VMap.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/VMap.java rename to src/main/java/org/lsmp/djep/vectorJep/function/VMap.java diff --git a/src/org/lsmp/djep/vectorJep/function/VPower.java b/src/main/java/org/lsmp/djep/vectorJep/function/VPower.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/VPower.java rename to src/main/java/org/lsmp/djep/vectorJep/function/VPower.java diff --git a/src/org/lsmp/djep/vectorJep/function/VRange.java b/src/main/java/org/lsmp/djep/vectorJep/function/VRange.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/VRange.java rename to src/main/java/org/lsmp/djep/vectorJep/function/VRange.java diff --git a/src/org/lsmp/djep/vectorJep/function/VSum.java b/src/main/java/org/lsmp/djep/vectorJep/function/VSum.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/VSum.java rename to src/main/java/org/lsmp/djep/vectorJep/function/VSum.java diff --git a/src/org/lsmp/djep/vectorJep/function/package.html b/src/main/java/org/lsmp/djep/vectorJep/function/package.html similarity index 100% rename from src/org/lsmp/djep/vectorJep/function/package.html rename to src/main/java/org/lsmp/djep/vectorJep/function/package.html diff --git a/src/org/lsmp/djep/vectorJep/package.html b/src/main/java/org/lsmp/djep/vectorJep/package.html similarity index 100% rename from src/org/lsmp/djep/vectorJep/package.html rename to src/main/java/org/lsmp/djep/vectorJep/package.html diff --git a/src/org/lsmp/djep/vectorJep/values/MVector.java b/src/main/java/org/lsmp/djep/vectorJep/values/MVector.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/values/MVector.java rename to src/main/java/org/lsmp/djep/vectorJep/values/MVector.java diff --git a/src/org/lsmp/djep/vectorJep/values/Matrix.java b/src/main/java/org/lsmp/djep/vectorJep/values/Matrix.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/values/Matrix.java rename to src/main/java/org/lsmp/djep/vectorJep/values/Matrix.java diff --git a/src/org/lsmp/djep/vectorJep/values/MatrixValueI.java b/src/main/java/org/lsmp/djep/vectorJep/values/MatrixValueI.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/values/MatrixValueI.java rename to src/main/java/org/lsmp/djep/vectorJep/values/MatrixValueI.java diff --git a/src/org/lsmp/djep/vectorJep/values/Scaler.java b/src/main/java/org/lsmp/djep/vectorJep/values/Scaler.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/values/Scaler.java rename to src/main/java/org/lsmp/djep/vectorJep/values/Scaler.java diff --git a/src/org/lsmp/djep/vectorJep/values/Tensor.java b/src/main/java/org/lsmp/djep/vectorJep/values/Tensor.java similarity index 100% rename from src/org/lsmp/djep/vectorJep/values/Tensor.java rename to src/main/java/org/lsmp/djep/vectorJep/values/Tensor.java diff --git a/src/org/lsmp/djep/vectorJep/values/package.html b/src/main/java/org/lsmp/djep/vectorJep/values/package.html similarity index 100% rename from src/org/lsmp/djep/vectorJep/values/package.html rename to src/main/java/org/lsmp/djep/vectorJep/values/package.html diff --git a/src/org/lsmp/djep/xjep/BaseFormat.java b/src/main/java/org/lsmp/djep/xjep/BaseFormat.java similarity index 100% rename from src/org/lsmp/djep/xjep/BaseFormat.java rename to src/main/java/org/lsmp/djep/xjep/BaseFormat.java diff --git a/src/org/lsmp/djep/xjep/CommandVisitor.java b/src/main/java/org/lsmp/djep/xjep/CommandVisitor.java similarity index 100% rename from src/org/lsmp/djep/xjep/CommandVisitor.java rename to src/main/java/org/lsmp/djep/xjep/CommandVisitor.java diff --git a/src/org/lsmp/djep/xjep/CommandVisitorI.java b/src/main/java/org/lsmp/djep/xjep/CommandVisitorI.java similarity index 100% rename from src/org/lsmp/djep/xjep/CommandVisitorI.java rename to src/main/java/org/lsmp/djep/xjep/CommandVisitorI.java diff --git a/src/org/lsmp/djep/xjep/DeepCopyVisitor.java b/src/main/java/org/lsmp/djep/xjep/DeepCopyVisitor.java similarity index 100% rename from src/org/lsmp/djep/xjep/DeepCopyVisitor.java rename to src/main/java/org/lsmp/djep/xjep/DeepCopyVisitor.java diff --git a/src/org/lsmp/djep/xjep/DoNothingVisitor.java b/src/main/java/org/lsmp/djep/xjep/DoNothingVisitor.java similarity index 100% rename from src/org/lsmp/djep/xjep/DoNothingVisitor.java rename to src/main/java/org/lsmp/djep/xjep/DoNothingVisitor.java diff --git a/src/org/lsmp/djep/xjep/ErrorCatchingVisitor.java b/src/main/java/org/lsmp/djep/xjep/ErrorCatchingVisitor.java similarity index 100% rename from src/org/lsmp/djep/xjep/ErrorCatchingVisitor.java rename to src/main/java/org/lsmp/djep/xjep/ErrorCatchingVisitor.java diff --git a/src/org/lsmp/djep/xjep/Eval.java b/src/main/java/org/lsmp/djep/xjep/Eval.java similarity index 100% rename from src/org/lsmp/djep/xjep/Eval.java rename to src/main/java/org/lsmp/djep/xjep/Eval.java diff --git a/src/org/lsmp/djep/xjep/MacroFunction.java b/src/main/java/org/lsmp/djep/xjep/MacroFunction.java similarity index 100% rename from src/org/lsmp/djep/xjep/MacroFunction.java rename to src/main/java/org/lsmp/djep/xjep/MacroFunction.java diff --git a/src/org/lsmp/djep/xjep/NodeFactory.java b/src/main/java/org/lsmp/djep/xjep/NodeFactory.java similarity index 100% rename from src/org/lsmp/djep/xjep/NodeFactory.java rename to src/main/java/org/lsmp/djep/xjep/NodeFactory.java diff --git a/src/org/lsmp/djep/xjep/PrintVisitor.java b/src/main/java/org/lsmp/djep/xjep/PrintVisitor.java similarity index 100% rename from src/org/lsmp/djep/xjep/PrintVisitor.java rename to src/main/java/org/lsmp/djep/xjep/PrintVisitor.java diff --git a/src/org/lsmp/djep/xjep/SimplificationVisitor.java b/src/main/java/org/lsmp/djep/xjep/SimplificationVisitor.java similarity index 100% rename from src/org/lsmp/djep/xjep/SimplificationVisitor.java rename to src/main/java/org/lsmp/djep/xjep/SimplificationVisitor.java diff --git a/src/org/lsmp/djep/xjep/SubstitutionVisitor.java b/src/main/java/org/lsmp/djep/xjep/SubstitutionVisitor.java similarity index 100% rename from src/org/lsmp/djep/xjep/SubstitutionVisitor.java rename to src/main/java/org/lsmp/djep/xjep/SubstitutionVisitor.java diff --git a/src/org/lsmp/djep/xjep/TreeUtils.java b/src/main/java/org/lsmp/djep/xjep/TreeUtils.java similarity index 100% rename from src/org/lsmp/djep/xjep/TreeUtils.java rename to src/main/java/org/lsmp/djep/xjep/TreeUtils.java diff --git a/src/org/lsmp/djep/xjep/XEvaluatorVisitor.java b/src/main/java/org/lsmp/djep/xjep/XEvaluatorVisitor.java similarity index 100% rename from src/org/lsmp/djep/xjep/XEvaluatorVisitor.java rename to src/main/java/org/lsmp/djep/xjep/XEvaluatorVisitor.java diff --git a/src/org/lsmp/djep/xjep/XJep.java b/src/main/java/org/lsmp/djep/xjep/XJep.java similarity index 100% rename from src/org/lsmp/djep/xjep/XJep.java rename to src/main/java/org/lsmp/djep/xjep/XJep.java diff --git a/src/org/lsmp/djep/xjep/XMath.java b/src/main/java/org/lsmp/djep/xjep/XMath.java similarity index 100% rename from src/org/lsmp/djep/xjep/XMath.java rename to src/main/java/org/lsmp/djep/xjep/XMath.java diff --git a/src/org/lsmp/djep/xjep/XOperator.java b/src/main/java/org/lsmp/djep/xjep/XOperator.java similarity index 100% rename from src/org/lsmp/djep/xjep/XOperator.java rename to src/main/java/org/lsmp/djep/xjep/XOperator.java diff --git a/src/org/lsmp/djep/xjep/XOperatorSet.java b/src/main/java/org/lsmp/djep/xjep/XOperatorSet.java similarity index 100% rename from src/org/lsmp/djep/xjep/XOperatorSet.java rename to src/main/java/org/lsmp/djep/xjep/XOperatorSet.java diff --git a/src/org/lsmp/djep/xjep/XSymbolTable.java b/src/main/java/org/lsmp/djep/xjep/XSymbolTable.java similarity index 100% rename from src/org/lsmp/djep/xjep/XSymbolTable.java rename to src/main/java/org/lsmp/djep/xjep/XSymbolTable.java diff --git a/src/org/lsmp/djep/xjep/XVariable.java b/src/main/java/org/lsmp/djep/xjep/XVariable.java similarity index 100% rename from src/org/lsmp/djep/xjep/XVariable.java rename to src/main/java/org/lsmp/djep/xjep/XVariable.java diff --git a/src/org/lsmp/djep/xjep/XVariableFactory.java b/src/main/java/org/lsmp/djep/xjep/XVariableFactory.java similarity index 100% rename from src/org/lsmp/djep/xjep/XVariableFactory.java rename to src/main/java/org/lsmp/djep/xjep/XVariableFactory.java diff --git a/src/org/lsmp/djep/xjep/function/Define.java b/src/main/java/org/lsmp/djep/xjep/function/Define.java similarity index 100% rename from src/org/lsmp/djep/xjep/function/Define.java rename to src/main/java/org/lsmp/djep/xjep/function/Define.java diff --git a/src/org/lsmp/djep/xjep/function/FromBase.java b/src/main/java/org/lsmp/djep/xjep/function/FromBase.java similarity index 100% rename from src/org/lsmp/djep/xjep/function/FromBase.java rename to src/main/java/org/lsmp/djep/xjep/function/FromBase.java diff --git a/src/org/lsmp/djep/xjep/function/Max.java b/src/main/java/org/lsmp/djep/xjep/function/Max.java similarity index 100% rename from src/org/lsmp/djep/xjep/function/Max.java rename to src/main/java/org/lsmp/djep/xjep/function/Max.java diff --git a/src/org/lsmp/djep/xjep/function/MaxArg.java b/src/main/java/org/lsmp/djep/xjep/function/MaxArg.java similarity index 100% rename from src/org/lsmp/djep/xjep/function/MaxArg.java rename to src/main/java/org/lsmp/djep/xjep/function/MaxArg.java diff --git a/src/org/lsmp/djep/xjep/function/Min.java b/src/main/java/org/lsmp/djep/xjep/function/Min.java similarity index 100% rename from src/org/lsmp/djep/xjep/function/Min.java rename to src/main/java/org/lsmp/djep/xjep/function/Min.java diff --git a/src/org/lsmp/djep/xjep/function/MinArg.java b/src/main/java/org/lsmp/djep/xjep/function/MinArg.java similarity index 100% rename from src/org/lsmp/djep/xjep/function/MinArg.java rename to src/main/java/org/lsmp/djep/xjep/function/MinArg.java diff --git a/src/org/lsmp/djep/xjep/function/Product.java b/src/main/java/org/lsmp/djep/xjep/function/Product.java similarity index 100% rename from src/org/lsmp/djep/xjep/function/Product.java rename to src/main/java/org/lsmp/djep/xjep/function/Product.java diff --git a/src/org/lsmp/djep/xjep/function/Simpson.java b/src/main/java/org/lsmp/djep/xjep/function/Simpson.java similarity index 100% rename from src/org/lsmp/djep/xjep/function/Simpson.java rename to src/main/java/org/lsmp/djep/xjep/function/Simpson.java diff --git a/src/org/lsmp/djep/xjep/function/Sum.java b/src/main/java/org/lsmp/djep/xjep/function/Sum.java similarity index 100% rename from src/org/lsmp/djep/xjep/function/Sum.java rename to src/main/java/org/lsmp/djep/xjep/function/Sum.java diff --git a/src/org/lsmp/djep/xjep/function/SumType.java b/src/main/java/org/lsmp/djep/xjep/function/SumType.java similarity index 100% rename from src/org/lsmp/djep/xjep/function/SumType.java rename to src/main/java/org/lsmp/djep/xjep/function/SumType.java diff --git a/src/org/lsmp/djep/xjep/function/ToBase.java b/src/main/java/org/lsmp/djep/xjep/function/ToBase.java similarity index 100% rename from src/org/lsmp/djep/xjep/function/ToBase.java rename to src/main/java/org/lsmp/djep/xjep/function/ToBase.java diff --git a/src/org/lsmp/djep/xjep/function/Trapezium.java b/src/main/java/org/lsmp/djep/xjep/function/Trapezium.java similarity index 100% rename from src/org/lsmp/djep/xjep/function/Trapezium.java rename to src/main/java/org/lsmp/djep/xjep/function/Trapezium.java diff --git a/src/org/lsmp/djep/xjep/function/XAssign.java b/src/main/java/org/lsmp/djep/xjep/function/XAssign.java similarity index 100% rename from src/org/lsmp/djep/xjep/function/XAssign.java rename to src/main/java/org/lsmp/djep/xjep/function/XAssign.java diff --git a/src/org/lsmp/djep/xjep/function/package.html b/src/main/java/org/lsmp/djep/xjep/function/package.html similarity index 100% rename from src/org/lsmp/djep/xjep/function/package.html rename to src/main/java/org/lsmp/djep/xjep/function/package.html diff --git a/src/org/lsmp/djep/xjep/package.html b/src/main/java/org/lsmp/djep/xjep/package.html similarity index 100% rename from src/org/lsmp/djep/xjep/package.html rename to src/main/java/org/lsmp/djep/xjep/package.html diff --git a/src/org/lsmp/djepExamples/AssignmentExample.java b/src/main/java/org/lsmp/djepExamples/AssignmentExample.java similarity index 100% rename from src/org/lsmp/djepExamples/AssignmentExample.java rename to src/main/java/org/lsmp/djepExamples/AssignmentExample.java diff --git a/src/org/lsmp/djepExamples/BlockStatments.java b/src/main/java/org/lsmp/djepExamples/BlockStatments.java similarity index 100% rename from src/org/lsmp/djepExamples/BlockStatments.java rename to src/main/java/org/lsmp/djepExamples/BlockStatments.java diff --git a/src/org/lsmp/djepExamples/Console.java b/src/main/java/org/lsmp/djepExamples/Console.java similarity index 100% rename from src/org/lsmp/djepExamples/Console.java rename to src/main/java/org/lsmp/djepExamples/Console.java diff --git a/src/org/lsmp/djepExamples/DJepApplet.java b/src/main/java/org/lsmp/djepExamples/DJepApplet.java similarity index 100% rename from src/org/lsmp/djepExamples/DJepApplet.java rename to src/main/java/org/lsmp/djepExamples/DJepApplet.java diff --git a/src/org/lsmp/djepExamples/DJepConsole.java b/src/main/java/org/lsmp/djepExamples/DJepConsole.java similarity index 100% rename from src/org/lsmp/djepExamples/DJepConsole.java rename to src/main/java/org/lsmp/djepExamples/DJepConsole.java diff --git a/src/org/lsmp/djepExamples/DiffExample.java b/src/main/java/org/lsmp/djepExamples/DiffExample.java similarity index 100% rename from src/org/lsmp/djepExamples/DiffExample.java rename to src/main/java/org/lsmp/djepExamples/DiffExample.java diff --git a/src/org/lsmp/djepExamples/GroupConsole.java b/src/main/java/org/lsmp/djepExamples/GroupConsole.java similarity index 100% rename from src/org/lsmp/djepExamples/GroupConsole.java rename to src/main/java/org/lsmp/djepExamples/GroupConsole.java diff --git a/src/org/lsmp/djepExamples/JamaConsole.java b/src/main/java/org/lsmp/djepExamples/JamaConsole.java similarity index 100% rename from src/org/lsmp/djepExamples/JamaConsole.java rename to src/main/java/org/lsmp/djepExamples/JamaConsole.java diff --git a/src/org/lsmp/djepExamples/MRpConsole.java b/src/main/java/org/lsmp/djepExamples/MRpConsole.java similarity index 100% rename from src/org/lsmp/djepExamples/MRpConsole.java rename to src/main/java/org/lsmp/djepExamples/MRpConsole.java diff --git a/src/org/lsmp/djepExamples/MRpDiffExample.java b/src/main/java/org/lsmp/djepExamples/MRpDiffExample.java similarity index 100% rename from src/org/lsmp/djepExamples/MRpDiffExample.java rename to src/main/java/org/lsmp/djepExamples/MRpDiffExample.java diff --git a/src/org/lsmp/djepExamples/MRpExample.java b/src/main/java/org/lsmp/djepExamples/MRpExample.java similarity index 100% rename from src/org/lsmp/djepExamples/MRpExample.java rename to src/main/java/org/lsmp/djepExamples/MRpExample.java diff --git a/src/org/lsmp/djepExamples/MRpSpeed.java b/src/main/java/org/lsmp/djepExamples/MRpSpeed.java similarity index 100% rename from src/org/lsmp/djepExamples/MRpSpeed.java rename to src/main/java/org/lsmp/djepExamples/MRpSpeed.java diff --git a/src/org/lsmp/djepExamples/MRpSurfExample.java b/src/main/java/org/lsmp/djepExamples/MRpSurfExample.java similarity index 100% rename from src/org/lsmp/djepExamples/MRpSurfExample.java rename to src/main/java/org/lsmp/djepExamples/MRpSurfExample.java diff --git a/src/org/lsmp/djepExamples/MatrixConsole.java b/src/main/java/org/lsmp/djepExamples/MatrixConsole.java similarity index 100% rename from src/org/lsmp/djepExamples/MatrixConsole.java rename to src/main/java/org/lsmp/djepExamples/MatrixConsole.java diff --git a/src/org/lsmp/djepExamples/MatrixExample.java b/src/main/java/org/lsmp/djepExamples/MatrixExample.java similarity index 100% rename from src/org/lsmp/djepExamples/MatrixExample.java rename to src/main/java/org/lsmp/djepExamples/MatrixExample.java diff --git a/src/org/lsmp/djepExamples/MatrixSpeed.java b/src/main/java/org/lsmp/djepExamples/MatrixSpeed.java similarity index 100% rename from src/org/lsmp/djepExamples/MatrixSpeed.java rename to src/main/java/org/lsmp/djepExamples/MatrixSpeed.java diff --git a/src/org/lsmp/djepExamples/ObserverConsole.java b/src/main/java/org/lsmp/djepExamples/ObserverConsole.java similarity index 100% rename from src/org/lsmp/djepExamples/ObserverConsole.java rename to src/main/java/org/lsmp/djepExamples/ObserverConsole.java diff --git a/src/org/lsmp/djepExamples/PrintExample.java b/src/main/java/org/lsmp/djepExamples/PrintExample.java similarity index 100% rename from src/org/lsmp/djepExamples/PrintExample.java rename to src/main/java/org/lsmp/djepExamples/PrintExample.java diff --git a/src/org/lsmp/djepExamples/RpExample.java b/src/main/java/org/lsmp/djepExamples/RpExample.java similarity index 100% rename from src/org/lsmp/djepExamples/RpExample.java rename to src/main/java/org/lsmp/djepExamples/RpExample.java diff --git a/src/org/lsmp/djepExamples/RpSpeed.java b/src/main/java/org/lsmp/djepExamples/RpSpeed.java similarity index 100% rename from src/org/lsmp/djepExamples/RpSpeed.java rename to src/main/java/org/lsmp/djepExamples/RpSpeed.java diff --git a/src/org/lsmp/djepExamples/RpeConsole.java b/src/main/java/org/lsmp/djepExamples/RpeConsole.java similarity index 100% rename from src/org/lsmp/djepExamples/RpeConsole.java rename to src/main/java/org/lsmp/djepExamples/RpeConsole.java diff --git a/src/org/lsmp/djepExamples/SJepConsole.java b/src/main/java/org/lsmp/djepExamples/SJepConsole.java similarity index 100% rename from src/org/lsmp/djepExamples/SJepConsole.java rename to src/main/java/org/lsmp/djepExamples/SJepConsole.java diff --git a/src/org/lsmp/djepExamples/VectorConsole.java b/src/main/java/org/lsmp/djepExamples/VectorConsole.java similarity index 100% rename from src/org/lsmp/djepExamples/VectorConsole.java rename to src/main/java/org/lsmp/djepExamples/VectorConsole.java diff --git a/src/org/lsmp/djepExamples/VectorExample.java b/src/main/java/org/lsmp/djepExamples/VectorExample.java similarity index 100% rename from src/org/lsmp/djepExamples/VectorExample.java rename to src/main/java/org/lsmp/djepExamples/VectorExample.java diff --git a/src/org/lsmp/djepExamples/VectorPrint.java b/src/main/java/org/lsmp/djepExamples/VectorPrint.java similarity index 100% rename from src/org/lsmp/djepExamples/VectorPrint.java rename to src/main/java/org/lsmp/djepExamples/VectorPrint.java diff --git a/src/org/lsmp/djepExamples/XJepConsole.java b/src/main/java/org/lsmp/djepExamples/XJepConsole.java similarity index 100% rename from src/org/lsmp/djepExamples/XJepConsole.java rename to src/main/java/org/lsmp/djepExamples/XJepConsole.java diff --git a/src/org/lsmp/djepExamples/XJepExample.java b/src/main/java/org/lsmp/djepExamples/XJepExample.java similarity index 100% rename from src/org/lsmp/djepExamples/XJepExample.java rename to src/main/java/org/lsmp/djepExamples/XJepExample.java diff --git a/src/org/lsmp/djepExamples/package.html b/src/main/java/org/lsmp/djepExamples/package.html similarity index 100% rename from src/org/lsmp/djepExamples/package.html rename to src/main/java/org/lsmp/djepExamples/package.html diff --git a/src/org/lsmp/djepJUnit/DJepTest.java b/src/main/java/org/lsmp/djepJUnit/DJepTest.java similarity index 100% rename from src/org/lsmp/djepJUnit/DJepTest.java rename to src/main/java/org/lsmp/djepJUnit/DJepTest.java diff --git a/src/org/lsmp/djepJUnit/GroupJepTest.java b/src/main/java/org/lsmp/djepJUnit/GroupJepTest.java similarity index 100% rename from src/org/lsmp/djepJUnit/GroupJepTest.java rename to src/main/java/org/lsmp/djepJUnit/GroupJepTest.java diff --git a/src/org/lsmp/djepJUnit/JepTest.java b/src/main/java/org/lsmp/djepJUnit/JepTest.java similarity index 100% rename from src/org/lsmp/djepJUnit/JepTest.java rename to src/main/java/org/lsmp/djepJUnit/JepTest.java diff --git a/src/org/lsmp/djepJUnit/MRpTest.java b/src/main/java/org/lsmp/djepJUnit/MRpTest.java similarity index 100% rename from src/org/lsmp/djepJUnit/MRpTest.java rename to src/main/java/org/lsmp/djepJUnit/MRpTest.java diff --git a/src/org/lsmp/djepJUnit/MatrixJepTest.java b/src/main/java/org/lsmp/djepJUnit/MatrixJepTest.java similarity index 100% rename from src/org/lsmp/djepJUnit/MatrixJepTest.java rename to src/main/java/org/lsmp/djepJUnit/MatrixJepTest.java diff --git a/src/org/lsmp/djepJUnit/RewriteTest.java b/src/main/java/org/lsmp/djepJUnit/RewriteTest.java similarity index 100% rename from src/org/lsmp/djepJUnit/RewriteTest.java rename to src/main/java/org/lsmp/djepJUnit/RewriteTest.java diff --git a/src/org/lsmp/djepJUnit/RpTest.java b/src/main/java/org/lsmp/djepJUnit/RpTest.java similarity index 100% rename from src/org/lsmp/djepJUnit/RpTest.java rename to src/main/java/org/lsmp/djepJUnit/RpTest.java diff --git a/src/org/lsmp/djepJUnit/SJepTest.java b/src/main/java/org/lsmp/djepJUnit/SJepTest.java similarity index 100% rename from src/org/lsmp/djepJUnit/SJepTest.java rename to src/main/java/org/lsmp/djepJUnit/SJepTest.java diff --git a/src/org/lsmp/djepJUnit/VectorJepTest.java b/src/main/java/org/lsmp/djepJUnit/VectorJepTest.java similarity index 100% rename from src/org/lsmp/djepJUnit/VectorJepTest.java rename to src/main/java/org/lsmp/djepJUnit/VectorJepTest.java diff --git a/src/org/lsmp/djepJUnit/XJepTest.java b/src/main/java/org/lsmp/djepJUnit/XJepTest.java similarity index 100% rename from src/org/lsmp/djepJUnit/XJepTest.java rename to src/main/java/org/lsmp/djepJUnit/XJepTest.java diff --git a/src/org/lsmp/djepJUnit/package.html b/src/main/java/org/lsmp/djepJUnit/package.html similarity index 100% rename from src/org/lsmp/djepJUnit/package.html rename to src/main/java/org/lsmp/djepJUnit/package.html diff --git a/src/org/nfunk/jep/.cvsignore b/src/main/java/org/nfunk/jep/.cvsignore similarity index 100% rename from src/org/nfunk/jep/.cvsignore rename to src/main/java/org/nfunk/jep/.cvsignore diff --git a/src/org/nfunk/jep/ASTConstant.java b/src/main/java/org/nfunk/jep/ASTConstant.java similarity index 100% rename from src/org/nfunk/jep/ASTConstant.java rename to src/main/java/org/nfunk/jep/ASTConstant.java diff --git a/src/org/nfunk/jep/ASTFunNode.java b/src/main/java/org/nfunk/jep/ASTFunNode.java similarity index 100% rename from src/org/nfunk/jep/ASTFunNode.java rename to src/main/java/org/nfunk/jep/ASTFunNode.java diff --git a/src/org/nfunk/jep/ASTStart.java b/src/main/java/org/nfunk/jep/ASTStart.java similarity index 100% rename from src/org/nfunk/jep/ASTStart.java rename to src/main/java/org/nfunk/jep/ASTStart.java diff --git a/src/org/nfunk/jep/ASTVarNode.java b/src/main/java/org/nfunk/jep/ASTVarNode.java similarity index 100% rename from src/org/nfunk/jep/ASTVarNode.java rename to src/main/java/org/nfunk/jep/ASTVarNode.java diff --git a/src/org/nfunk/jep/EvaluatorI.java b/src/main/java/org/nfunk/jep/EvaluatorI.java similarity index 100% rename from src/org/nfunk/jep/EvaluatorI.java rename to src/main/java/org/nfunk/jep/EvaluatorI.java diff --git a/src/org/nfunk/jep/EvaluatorVisitor.java b/src/main/java/org/nfunk/jep/EvaluatorVisitor.java similarity index 100% rename from src/org/nfunk/jep/EvaluatorVisitor.java rename to src/main/java/org/nfunk/jep/EvaluatorVisitor.java diff --git a/src/org/nfunk/jep/FunctionTable.java b/src/main/java/org/nfunk/jep/FunctionTable.java similarity index 100% rename from src/org/nfunk/jep/FunctionTable.java rename to src/main/java/org/nfunk/jep/FunctionTable.java diff --git a/src/org/nfunk/jep/JEP.java b/src/main/java/org/nfunk/jep/JEP.java similarity index 100% rename from src/org/nfunk/jep/JEP.java rename to src/main/java/org/nfunk/jep/JEP.java diff --git a/src/org/nfunk/jep/JJTParserState.java b/src/main/java/org/nfunk/jep/JJTParserState.java similarity index 100% rename from src/org/nfunk/jep/JJTParserState.java rename to src/main/java/org/nfunk/jep/JJTParserState.java diff --git a/src/org/nfunk/jep/JavaCharStream.java b/src/main/java/org/nfunk/jep/JavaCharStream.java similarity index 100% rename from src/org/nfunk/jep/JavaCharStream.java rename to src/main/java/org/nfunk/jep/JavaCharStream.java diff --git a/src/org/nfunk/jep/Node.java b/src/main/java/org/nfunk/jep/Node.java similarity index 100% rename from src/org/nfunk/jep/Node.java rename to src/main/java/org/nfunk/jep/Node.java diff --git a/src/org/nfunk/jep/Operator.java b/src/main/java/org/nfunk/jep/Operator.java similarity index 100% rename from src/org/nfunk/jep/Operator.java rename to src/main/java/org/nfunk/jep/Operator.java diff --git a/src/org/nfunk/jep/OperatorSet.java b/src/main/java/org/nfunk/jep/OperatorSet.java similarity index 100% rename from src/org/nfunk/jep/OperatorSet.java rename to src/main/java/org/nfunk/jep/OperatorSet.java diff --git a/src/org/nfunk/jep/ParseException.java b/src/main/java/org/nfunk/jep/ParseException.java similarity index 100% rename from src/org/nfunk/jep/ParseException.java rename to src/main/java/org/nfunk/jep/ParseException.java diff --git a/src/org/nfunk/jep/Parser.java b/src/main/java/org/nfunk/jep/Parser.java similarity index 100% rename from src/org/nfunk/jep/Parser.java rename to src/main/java/org/nfunk/jep/Parser.java diff --git a/src/org/nfunk/jep/Parser.jjt b/src/main/java/org/nfunk/jep/Parser.jjt similarity index 100% rename from src/org/nfunk/jep/Parser.jjt rename to src/main/java/org/nfunk/jep/Parser.jjt diff --git a/src/org/nfunk/jep/ParserConstants.java b/src/main/java/org/nfunk/jep/ParserConstants.java similarity index 100% rename from src/org/nfunk/jep/ParserConstants.java rename to src/main/java/org/nfunk/jep/ParserConstants.java diff --git a/src/org/nfunk/jep/ParserDumpVisitor.java b/src/main/java/org/nfunk/jep/ParserDumpVisitor.java similarity index 100% rename from src/org/nfunk/jep/ParserDumpVisitor.java rename to src/main/java/org/nfunk/jep/ParserDumpVisitor.java diff --git a/src/org/nfunk/jep/ParserTokenManager.java b/src/main/java/org/nfunk/jep/ParserTokenManager.java similarity index 100% rename from src/org/nfunk/jep/ParserTokenManager.java rename to src/main/java/org/nfunk/jep/ParserTokenManager.java diff --git a/src/org/nfunk/jep/ParserTreeConstants.java b/src/main/java/org/nfunk/jep/ParserTreeConstants.java similarity index 100% rename from src/org/nfunk/jep/ParserTreeConstants.java rename to src/main/java/org/nfunk/jep/ParserTreeConstants.java diff --git a/src/org/nfunk/jep/ParserVisitor.java b/src/main/java/org/nfunk/jep/ParserVisitor.java similarity index 100% rename from src/org/nfunk/jep/ParserVisitor.java rename to src/main/java/org/nfunk/jep/ParserVisitor.java diff --git a/src/org/nfunk/jep/SimpleCharStream.java b/src/main/java/org/nfunk/jep/SimpleCharStream.java similarity index 100% rename from src/org/nfunk/jep/SimpleCharStream.java rename to src/main/java/org/nfunk/jep/SimpleCharStream.java diff --git a/src/org/nfunk/jep/SimpleNode.java b/src/main/java/org/nfunk/jep/SimpleNode.java similarity index 100% rename from src/org/nfunk/jep/SimpleNode.java rename to src/main/java/org/nfunk/jep/SimpleNode.java diff --git a/src/org/nfunk/jep/SymbolTable.java b/src/main/java/org/nfunk/jep/SymbolTable.java similarity index 100% rename from src/org/nfunk/jep/SymbolTable.java rename to src/main/java/org/nfunk/jep/SymbolTable.java diff --git a/src/org/nfunk/jep/Token.java b/src/main/java/org/nfunk/jep/Token.java similarity index 100% rename from src/org/nfunk/jep/Token.java rename to src/main/java/org/nfunk/jep/Token.java diff --git a/src/org/nfunk/jep/TokenMgrError.java b/src/main/java/org/nfunk/jep/TokenMgrError.java similarity index 100% rename from src/org/nfunk/jep/TokenMgrError.java rename to src/main/java/org/nfunk/jep/TokenMgrError.java diff --git a/src/org/nfunk/jep/Variable.java b/src/main/java/org/nfunk/jep/Variable.java similarity index 100% rename from src/org/nfunk/jep/Variable.java rename to src/main/java/org/nfunk/jep/Variable.java diff --git a/src/org/nfunk/jep/VariableFactory.java b/src/main/java/org/nfunk/jep/VariableFactory.java similarity index 100% rename from src/org/nfunk/jep/VariableFactory.java rename to src/main/java/org/nfunk/jep/VariableFactory.java diff --git a/src/org/nfunk/jep/evaluation/CommandElement.java b/src/main/java/org/nfunk/jep/evaluation/CommandElement.java similarity index 100% rename from src/org/nfunk/jep/evaluation/CommandElement.java rename to src/main/java/org/nfunk/jep/evaluation/CommandElement.java diff --git a/src/org/nfunk/jep/evaluation/CommandEvaluator.java b/src/main/java/org/nfunk/jep/evaluation/CommandEvaluator.java similarity index 100% rename from src/org/nfunk/jep/evaluation/CommandEvaluator.java rename to src/main/java/org/nfunk/jep/evaluation/CommandEvaluator.java diff --git a/src/org/nfunk/jep/evaluation/ExpressionCompiler.java b/src/main/java/org/nfunk/jep/evaluation/ExpressionCompiler.java similarity index 100% rename from src/org/nfunk/jep/evaluation/ExpressionCompiler.java rename to src/main/java/org/nfunk/jep/evaluation/ExpressionCompiler.java diff --git a/src/org/nfunk/jep/evaluation/package.html b/src/main/java/org/nfunk/jep/evaluation/package.html similarity index 100% rename from src/org/nfunk/jep/evaluation/package.html rename to src/main/java/org/nfunk/jep/evaluation/package.html diff --git a/src/org/nfunk/jep/function/Abs.java b/src/main/java/org/nfunk/jep/function/Abs.java similarity index 100% rename from src/org/nfunk/jep/function/Abs.java rename to src/main/java/org/nfunk/jep/function/Abs.java diff --git a/src/org/nfunk/jep/function/Add.java b/src/main/java/org/nfunk/jep/function/Add.java similarity index 100% rename from src/org/nfunk/jep/function/Add.java rename to src/main/java/org/nfunk/jep/function/Add.java diff --git a/src/org/nfunk/jep/function/ArcCosine.java b/src/main/java/org/nfunk/jep/function/ArcCosine.java similarity index 100% rename from src/org/nfunk/jep/function/ArcCosine.java rename to src/main/java/org/nfunk/jep/function/ArcCosine.java diff --git a/src/org/nfunk/jep/function/ArcCosineH.java b/src/main/java/org/nfunk/jep/function/ArcCosineH.java similarity index 100% rename from src/org/nfunk/jep/function/ArcCosineH.java rename to src/main/java/org/nfunk/jep/function/ArcCosineH.java diff --git a/src/org/nfunk/jep/function/ArcSine.java b/src/main/java/org/nfunk/jep/function/ArcSine.java similarity index 100% rename from src/org/nfunk/jep/function/ArcSine.java rename to src/main/java/org/nfunk/jep/function/ArcSine.java diff --git a/src/org/nfunk/jep/function/ArcSineH.java b/src/main/java/org/nfunk/jep/function/ArcSineH.java similarity index 100% rename from src/org/nfunk/jep/function/ArcSineH.java rename to src/main/java/org/nfunk/jep/function/ArcSineH.java diff --git a/src/org/nfunk/jep/function/ArcTanH.java b/src/main/java/org/nfunk/jep/function/ArcTanH.java similarity index 100% rename from src/org/nfunk/jep/function/ArcTanH.java rename to src/main/java/org/nfunk/jep/function/ArcTanH.java diff --git a/src/org/nfunk/jep/function/ArcTangent.java b/src/main/java/org/nfunk/jep/function/ArcTangent.java similarity index 100% rename from src/org/nfunk/jep/function/ArcTangent.java rename to src/main/java/org/nfunk/jep/function/ArcTangent.java diff --git a/src/org/nfunk/jep/function/ArcTangent2.java b/src/main/java/org/nfunk/jep/function/ArcTangent2.java similarity index 100% rename from src/org/nfunk/jep/function/ArcTangent2.java rename to src/main/java/org/nfunk/jep/function/ArcTangent2.java diff --git a/src/org/nfunk/jep/function/Arg.java b/src/main/java/org/nfunk/jep/function/Arg.java similarity index 100% rename from src/org/nfunk/jep/function/Arg.java rename to src/main/java/org/nfunk/jep/function/Arg.java diff --git a/src/org/nfunk/jep/function/Assign.java b/src/main/java/org/nfunk/jep/function/Assign.java similarity index 100% rename from src/org/nfunk/jep/function/Assign.java rename to src/main/java/org/nfunk/jep/function/Assign.java diff --git a/src/org/nfunk/jep/function/Binomial.java b/src/main/java/org/nfunk/jep/function/Binomial.java similarity index 100% rename from src/org/nfunk/jep/function/Binomial.java rename to src/main/java/org/nfunk/jep/function/Binomial.java diff --git a/src/org/nfunk/jep/function/CallbackEvaluationI.java b/src/main/java/org/nfunk/jep/function/CallbackEvaluationI.java similarity index 100% rename from src/org/nfunk/jep/function/CallbackEvaluationI.java rename to src/main/java/org/nfunk/jep/function/CallbackEvaluationI.java diff --git a/src/org/nfunk/jep/function/Comparative.java b/src/main/java/org/nfunk/jep/function/Comparative.java similarity index 100% rename from src/org/nfunk/jep/function/Comparative.java rename to src/main/java/org/nfunk/jep/function/Comparative.java diff --git a/src/org/nfunk/jep/function/ComplexPFMC.java b/src/main/java/org/nfunk/jep/function/ComplexPFMC.java similarity index 100% rename from src/org/nfunk/jep/function/ComplexPFMC.java rename to src/main/java/org/nfunk/jep/function/ComplexPFMC.java diff --git a/src/org/nfunk/jep/function/Conjugate.java b/src/main/java/org/nfunk/jep/function/Conjugate.java similarity index 100% rename from src/org/nfunk/jep/function/Conjugate.java rename to src/main/java/org/nfunk/jep/function/Conjugate.java diff --git a/src/org/nfunk/jep/function/Cosine.java b/src/main/java/org/nfunk/jep/function/Cosine.java similarity index 100% rename from src/org/nfunk/jep/function/Cosine.java rename to src/main/java/org/nfunk/jep/function/Cosine.java diff --git a/src/org/nfunk/jep/function/CosineH.java b/src/main/java/org/nfunk/jep/function/CosineH.java similarity index 100% rename from src/org/nfunk/jep/function/CosineH.java rename to src/main/java/org/nfunk/jep/function/CosineH.java diff --git a/src/org/nfunk/jep/function/Cross.java b/src/main/java/org/nfunk/jep/function/Cross.java similarity index 100% rename from src/org/nfunk/jep/function/Cross.java rename to src/main/java/org/nfunk/jep/function/Cross.java diff --git a/src/org/nfunk/jep/function/Divide.java b/src/main/java/org/nfunk/jep/function/Divide.java similarity index 100% rename from src/org/nfunk/jep/function/Divide.java rename to src/main/java/org/nfunk/jep/function/Divide.java diff --git a/src/org/nfunk/jep/function/Dot.java b/src/main/java/org/nfunk/jep/function/Dot.java similarity index 100% rename from src/org/nfunk/jep/function/Dot.java rename to src/main/java/org/nfunk/jep/function/Dot.java diff --git a/src/org/nfunk/jep/function/Ele.java b/src/main/java/org/nfunk/jep/function/Ele.java similarity index 100% rename from src/org/nfunk/jep/function/Ele.java rename to src/main/java/org/nfunk/jep/function/Ele.java diff --git a/src/org/nfunk/jep/function/Exp.java b/src/main/java/org/nfunk/jep/function/Exp.java similarity index 100% rename from src/org/nfunk/jep/function/Exp.java rename to src/main/java/org/nfunk/jep/function/Exp.java diff --git a/src/org/nfunk/jep/function/If.java b/src/main/java/org/nfunk/jep/function/If.java similarity index 100% rename from src/org/nfunk/jep/function/If.java rename to src/main/java/org/nfunk/jep/function/If.java diff --git a/src/org/nfunk/jep/function/Imaginary.java b/src/main/java/org/nfunk/jep/function/Imaginary.java similarity index 100% rename from src/org/nfunk/jep/function/Imaginary.java rename to src/main/java/org/nfunk/jep/function/Imaginary.java diff --git a/src/org/nfunk/jep/function/LValueI.java b/src/main/java/org/nfunk/jep/function/LValueI.java similarity index 100% rename from src/org/nfunk/jep/function/LValueI.java rename to src/main/java/org/nfunk/jep/function/LValueI.java diff --git a/src/org/nfunk/jep/function/List.java b/src/main/java/org/nfunk/jep/function/List.java similarity index 100% rename from src/org/nfunk/jep/function/List.java rename to src/main/java/org/nfunk/jep/function/List.java diff --git a/src/org/nfunk/jep/function/Logarithm.java b/src/main/java/org/nfunk/jep/function/Logarithm.java similarity index 100% rename from src/org/nfunk/jep/function/Logarithm.java rename to src/main/java/org/nfunk/jep/function/Logarithm.java diff --git a/src/org/nfunk/jep/function/Logical.java b/src/main/java/org/nfunk/jep/function/Logical.java similarity index 100% rename from src/org/nfunk/jep/function/Logical.java rename to src/main/java/org/nfunk/jep/function/Logical.java diff --git a/src/org/nfunk/jep/function/Modulus.java b/src/main/java/org/nfunk/jep/function/Modulus.java similarity index 100% rename from src/org/nfunk/jep/function/Modulus.java rename to src/main/java/org/nfunk/jep/function/Modulus.java diff --git a/src/org/nfunk/jep/function/Multiply.java b/src/main/java/org/nfunk/jep/function/Multiply.java similarity index 100% rename from src/org/nfunk/jep/function/Multiply.java rename to src/main/java/org/nfunk/jep/function/Multiply.java diff --git a/src/org/nfunk/jep/function/NaturalLogarithm.java b/src/main/java/org/nfunk/jep/function/NaturalLogarithm.java similarity index 100% rename from src/org/nfunk/jep/function/NaturalLogarithm.java rename to src/main/java/org/nfunk/jep/function/NaturalLogarithm.java diff --git a/src/org/nfunk/jep/function/Not.java b/src/main/java/org/nfunk/jep/function/Not.java similarity index 100% rename from src/org/nfunk/jep/function/Not.java rename to src/main/java/org/nfunk/jep/function/Not.java diff --git a/src/org/nfunk/jep/function/Polar.java b/src/main/java/org/nfunk/jep/function/Polar.java similarity index 100% rename from src/org/nfunk/jep/function/Polar.java rename to src/main/java/org/nfunk/jep/function/Polar.java diff --git a/src/org/nfunk/jep/function/PostfixMathCommand.java b/src/main/java/org/nfunk/jep/function/PostfixMathCommand.java similarity index 100% rename from src/org/nfunk/jep/function/PostfixMathCommand.java rename to src/main/java/org/nfunk/jep/function/PostfixMathCommand.java diff --git a/src/org/nfunk/jep/function/PostfixMathCommandI.java b/src/main/java/org/nfunk/jep/function/PostfixMathCommandI.java similarity index 100% rename from src/org/nfunk/jep/function/PostfixMathCommandI.java rename to src/main/java/org/nfunk/jep/function/PostfixMathCommandI.java diff --git a/src/org/nfunk/jep/function/Power.java b/src/main/java/org/nfunk/jep/function/Power.java similarity index 100% rename from src/org/nfunk/jep/function/Power.java rename to src/main/java/org/nfunk/jep/function/Power.java diff --git a/src/org/nfunk/jep/function/Random.java b/src/main/java/org/nfunk/jep/function/Random.java similarity index 100% rename from src/org/nfunk/jep/function/Random.java rename to src/main/java/org/nfunk/jep/function/Random.java diff --git a/src/org/nfunk/jep/function/Range.java b/src/main/java/org/nfunk/jep/function/Range.java similarity index 100% rename from src/org/nfunk/jep/function/Range.java rename to src/main/java/org/nfunk/jep/function/Range.java diff --git a/src/org/nfunk/jep/function/Real.java b/src/main/java/org/nfunk/jep/function/Real.java similarity index 100% rename from src/org/nfunk/jep/function/Real.java rename to src/main/java/org/nfunk/jep/function/Real.java diff --git a/src/org/nfunk/jep/function/Sine.java b/src/main/java/org/nfunk/jep/function/Sine.java similarity index 100% rename from src/org/nfunk/jep/function/Sine.java rename to src/main/java/org/nfunk/jep/function/Sine.java diff --git a/src/org/nfunk/jep/function/SineH.java b/src/main/java/org/nfunk/jep/function/SineH.java similarity index 100% rename from src/org/nfunk/jep/function/SineH.java rename to src/main/java/org/nfunk/jep/function/SineH.java diff --git a/src/org/nfunk/jep/function/SpecialEvaluationI.java b/src/main/java/org/nfunk/jep/function/SpecialEvaluationI.java similarity index 100% rename from src/org/nfunk/jep/function/SpecialEvaluationI.java rename to src/main/java/org/nfunk/jep/function/SpecialEvaluationI.java diff --git a/src/org/nfunk/jep/function/SquareRoot.java b/src/main/java/org/nfunk/jep/function/SquareRoot.java similarity index 100% rename from src/org/nfunk/jep/function/SquareRoot.java rename to src/main/java/org/nfunk/jep/function/SquareRoot.java diff --git a/src/org/nfunk/jep/function/Str.java b/src/main/java/org/nfunk/jep/function/Str.java similarity index 100% rename from src/org/nfunk/jep/function/Str.java rename to src/main/java/org/nfunk/jep/function/Str.java diff --git a/src/org/nfunk/jep/function/Subtract.java b/src/main/java/org/nfunk/jep/function/Subtract.java similarity index 100% rename from src/org/nfunk/jep/function/Subtract.java rename to src/main/java/org/nfunk/jep/function/Subtract.java diff --git a/src/org/nfunk/jep/function/Sum.java b/src/main/java/org/nfunk/jep/function/Sum.java similarity index 100% rename from src/org/nfunk/jep/function/Sum.java rename to src/main/java/org/nfunk/jep/function/Sum.java diff --git a/src/org/nfunk/jep/function/TanH.java b/src/main/java/org/nfunk/jep/function/TanH.java similarity index 100% rename from src/org/nfunk/jep/function/TanH.java rename to src/main/java/org/nfunk/jep/function/TanH.java diff --git a/src/org/nfunk/jep/function/Tangent.java b/src/main/java/org/nfunk/jep/function/Tangent.java similarity index 100% rename from src/org/nfunk/jep/function/Tangent.java rename to src/main/java/org/nfunk/jep/function/Tangent.java diff --git a/src/org/nfunk/jep/function/UMinus.java b/src/main/java/org/nfunk/jep/function/UMinus.java similarity index 100% rename from src/org/nfunk/jep/function/UMinus.java rename to src/main/java/org/nfunk/jep/function/UMinus.java diff --git a/src/org/nfunk/jep/function/package.html b/src/main/java/org/nfunk/jep/function/package.html similarity index 100% rename from src/org/nfunk/jep/function/package.html rename to src/main/java/org/nfunk/jep/function/package.html diff --git a/src/org/nfunk/jep/package.html b/src/main/java/org/nfunk/jep/package.html similarity index 100% rename from src/org/nfunk/jep/package.html rename to src/main/java/org/nfunk/jep/package.html diff --git a/src/org/nfunk/jep/type/Complex.java b/src/main/java/org/nfunk/jep/type/Complex.java similarity index 100% rename from src/org/nfunk/jep/type/Complex.java rename to src/main/java/org/nfunk/jep/type/Complex.java diff --git a/src/org/nfunk/jep/type/DoubleNumberFactory.java b/src/main/java/org/nfunk/jep/type/DoubleNumberFactory.java similarity index 100% rename from src/org/nfunk/jep/type/DoubleNumberFactory.java rename to src/main/java/org/nfunk/jep/type/DoubleNumberFactory.java diff --git a/src/org/nfunk/jep/type/NumberFactory.java b/src/main/java/org/nfunk/jep/type/NumberFactory.java similarity index 100% rename from src/org/nfunk/jep/type/NumberFactory.java rename to src/main/java/org/nfunk/jep/type/NumberFactory.java diff --git a/src/org/nfunk/jep/type/package.html b/src/main/java/org/nfunk/jep/type/package.html similarity index 100% rename from src/org/nfunk/jep/type/package.html rename to src/main/java/org/nfunk/jep/type/package.html diff --git a/src/org/nfunk/jepexamples/Console.java b/src/main/java/org/nfunk/jepexamples/Console.java similarity index 100% rename from src/org/nfunk/jepexamples/Console.java rename to src/main/java/org/nfunk/jepexamples/Console.java diff --git a/src/org/nfunk/jepexamples/Evaluator.java b/src/main/java/org/nfunk/jepexamples/Evaluator.java similarity index 100% rename from src/org/nfunk/jepexamples/Evaluator.java rename to src/main/java/org/nfunk/jepexamples/Evaluator.java diff --git a/src/org/nfunk/jepexamples/Fractal.java b/src/main/java/org/nfunk/jepexamples/Fractal.java similarity index 100% rename from src/org/nfunk/jepexamples/Fractal.java rename to src/main/java/org/nfunk/jepexamples/Fractal.java diff --git a/src/org/nfunk/jepexamples/FractalCanvas.java b/src/main/java/org/nfunk/jepexamples/FractalCanvas.java similarity index 100% rename from src/org/nfunk/jepexamples/FractalCanvas.java rename to src/main/java/org/nfunk/jepexamples/FractalCanvas.java diff --git a/src/org/nfunk/jepexamples/FunctionPlotter.java b/src/main/java/org/nfunk/jepexamples/FunctionPlotter.java similarity index 100% rename from src/org/nfunk/jepexamples/FunctionPlotter.java rename to src/main/java/org/nfunk/jepexamples/FunctionPlotter.java diff --git a/src/org/nfunk/jepexamples/GraphCanvas.java b/src/main/java/org/nfunk/jepexamples/GraphCanvas.java similarity index 100% rename from src/org/nfunk/jepexamples/GraphCanvas.java rename to src/main/java/org/nfunk/jepexamples/GraphCanvas.java diff --git a/src/org/nfunk/jepexamples/LargeExpressionTest.java b/src/main/java/org/nfunk/jepexamples/LargeExpressionTest.java similarity index 100% rename from src/org/nfunk/jepexamples/LargeExpressionTest.java rename to src/main/java/org/nfunk/jepexamples/LargeExpressionTest.java diff --git a/src/org/nfunk/jepexamples/SimpleTest.java b/src/main/java/org/nfunk/jepexamples/SimpleTest.java similarity index 100% rename from src/org/nfunk/jepexamples/SimpleTest.java rename to src/main/java/org/nfunk/jepexamples/SimpleTest.java diff --git a/src/org/nfunk/jepexamples/ThreadTest.java b/src/main/java/org/nfunk/jepexamples/ThreadTest.java similarity index 100% rename from src/org/nfunk/jepexamples/ThreadTest.java rename to src/main/java/org/nfunk/jepexamples/ThreadTest.java diff --git a/src/org/nfunk/jepexamples/ThreadTestThread.java b/src/main/java/org/nfunk/jepexamples/ThreadTestThread.java similarity index 100% rename from src/org/nfunk/jepexamples/ThreadTestThread.java rename to src/main/java/org/nfunk/jepexamples/ThreadTestThread.java diff --git a/src/org/nfunk/jepexamples/package.html b/src/main/java/org/nfunk/jepexamples/package.html similarity index 100% rename from src/org/nfunk/jepexamples/package.html rename to src/main/java/org/nfunk/jepexamples/package.html diff --git a/src/org/nfunk/jeptesting/AllTests.java b/src/main/java/org/nfunk/jeptesting/AllTests.java similarity index 100% rename from src/org/nfunk/jeptesting/AllTests.java rename to src/main/java/org/nfunk/jeptesting/AllTests.java diff --git a/src/org/nfunk/jeptesting/JEPTest.java b/src/main/java/org/nfunk/jeptesting/JEPTest.java similarity index 100% rename from src/org/nfunk/jeptesting/JEPTest.java rename to src/main/java/org/nfunk/jeptesting/JEPTest.java diff --git a/src/org/nfunk/jeptesting/LogarithmTest.java b/src/main/java/org/nfunk/jeptesting/LogarithmTest.java similarity index 100% rename from src/org/nfunk/jeptesting/LogarithmTest.java rename to src/main/java/org/nfunk/jeptesting/LogarithmTest.java diff --git a/src/org/nfunk/jeptesting/NaturalLogarithmTest.java b/src/main/java/org/nfunk/jeptesting/NaturalLogarithmTest.java similarity index 100% rename from src/org/nfunk/jeptesting/NaturalLogarithmTest.java rename to src/main/java/org/nfunk/jeptesting/NaturalLogarithmTest.java diff --git a/src/org/nfunk/jeptesting/package.html b/src/main/java/org/nfunk/jeptesting/package.html similarity index 100% rename from src/org/nfunk/jeptesting/package.html rename to src/main/java/org/nfunk/jeptesting/package.html diff --git a/src/overview.html b/src/main/java/overview.html similarity index 100% rename from src/overview.html rename to src/main/java/overview.html From e9557576b1484785c8e38599942ff6e4fbe877a2 Mon Sep 17 00:00:00 2001 From: Cosmin Stroe Date: Fri, 3 Feb 2017 07:58:54 -0600 Subject: [PATCH 02/11] add maven wrapper --- .gitignore | 2 + .mvn/wrapper/maven-wrapper.jar | Bin 0 -> 49519 bytes .mvn/wrapper/maven-wrapper.properties | 1 + mvnw | 236 ++++++++++++++++++++++++++ mvnw.cmd | 146 ++++++++++++++++ pom.xml | 70 ++++++++ 6 files changed, 455 insertions(+) create mode 100644 .gitignore create mode 100644 .mvn/wrapper/maven-wrapper.jar create mode 100644 .mvn/wrapper/maven-wrapper.properties create mode 100755 mvnw create mode 100644 mvnw.cmd create mode 100644 pom.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..92322c4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.idea/ +target/ diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..c6feb8bb6f76f2553e266ff8bf8867105154237e GIT binary patch literal 49519 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%0A$pwhjXzyA0ZzErH{1@M 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 literal 0 HcmV?d00001 diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..6637ced --- /dev/null +++ b/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.3.9/apache-maven-3.3.9-bin.zip \ No newline at end of file diff --git a/mvnw b/mvnw new file mode 100755 index 0000000..6ecc150 --- /dev/null +++ b/mvnw @@ -0,0 +1,236 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# 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 +# +# http://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. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # + # Look for the Apple JDKs first to preserve the existing behaviour, and then look + # for the new JDKs provided by Oracle. + # + if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ] ; then + # + # Apple JDKs + # + export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then + # + # Apple JDKs + # + export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then + # + # Oracle JDKs + # + export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then + # + # Apple JDKs + # + export JAVA_HOME=`/usr/libexec/java_home` + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Migwn, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" + # TODO classpath? +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + local basedir=$(pwd) + local wdir=$(pwd) + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + wdir=$(cd "$wdir/.."; pwd) + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-$(find_maven_basedir)} +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +# avoid using MAVEN_CMD_LINE_ARGS below since that would loose parameter escaping in $@ +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mvnw.cmd b/mvnw.cmd new file mode 100644 index 0000000..8bb8275 --- /dev/null +++ b/mvnw.cmd @@ -0,0 +1,146 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +set MAVEN_CMD_LINE_ARGS=%MAVEN_CONFIG% %* + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" + +set WRAPPER_JAR=""%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +# avoid using MAVEN_CMD_LINE_ARGS below since that would loose parameter escaping in %* +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..70a1ffb --- /dev/null +++ b/pom.xml @@ -0,0 +1,70 @@ + + 4.0.0 + + com.github.cstroe + JEP + 1.0.0-SNAPSHOT + jar + + + UTF-8 + 1.8 + 5.0.0-M3 + 1.0.0-M3 + + + + + + maven-compiler-plugin + 3.1 + + ${java.version} + ${java.version} + + + + maven-surefire-plugin + 2.19.1 + + + **/Test*.java + **/*Test.java + **/*Tests.java + **/*TestCase.java + + + + + org.junit.platform + junit-platform-surefire-provider + ${junit.platform.version} + + + org.junit.jupiter + junit-jupiter-engine + ${junit.jupiter.version} + + + + + + + + + org.junit.jupiter + junit-jupiter-api + ${junit.jupiter.version} + test + + + org.hamcrest + hamcrest-all + 1.3 + test + + + From 901d2c0ee8d05c32c29f6f83c1909cd4706cb427 Mon Sep 17 00:00:00 2001 From: Cosmin Stroe Date: Fri, 3 Feb 2017 08:05:23 -0600 Subject: [PATCH 03/11] compiling with maven --- pom.xml | 5 +++++ .../java/org/lsmp/djepExamples/AssignmentExample.java | 0 .../java/org/lsmp/djepExamples/BlockStatments.java | 0 src/{main => test}/java/org/lsmp/djepExamples/Console.java | 0 .../java/org/lsmp/djepExamples/DJepApplet.java | 0 .../java/org/lsmp/djepExamples/DJepConsole.java | 0 .../java/org/lsmp/djepExamples/DiffExample.java | 0 .../java/org/lsmp/djepExamples/GroupConsole.java | 0 .../java/org/lsmp/djepExamples/JamaConsole.java | 0 .../java/org/lsmp/djepExamples/MRpConsole.java | 0 .../java/org/lsmp/djepExamples/MRpDiffExample.java | 0 .../java/org/lsmp/djepExamples/MRpExample.java | 0 src/{main => test}/java/org/lsmp/djepExamples/MRpSpeed.java | 0 .../java/org/lsmp/djepExamples/MRpSurfExample.java | 0 .../java/org/lsmp/djepExamples/MatrixConsole.java | 0 .../java/org/lsmp/djepExamples/MatrixExample.java | 0 .../java/org/lsmp/djepExamples/MatrixSpeed.java | 0 .../java/org/lsmp/djepExamples/ObserverConsole.java | 0 .../java/org/lsmp/djepExamples/PrintExample.java | 0 src/{main => test}/java/org/lsmp/djepExamples/RpExample.java | 0 src/{main => test}/java/org/lsmp/djepExamples/RpSpeed.java | 0 .../java/org/lsmp/djepExamples/RpeConsole.java | 0 .../java/org/lsmp/djepExamples/SJepConsole.java | 0 .../java/org/lsmp/djepExamples/VectorConsole.java | 0 .../java/org/lsmp/djepExamples/VectorExample.java | 0 .../java/org/lsmp/djepExamples/VectorPrint.java | 0 .../java/org/lsmp/djepExamples/XJepConsole.java | 0 .../java/org/lsmp/djepExamples/XJepExample.java | 0 src/{main => test}/java/org/lsmp/djepExamples/package.html | 0 src/{main => test}/java/org/lsmp/djepJUnit/DJepTest.java | 0 src/{main => test}/java/org/lsmp/djepJUnit/GroupJepTest.java | 0 src/{main => test}/java/org/lsmp/djepJUnit/JepTest.java | 0 src/{main => test}/java/org/lsmp/djepJUnit/MRpTest.java | 0 .../java/org/lsmp/djepJUnit/MatrixJepTest.java | 0 src/{main => test}/java/org/lsmp/djepJUnit/RewriteTest.java | 0 src/{main => test}/java/org/lsmp/djepJUnit/RpTest.java | 0 src/{main => test}/java/org/lsmp/djepJUnit/SJepTest.java | 0 .../java/org/lsmp/djepJUnit/VectorJepTest.java | 0 src/{main => test}/java/org/lsmp/djepJUnit/XJepTest.java | 0 src/{main => test}/java/org/lsmp/djepJUnit/package.html | 0 src/{main => test}/java/org/nfunk/jepexamples/Console.java | 0 src/{main => test}/java/org/nfunk/jepexamples/Evaluator.java | 0 src/{main => test}/java/org/nfunk/jepexamples/Fractal.java | 0 .../java/org/nfunk/jepexamples/FractalCanvas.java | 0 .../java/org/nfunk/jepexamples/FunctionPlotter.java | 0 .../java/org/nfunk/jepexamples/GraphCanvas.java | 0 .../java/org/nfunk/jepexamples/LargeExpressionTest.java | 0 .../java/org/nfunk/jepexamples/SimpleTest.java | 0 .../java/org/nfunk/jepexamples/ThreadTest.java | 0 .../java/org/nfunk/jepexamples/ThreadTestThread.java | 0 src/{main => test}/java/org/nfunk/jepexamples/package.html | 0 src/{main => test}/java/org/nfunk/jeptesting/AllTests.java | 0 src/{main => test}/java/org/nfunk/jeptesting/JEPTest.java | 0 .../java/org/nfunk/jeptesting/LogarithmTest.java | 0 .../java/org/nfunk/jeptesting/NaturalLogarithmTest.java | 0 src/{main => test}/java/org/nfunk/jeptesting/package.html | 0 56 files changed, 5 insertions(+) rename src/{main => test}/java/org/lsmp/djepExamples/AssignmentExample.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/BlockStatments.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/Console.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/DJepApplet.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/DJepConsole.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/DiffExample.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/GroupConsole.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/JamaConsole.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/MRpConsole.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/MRpDiffExample.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/MRpExample.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/MRpSpeed.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/MRpSurfExample.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/MatrixConsole.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/MatrixExample.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/MatrixSpeed.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/ObserverConsole.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/PrintExample.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/RpExample.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/RpSpeed.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/RpeConsole.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/SJepConsole.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/VectorConsole.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/VectorExample.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/VectorPrint.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/XJepConsole.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/XJepExample.java (100%) rename src/{main => test}/java/org/lsmp/djepExamples/package.html (100%) rename src/{main => test}/java/org/lsmp/djepJUnit/DJepTest.java (100%) rename src/{main => test}/java/org/lsmp/djepJUnit/GroupJepTest.java (100%) rename src/{main => test}/java/org/lsmp/djepJUnit/JepTest.java (100%) rename src/{main => test}/java/org/lsmp/djepJUnit/MRpTest.java (100%) rename src/{main => test}/java/org/lsmp/djepJUnit/MatrixJepTest.java (100%) rename src/{main => test}/java/org/lsmp/djepJUnit/RewriteTest.java (100%) rename src/{main => test}/java/org/lsmp/djepJUnit/RpTest.java (100%) rename src/{main => test}/java/org/lsmp/djepJUnit/SJepTest.java (100%) rename src/{main => test}/java/org/lsmp/djepJUnit/VectorJepTest.java (100%) rename src/{main => test}/java/org/lsmp/djepJUnit/XJepTest.java (100%) rename src/{main => test}/java/org/lsmp/djepJUnit/package.html (100%) rename src/{main => test}/java/org/nfunk/jepexamples/Console.java (100%) rename src/{main => test}/java/org/nfunk/jepexamples/Evaluator.java (100%) rename src/{main => test}/java/org/nfunk/jepexamples/Fractal.java (100%) rename src/{main => test}/java/org/nfunk/jepexamples/FractalCanvas.java (100%) rename src/{main => test}/java/org/nfunk/jepexamples/FunctionPlotter.java (100%) rename src/{main => test}/java/org/nfunk/jepexamples/GraphCanvas.java (100%) rename src/{main => test}/java/org/nfunk/jepexamples/LargeExpressionTest.java (100%) rename src/{main => test}/java/org/nfunk/jepexamples/SimpleTest.java (100%) rename src/{main => test}/java/org/nfunk/jepexamples/ThreadTest.java (100%) rename src/{main => test}/java/org/nfunk/jepexamples/ThreadTestThread.java (100%) rename src/{main => test}/java/org/nfunk/jepexamples/package.html (100%) rename src/{main => test}/java/org/nfunk/jeptesting/AllTests.java (100%) rename src/{main => test}/java/org/nfunk/jeptesting/JEPTest.java (100%) rename src/{main => test}/java/org/nfunk/jeptesting/LogarithmTest.java (100%) rename src/{main => test}/java/org/nfunk/jeptesting/NaturalLogarithmTest.java (100%) rename src/{main => test}/java/org/nfunk/jeptesting/package.html (100%) diff --git a/pom.xml b/pom.xml index 70a1ffb..95916b0 100644 --- a/pom.xml +++ b/pom.xml @@ -54,6 +54,11 @@ + + com.github.cstroe + jama + 1.0.4-SNAPSHOT + org.junit.jupiter junit-jupiter-api diff --git a/src/main/java/org/lsmp/djepExamples/AssignmentExample.java b/src/test/java/org/lsmp/djepExamples/AssignmentExample.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/AssignmentExample.java rename to src/test/java/org/lsmp/djepExamples/AssignmentExample.java diff --git a/src/main/java/org/lsmp/djepExamples/BlockStatments.java b/src/test/java/org/lsmp/djepExamples/BlockStatments.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/BlockStatments.java rename to src/test/java/org/lsmp/djepExamples/BlockStatments.java diff --git a/src/main/java/org/lsmp/djepExamples/Console.java b/src/test/java/org/lsmp/djepExamples/Console.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/Console.java rename to src/test/java/org/lsmp/djepExamples/Console.java diff --git a/src/main/java/org/lsmp/djepExamples/DJepApplet.java b/src/test/java/org/lsmp/djepExamples/DJepApplet.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/DJepApplet.java rename to src/test/java/org/lsmp/djepExamples/DJepApplet.java diff --git a/src/main/java/org/lsmp/djepExamples/DJepConsole.java b/src/test/java/org/lsmp/djepExamples/DJepConsole.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/DJepConsole.java rename to src/test/java/org/lsmp/djepExamples/DJepConsole.java diff --git a/src/main/java/org/lsmp/djepExamples/DiffExample.java b/src/test/java/org/lsmp/djepExamples/DiffExample.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/DiffExample.java rename to src/test/java/org/lsmp/djepExamples/DiffExample.java diff --git a/src/main/java/org/lsmp/djepExamples/GroupConsole.java b/src/test/java/org/lsmp/djepExamples/GroupConsole.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/GroupConsole.java rename to src/test/java/org/lsmp/djepExamples/GroupConsole.java diff --git a/src/main/java/org/lsmp/djepExamples/JamaConsole.java b/src/test/java/org/lsmp/djepExamples/JamaConsole.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/JamaConsole.java rename to src/test/java/org/lsmp/djepExamples/JamaConsole.java diff --git a/src/main/java/org/lsmp/djepExamples/MRpConsole.java b/src/test/java/org/lsmp/djepExamples/MRpConsole.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/MRpConsole.java rename to src/test/java/org/lsmp/djepExamples/MRpConsole.java diff --git a/src/main/java/org/lsmp/djepExamples/MRpDiffExample.java b/src/test/java/org/lsmp/djepExamples/MRpDiffExample.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/MRpDiffExample.java rename to src/test/java/org/lsmp/djepExamples/MRpDiffExample.java diff --git a/src/main/java/org/lsmp/djepExamples/MRpExample.java b/src/test/java/org/lsmp/djepExamples/MRpExample.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/MRpExample.java rename to src/test/java/org/lsmp/djepExamples/MRpExample.java diff --git a/src/main/java/org/lsmp/djepExamples/MRpSpeed.java b/src/test/java/org/lsmp/djepExamples/MRpSpeed.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/MRpSpeed.java rename to src/test/java/org/lsmp/djepExamples/MRpSpeed.java diff --git a/src/main/java/org/lsmp/djepExamples/MRpSurfExample.java b/src/test/java/org/lsmp/djepExamples/MRpSurfExample.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/MRpSurfExample.java rename to src/test/java/org/lsmp/djepExamples/MRpSurfExample.java diff --git a/src/main/java/org/lsmp/djepExamples/MatrixConsole.java b/src/test/java/org/lsmp/djepExamples/MatrixConsole.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/MatrixConsole.java rename to src/test/java/org/lsmp/djepExamples/MatrixConsole.java diff --git a/src/main/java/org/lsmp/djepExamples/MatrixExample.java b/src/test/java/org/lsmp/djepExamples/MatrixExample.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/MatrixExample.java rename to src/test/java/org/lsmp/djepExamples/MatrixExample.java diff --git a/src/main/java/org/lsmp/djepExamples/MatrixSpeed.java b/src/test/java/org/lsmp/djepExamples/MatrixSpeed.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/MatrixSpeed.java rename to src/test/java/org/lsmp/djepExamples/MatrixSpeed.java diff --git a/src/main/java/org/lsmp/djepExamples/ObserverConsole.java b/src/test/java/org/lsmp/djepExamples/ObserverConsole.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/ObserverConsole.java rename to src/test/java/org/lsmp/djepExamples/ObserverConsole.java diff --git a/src/main/java/org/lsmp/djepExamples/PrintExample.java b/src/test/java/org/lsmp/djepExamples/PrintExample.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/PrintExample.java rename to src/test/java/org/lsmp/djepExamples/PrintExample.java diff --git a/src/main/java/org/lsmp/djepExamples/RpExample.java b/src/test/java/org/lsmp/djepExamples/RpExample.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/RpExample.java rename to src/test/java/org/lsmp/djepExamples/RpExample.java diff --git a/src/main/java/org/lsmp/djepExamples/RpSpeed.java b/src/test/java/org/lsmp/djepExamples/RpSpeed.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/RpSpeed.java rename to src/test/java/org/lsmp/djepExamples/RpSpeed.java diff --git a/src/main/java/org/lsmp/djepExamples/RpeConsole.java b/src/test/java/org/lsmp/djepExamples/RpeConsole.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/RpeConsole.java rename to src/test/java/org/lsmp/djepExamples/RpeConsole.java diff --git a/src/main/java/org/lsmp/djepExamples/SJepConsole.java b/src/test/java/org/lsmp/djepExamples/SJepConsole.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/SJepConsole.java rename to src/test/java/org/lsmp/djepExamples/SJepConsole.java diff --git a/src/main/java/org/lsmp/djepExamples/VectorConsole.java b/src/test/java/org/lsmp/djepExamples/VectorConsole.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/VectorConsole.java rename to src/test/java/org/lsmp/djepExamples/VectorConsole.java diff --git a/src/main/java/org/lsmp/djepExamples/VectorExample.java b/src/test/java/org/lsmp/djepExamples/VectorExample.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/VectorExample.java rename to src/test/java/org/lsmp/djepExamples/VectorExample.java diff --git a/src/main/java/org/lsmp/djepExamples/VectorPrint.java b/src/test/java/org/lsmp/djepExamples/VectorPrint.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/VectorPrint.java rename to src/test/java/org/lsmp/djepExamples/VectorPrint.java diff --git a/src/main/java/org/lsmp/djepExamples/XJepConsole.java b/src/test/java/org/lsmp/djepExamples/XJepConsole.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/XJepConsole.java rename to src/test/java/org/lsmp/djepExamples/XJepConsole.java diff --git a/src/main/java/org/lsmp/djepExamples/XJepExample.java b/src/test/java/org/lsmp/djepExamples/XJepExample.java similarity index 100% rename from src/main/java/org/lsmp/djepExamples/XJepExample.java rename to src/test/java/org/lsmp/djepExamples/XJepExample.java diff --git a/src/main/java/org/lsmp/djepExamples/package.html b/src/test/java/org/lsmp/djepExamples/package.html similarity index 100% rename from src/main/java/org/lsmp/djepExamples/package.html rename to src/test/java/org/lsmp/djepExamples/package.html diff --git a/src/main/java/org/lsmp/djepJUnit/DJepTest.java b/src/test/java/org/lsmp/djepJUnit/DJepTest.java similarity index 100% rename from src/main/java/org/lsmp/djepJUnit/DJepTest.java rename to src/test/java/org/lsmp/djepJUnit/DJepTest.java diff --git a/src/main/java/org/lsmp/djepJUnit/GroupJepTest.java b/src/test/java/org/lsmp/djepJUnit/GroupJepTest.java similarity index 100% rename from src/main/java/org/lsmp/djepJUnit/GroupJepTest.java rename to src/test/java/org/lsmp/djepJUnit/GroupJepTest.java diff --git a/src/main/java/org/lsmp/djepJUnit/JepTest.java b/src/test/java/org/lsmp/djepJUnit/JepTest.java similarity index 100% rename from src/main/java/org/lsmp/djepJUnit/JepTest.java rename to src/test/java/org/lsmp/djepJUnit/JepTest.java diff --git a/src/main/java/org/lsmp/djepJUnit/MRpTest.java b/src/test/java/org/lsmp/djepJUnit/MRpTest.java similarity index 100% rename from src/main/java/org/lsmp/djepJUnit/MRpTest.java rename to src/test/java/org/lsmp/djepJUnit/MRpTest.java diff --git a/src/main/java/org/lsmp/djepJUnit/MatrixJepTest.java b/src/test/java/org/lsmp/djepJUnit/MatrixJepTest.java similarity index 100% rename from src/main/java/org/lsmp/djepJUnit/MatrixJepTest.java rename to src/test/java/org/lsmp/djepJUnit/MatrixJepTest.java diff --git a/src/main/java/org/lsmp/djepJUnit/RewriteTest.java b/src/test/java/org/lsmp/djepJUnit/RewriteTest.java similarity index 100% rename from src/main/java/org/lsmp/djepJUnit/RewriteTest.java rename to src/test/java/org/lsmp/djepJUnit/RewriteTest.java diff --git a/src/main/java/org/lsmp/djepJUnit/RpTest.java b/src/test/java/org/lsmp/djepJUnit/RpTest.java similarity index 100% rename from src/main/java/org/lsmp/djepJUnit/RpTest.java rename to src/test/java/org/lsmp/djepJUnit/RpTest.java diff --git a/src/main/java/org/lsmp/djepJUnit/SJepTest.java b/src/test/java/org/lsmp/djepJUnit/SJepTest.java similarity index 100% rename from src/main/java/org/lsmp/djepJUnit/SJepTest.java rename to src/test/java/org/lsmp/djepJUnit/SJepTest.java diff --git a/src/main/java/org/lsmp/djepJUnit/VectorJepTest.java b/src/test/java/org/lsmp/djepJUnit/VectorJepTest.java similarity index 100% rename from src/main/java/org/lsmp/djepJUnit/VectorJepTest.java rename to src/test/java/org/lsmp/djepJUnit/VectorJepTest.java diff --git a/src/main/java/org/lsmp/djepJUnit/XJepTest.java b/src/test/java/org/lsmp/djepJUnit/XJepTest.java similarity index 100% rename from src/main/java/org/lsmp/djepJUnit/XJepTest.java rename to src/test/java/org/lsmp/djepJUnit/XJepTest.java diff --git a/src/main/java/org/lsmp/djepJUnit/package.html b/src/test/java/org/lsmp/djepJUnit/package.html similarity index 100% rename from src/main/java/org/lsmp/djepJUnit/package.html rename to src/test/java/org/lsmp/djepJUnit/package.html diff --git a/src/main/java/org/nfunk/jepexamples/Console.java b/src/test/java/org/nfunk/jepexamples/Console.java similarity index 100% rename from src/main/java/org/nfunk/jepexamples/Console.java rename to src/test/java/org/nfunk/jepexamples/Console.java diff --git a/src/main/java/org/nfunk/jepexamples/Evaluator.java b/src/test/java/org/nfunk/jepexamples/Evaluator.java similarity index 100% rename from src/main/java/org/nfunk/jepexamples/Evaluator.java rename to src/test/java/org/nfunk/jepexamples/Evaluator.java diff --git a/src/main/java/org/nfunk/jepexamples/Fractal.java b/src/test/java/org/nfunk/jepexamples/Fractal.java similarity index 100% rename from src/main/java/org/nfunk/jepexamples/Fractal.java rename to src/test/java/org/nfunk/jepexamples/Fractal.java diff --git a/src/main/java/org/nfunk/jepexamples/FractalCanvas.java b/src/test/java/org/nfunk/jepexamples/FractalCanvas.java similarity index 100% rename from src/main/java/org/nfunk/jepexamples/FractalCanvas.java rename to src/test/java/org/nfunk/jepexamples/FractalCanvas.java diff --git a/src/main/java/org/nfunk/jepexamples/FunctionPlotter.java b/src/test/java/org/nfunk/jepexamples/FunctionPlotter.java similarity index 100% rename from src/main/java/org/nfunk/jepexamples/FunctionPlotter.java rename to src/test/java/org/nfunk/jepexamples/FunctionPlotter.java diff --git a/src/main/java/org/nfunk/jepexamples/GraphCanvas.java b/src/test/java/org/nfunk/jepexamples/GraphCanvas.java similarity index 100% rename from src/main/java/org/nfunk/jepexamples/GraphCanvas.java rename to src/test/java/org/nfunk/jepexamples/GraphCanvas.java diff --git a/src/main/java/org/nfunk/jepexamples/LargeExpressionTest.java b/src/test/java/org/nfunk/jepexamples/LargeExpressionTest.java similarity index 100% rename from src/main/java/org/nfunk/jepexamples/LargeExpressionTest.java rename to src/test/java/org/nfunk/jepexamples/LargeExpressionTest.java diff --git a/src/main/java/org/nfunk/jepexamples/SimpleTest.java b/src/test/java/org/nfunk/jepexamples/SimpleTest.java similarity index 100% rename from src/main/java/org/nfunk/jepexamples/SimpleTest.java rename to src/test/java/org/nfunk/jepexamples/SimpleTest.java diff --git a/src/main/java/org/nfunk/jepexamples/ThreadTest.java b/src/test/java/org/nfunk/jepexamples/ThreadTest.java similarity index 100% rename from src/main/java/org/nfunk/jepexamples/ThreadTest.java rename to src/test/java/org/nfunk/jepexamples/ThreadTest.java diff --git a/src/main/java/org/nfunk/jepexamples/ThreadTestThread.java b/src/test/java/org/nfunk/jepexamples/ThreadTestThread.java similarity index 100% rename from src/main/java/org/nfunk/jepexamples/ThreadTestThread.java rename to src/test/java/org/nfunk/jepexamples/ThreadTestThread.java diff --git a/src/main/java/org/nfunk/jepexamples/package.html b/src/test/java/org/nfunk/jepexamples/package.html similarity index 100% rename from src/main/java/org/nfunk/jepexamples/package.html rename to src/test/java/org/nfunk/jepexamples/package.html diff --git a/src/main/java/org/nfunk/jeptesting/AllTests.java b/src/test/java/org/nfunk/jeptesting/AllTests.java similarity index 100% rename from src/main/java/org/nfunk/jeptesting/AllTests.java rename to src/test/java/org/nfunk/jeptesting/AllTests.java diff --git a/src/main/java/org/nfunk/jeptesting/JEPTest.java b/src/test/java/org/nfunk/jeptesting/JEPTest.java similarity index 100% rename from src/main/java/org/nfunk/jeptesting/JEPTest.java rename to src/test/java/org/nfunk/jeptesting/JEPTest.java diff --git a/src/main/java/org/nfunk/jeptesting/LogarithmTest.java b/src/test/java/org/nfunk/jeptesting/LogarithmTest.java similarity index 100% rename from src/main/java/org/nfunk/jeptesting/LogarithmTest.java rename to src/test/java/org/nfunk/jeptesting/LogarithmTest.java diff --git a/src/main/java/org/nfunk/jeptesting/NaturalLogarithmTest.java b/src/test/java/org/nfunk/jeptesting/NaturalLogarithmTest.java similarity index 100% rename from src/main/java/org/nfunk/jeptesting/NaturalLogarithmTest.java rename to src/test/java/org/nfunk/jeptesting/NaturalLogarithmTest.java diff --git a/src/main/java/org/nfunk/jeptesting/package.html b/src/test/java/org/nfunk/jeptesting/package.html similarity index 100% rename from src/main/java/org/nfunk/jeptesting/package.html rename to src/test/java/org/nfunk/jeptesting/package.html From 8f5ba528e5a4276d499cb7ffdb7ec9ddf9e39708 Mon Sep 17 00:00:00 2001 From: Cosmin Stroe Date: Fri, 3 Feb 2017 08:05:54 -0600 Subject: [PATCH 04/11] maven is managing our dependencies now --- lib/Jama-1.0.2.jar | Bin 32775 -> 0 bytes lib/junit.jar | Bin 117522 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 lib/Jama-1.0.2.jar delete mode 100644 lib/junit.jar diff --git a/lib/Jama-1.0.2.jar b/lib/Jama-1.0.2.jar deleted file mode 100644 index 824d13338e499092e1a45a8fa39d30ea1304cf8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32775 zcmaI7V~{98x31Z?ZS1yf+qP}nwr$(CZQHipyWO+DGjs0DMBIC-qB1ffS4L(1sP#rZ z?@DNjs%@GbKeoL03adD?UY|az7=xvUqfSa0L9Xg`|Tv9g6*X&3~T%cOg;H z|NpNb_%|wPU}HchWNv3|;$-C^Y+__*V{hkV;cQ`NOKW6p;N;|@A|tP*g7SmsK}YBJ zm1-t*Q&pe|ix43I0V_{UvK%Dyk-sm<=AhkvS*gUSgj)(jdnv6| z;v6|CsB^B!hU;dFGv;t2$#&?bhg2Y~bDZtg=XC2f%X5~Sh5ys>%i<3q$}>NI7=T_Q z*xa!Y9uL(wKL=H;;~m1|4u?p{smx8cFN>-}E6h_a+7@|4JIq}!)JFeOey*}mb{Gs| zp&WSh_0Hbc_ysE^Kke=78@g8~W&fI?(KJt2K+DdVI88icG$A;veQD#N63A^ngMnlz zHdF23O2}k#tScc~0-L4(WrD;RNK+iIBpSeA8AJomFi&Gwf_~xaj{m~THrL(~pT#Ph z75Fi~4@zZoe3p7N+MJTn_GmiL+<4P8F;WcA`QhUZNalmlPl2ClKOPoz|4C1t8h2D5 z*$ywnelrxsPBhR(7Qa5zgpVqH;LMl>1z)x#N|}K-UV_Fb+DhNdY%?9DkCZ8;1;lZs zs6SfFAjghBPJIj=U`%O-aT910ym8w|g4PJyd23)n)0FRrKzwoSjjsX7YRs5Dow?0dpvEt>D{)B*BY|p)IbB=q3xIv z1JSyUo}Vf|*ojhyGvR8YfE5m}c@ZM*8dqV;h6nE$(3^3bxF0#DHBNFycbXoE)2voY z01N{k)vjsp>~_WupDnY|Hla3QHlL{{%2d}31{pUHK)E0sE0}U#Ub7)-nc<2nMxF;y zjLLpc#JkuDS#d*KIjTv4iyg0})tA42$3?D!Z4af5dL@@Xc@=+gsj)Wqt~G<|)Je_k-<=eI=qbG8F47E@!CONC7IyuojW*teH!CNd4_m-l(u~oOM-O)Q% zkz6kOhPVB9U*i06>(9X=2VC-Wre;$8hA$l_`O8*yRxrRxwayf)Dgz8#UW_L%%gi}H zIwyyaPIf%G=zNR=&KR+wJ2VgdLX^qnUk9MI`8XC&U!lA^4tu@>6yKxb@0j*tL-EQo z-f&roF-%eG(FMi4b%tK*)(2!%jImW0wY41+xg@Pad9U_vFleP2hmf-h{7b$pN>NXh6zL}1!eOM>d9oQ zK&@Ovh1!D{$>65U>0JhKibtX$c2G5v>7ZX&r!w-p>bq?ORA@-n?*h%92?ZeAdpiA? zqn25Qk7Smv39Ea|x_+AH1J=DUF7~iF1~DH*>^J{)v1Xl7AMG(TH=l^EHz+$ydzXL5%k5Rn&{l5QXO}gp|e?1TYfL^fwDOvsb?_?!nVP<0MYGCbR^1n$}C7c%e zDkCdr*&TL%cf3Fy$D`e8!T#|eAbRoVDz74tf&0J$fGmU&gxrHc2;uqq3(e*gn%e5d z2{ob$fK>#wEw=53BAQpR<~4a*HOnRB_c<9}dq5*~e7posrl-_Srn8J@w(b|_MRGv= zFtx7&@a%f5MJ7z6@aX;O8`xxC=$+s}-(%m)bv*srXz%-Wr19LV-17)Uw!=zuCEr!s`GQfrJ&A1uT)UDBnmG1v5Z2+lNTa2K^q zXG|#DrZV;T(#DZ+1(rFp|0-lJoiR%V{=_t4X@UK5CdcKeEUhS=OUF{ZpL9Zz5b}Wz zvbWf9AP4qscF##vaG=d<#inf9;@S!Ar}8CGFgVaAC&k{Ep-BRgYRTg}@dXNfi@ z4_#X$%`zoBV{K(7HG9cbVCo}$5#eBklvUMNF|s~n&HPl2`1DBHQ;RqJCIaI2-daNM3_x<`Zi(W zXAK%KG%~SKcce+4QK@du{KcGkM<}`VFB~%B3BhPqV()z?brb_r$%q2{nAlZm3vT2K7S-Re|7UF8#$+8 zYFW*U$;M(P15Rv7Bg62;(vp3`+Oo6X+Fh!p*MZkv+P3mY86qiT7YLee8w#6xNf3Cg%L=}2(#EYwhh#Mg{M`2$%?8$xNVz)XVQ9kIlbaRqn!y${6xK0 z%b|P1Yf-v})#6>mWFCUiNI3y4W1+4*s6kk$n`V3%zeF4fZm@C0am)&YN=Q`Prnqd8 zS-HS?9i>2B@Fv!{E_EbCeH*(qxj7-of(YEjYhY_-APdWDt>Kl30(|+BbwIDNXYQ0z zya7GcCT>0#kFqw1tI{xg<}O5OQ5^liACPbwYW^F+wu#;J}w{sYIM7 za`^%)lbc5^E39KzMggrXq1z-)bEGI%MiEz@%37jE-#B&cW`s{|V2KA;?}RL(?mEF% zZ0o0*1G_w?D;UquzX;<1$F|mAs+}*;=uJDE@fzyPNfl!X(*VaT0Ggv@_8-2?Jz zPcwZS(;JC8H0r?fv?pY&N*}5^V9EemdC0Xqz^wiEk5Vt7%RTGzP?$ZaH_+07m3i=x zciJP1KdwG$CJeLz+^fGSH}2^n$9$kede{m*zE%OM-QkZ-J-`~njH&FF+rUaYF4}=n zJ%--VPu>Cg8zA+7+=1p7WGaFHHt2p@GIU=dIdutRd+w~6JKs2u-d?T zGl*>o_5tfANZV3ReIQ<7$}@R&p_x8Q&%`~Cx=>!f<_EsI*j~RUVxUVQvNZzYI{61< zvwjQ)NFOrM0WCwofpNQv@(_<9m^EtDzHUSG=hT63188f6*SoT~u8iyGa;pG>B)gI9 zvLf1yl7>i?Qols1UmEb1t*17AMcgE)9POK{Q2zt}h$O5@ESJNjazn9aOBW&g=MJsR`r}%cxo;twFy>M z*5typ;L>7n$=a&VOL(SZn+cYi*iC^3RBO{MoKJBUQE5PO3pL@ks93r+wTOe_v z9N*wK3{B3*8QQr_L==gdv%`grQ41rxOYW#!I+VmN)0gQiiqxiZf$kDXGhJE_o9oi{Hv)R%YBQCcGq{peZtBW{z7O*=+!LC)=+W=`hd-khT6l z{VQ`y*+)O)4{yw7-DezHHwV@)KxZxJ9CbY)Qv0apL23pR*FjnAQ8ZzELz3>$toE#4 zD7yx=ZW)g}>(Kc90_*^M{bA($1fd5+vu5~4979V7$k*U`2mEh1Vg2arK)u71Z%}0Y zeD+A*F-Zq`>i~QDKyU^~KOs&BTHRp1LwW;$v!8tTf#29{gNE9XeTRAOk$nf}!t4+r ze>9L+MTuaRu;&%Cy;PiQY zqRZyfxOsyWIHN-bqeT9IM~R?xg)>qk0@qiSA3ms0qoO;wl4>Yybx7G`5?AqbN<6oH z8vyJn0T&_mu0NR8o){U8WF?SCPw8Bk6fyWZ9=GbBMVl4f6-0$i!9SvN^l`pt)S z07Un^hnB$1*EKHMLgUik&4oJSsho?QW~rUl3Te&9sRa|gxph+n1>HqgCY(GKUtVAX zAlHt|TsF#1&=K1+>WYJ55@j2FV^P7NL9~N-LT|=VZ4jV1$y!$mVU6e)#R<~XE*d!* zP1sg6nL{u3AaPj)%*u!*Wr`+c`jD&6BEituJfker)(puz%0Dv)#$N>{JXpRHM!k%3fU7)R#J*6`2VNVnrtYwd4-T!336&o~m zFX*0FmB_=6w`=yspgWAnlR)H(1oqaD7j#4qU#8C>J5uXT@j5tVk1<49Z7L0`8@Oc8 zI`l5>#IkzC*bQ{o@7oS&cBpDSsKXAeXZS{j_Y0c!Ae0@YX9WEd{zM*3vka+45vb-k zO_#5zEgpms+b_ZlimrsKE2PGtJ;*H8kYPK_8mr<Rlv79Sms9+eZb9zX%_~jJ)sFNYmzRz#$bo( z|C8yw@uQ6bivZkFv)p)zzw>yW8Yd*(CfJF(T7$DgiIAc|G+7ttNrbfnf)|scg>ikZ zmHk7fx<#i%RH>adM1a+F*HMngw*Gh6_FP@V9HlWDsEI&C+1#uyuvPHl$VS0-?OrkA zT=cF!oH))lz#+0-zE=_I#@S4+xMRpvo!5-VGyqk$$Xb$j-#*YzN+k}pk?oEiiU@lj zMgpxOoZY{sl-5L2j(mj(r`I`p#o{mbxV7dESmq@{z4MAu$sg?-j0*v%fu+XEq|uW; z$R+)wOu$uf)3xj*y1c}A8tNEBMyffObE>s{(xou~L28b&RYShVDcv9>scGZW2X9Y4 zM^ZF4C*#5f3Jkk+jtMZYq(&fD*Q^a3x)icFx-pJ@ZYJusL?VIyT|_%F1u8e97YGS! z{y=~xH8e~S>oaIYY=%g~+1wR>NGGJyIo%kCh-EYqN+v2c5+^4_u93TtI}y}BucL~8L!t4j75s21sj4Qt?~|q@(Co$#UYWuC?5b~E~7BKV=x!B+_p?( zw;3EY58+Wn@wn3|CdNCHYcxT)vp>a&uAo%EX4!M$uJ?BSQXEmoE1J3GPKu>XRz=~+ z-nm7)WtfPvI207LWswkPf@E;%6{@`{Y0zM9?|GW}_Q1`V@6=)(EMnQin6lS3VHBq7 zor3C#D(#59QcR5% z#bs>uz^76OtU{6%U|E7ysmv419DGogGi&B^fE#%S0YFtHIrHiXK(sBmP1~hga@7C_>>J}ZMvj3eo8ZakcnQD=Bf5gvgeI!H2ioIvc;1v> zqQ~l)YDx!MeN9t+qgkGi9$e2YQ6#mAq0@R|R@<2sYbHCbbGWxu-&<=O-H)44pCqPG z)lxA?vde6xB*-H;Is|crBC1QgA2B{AVA43CuoGBjML8x2Xc(nf^JKA#Ox~JN^m?WL zkXUzR2wI{USgGEHe$CitWt53aU9(yGdiLKY))>iR9aPSqo5wXNIC4?Q94m{qUrc4L zRyLs+X-{8!(&lBD=A{zHr3Z?Oge zuACRYDn|kf?aMohAy;RV0l#jk+y0EUDZ2y%j@xZ53p-zuiM!5}ej6K94g$4sP2`+N@`r(sexBs zhGF%PgP;?miDIWA)L0I-B`i;s)<~zy;I5)&@?$S}`Uu5V%I2C(AS7myV733#c4Cg?bEFD{v)(nzG*Rt((AZZUKhq9N&*vzlpnj%Hd zz-21o0dyX+&)}u4t5Qlwr`z;x#?Rr3d}a0)Gh>=WuH}*14u2t&2 zWh{1DIV8u<%=M3+YsQ0}7sYG71*V=U`r#2HBaoq@vnmBe58u>_RAYD?Q45Dkc{D{@ zLy{jiX*LVd7>CAb1L}mLj%@MHOhQ5};Whs{?7-2G4Fp%iQ}RN8K5)EI-3HV>fU*bE4Y<8AeqsNDjNQ9jhkw>% z?DgZd<4--zxnuQ)m>q1fqwNh~zR|Ysd$nWijh(y!?uLQeqx(k7?eE=de1YhV_8sYd zC3o-+1-)_j#^~+;eIx0($1grwGv4Q`fc6#Yc|dp>@>BQ+w?&WKnDP3`Cf>dzb5UVrZ0t_|r zRLn`1)wp727iS5iu!YU6RGed3V?V5t%>7+CV3#k=>s?7;7gFctZ`xqg=Iw28W9Dy5 zDQ&Q07VwIpo5d`uU%6wJbW5OHzEReE^B-z)GWRb9(K}}IBWj(@6RpT~t}6?rw2#ai zt+-`eYzn4yZj_HUC6~1SD&<@uR=V-XskQ4Cfvt6M^NP#V)|sbXL6GcV&A7T1bKD|X zy5)b+IeB+U_c! z`9}F({6?d3!Oy?i@hijL)?29C*;{1%EBA~Ym%ryJ*u1SI+UD-LRFhlaoK=>o>W;Q3 zIY&8KQ`VAe(>(h`S@ZY0h>It09;{9@s~fa=!)ihEj-Yc(OXRP6*^;Uq^3Iix;9rls zVw+u^=AEuQ2Ro&tzW_YP-{G!ad_`j2c}qvTLeIf}#XJ|u&Mortavws@HT29pXVs+V zK0oI1^gw&|ujJ@HXbsszbYEHKsd_zOhT{!(J zhO#X>{b*gp`{901^+ovJ^NIYv_KAdjhh2#MB7RWFi;DsET$tzg`S*JO0Uv>Yl0wti zSJ;DAhH%jfxdZi~?Dl)!+9Ce*2mQf#3xWX6MfB8!v*pZk=4&T$8gtkhVmwK z1m=SxI!Db30(6k1*FypE3KzEz32KgINI{+`zwy$=$j1X~KkbaKX zDV-c@DXd|hK@MMo$|LkQQvIAn0ntzS3On!_$W#0757@6EgXZQ;HQ=0r@w>rtI`K-Qkss z_-fk45dz6c&vDv`I^BB(XKHVPM*PQlmzq!2E@6b)P=53EBelb$K`F2E)}L(n= z*`0*dbsCFdo9$SCC)`F|`BG%f0|mlpTnj;dw9WUQC} zBJUu6^Xru8000-{{}Xw~`fu_st@6Ji?m4Pj)+i<@KR>h6v$w8Wh8O$=TaEtxty|Dh zjjh|wtpqeuQP9d(3LC9cjP>a2(7Jfhq}UOoWHAEFh)Ob-L89IK3f;rxl;sh0Sa+nE z7)9g!r+4VOUSLz3 zz?@*9l!IHK$q5O%fCs00EJw>Imd@A*Ax1G7j80b|rtd@F3&zbxPRwZx zcDg&<#QCqqV@5zM227~f<78q+88!Cdj*8X{@WoEeZ&@afmYSYR9)`2^NiB?cQyS&VE!Lb4{v18%_gw^GURIoWm{B(L zBz>LtueyIEKa7JE4^f%1eXJb)(`uZ!rbQmYe6;ZrvgNo-0QS0po&`IB6x4} z#YW>nR`xaEL;F=Kv*M%piXfj6DK;vxGKns-Jf)^-+*(^xUvr)R)z=X2ukOE7KH55PD$X)3sx2=u8|GnkrZQQ;?lRxETRZ$8I%u* z3m9#$G2MPfre(p-$jkNPIx4$eNRFGd!+;lEy{HbMS|8cnsi*1MGkj#J3Xz=0>i6LF z5gHQlnw1ADujCMh9n=S)H)F=`Ln<$-L<+$RvEdNb?B{=;F>WBnm)+FL>6=6p6Rnq| zxkxFLFes{Cy@Z24rc#F#w1nZb8s=Dj=F`BAJS#fiJWp@ldwW> zk*yxF)ShU9-_b_6LL31rrg&Np=0X_NSr7E;ki8WH5o?#uE%rtea!>hdX9!~FB;p-? z<&c_pAh+yCIH-q#N*f)Kl3ay|Oteli+Mu=_6U-i6%r5DHvvVkNO{V1g`udg-G&ul* zMrnn0{joNcX05)^U&sw1<55U(oL?@Ntmgn{hMRu4oZGL>J@=k>Se$ok!=xEmF9u1~ za;_a%X z=_0K9vt1GRCydsZHi4BSe~-kWIf8O_-|}M|Mua-0hCrJO?-W zf!A$K)3z+%V=FGM$hM5g_Q)%5#%PYtAP+`^f8QtieI3Y8On;vf>d&alUoyM2Cll-a z9S~ItE-7FK5EU{7CT%V&DD<8`eG5U@QzJE6rfCff?QTUXt#)ZVDzmG@+z6DEAz(u1 z<_NOX2VZn$FcFfTHT@*6st#P})k%vKZk5y8lbTj0Jh2<_l0rN7H4Gsfb>lHztOR>X z50yt_3~u=`GI}MctRxjSjLnaM`$poB7ooQ~{f!=#+sGfW1gNw$JnEXbn)Y_wiu3Pi z_!?G6GFEE5L`N$QkYDl+phzVXaIPqAF{DLNTc=V}WAi_1vrC{i+s7S3HcLEPBXa15 za8>MSD%s$5>2W26kbn&UIfG#?h72DgBN%A^5Jc*s>m=8^H~h`tNPyUIRc_kNd!!Sq zLg2f|lQ({l2c{GJ!k}Mlu;3tU348QOK0m5o!2g)Yh|jQILH`WoE~x)W$`Jos%47_j z9WC7d?-G|54M=ybkrrO3yOi4M@O6jk;n)*lNJ0luU!zvf02K0ND?MNEajM zslMxzjyJ> zC!5JHcl8{Y#I60iD}mhc6O`1=Z3NUaPDJ+@oz@=Tr+XTp=H4Tu-92fkdvsVYTX(jA ze*sITGM`2LL6-A#U3_#wn6o=s)OJB9TUp}Pex^gadvxeS%e#Lll>3M%_fwU`TPm0R zOz|Cq{=@axXLN+mne(vtJ+K`?n_RnG+q|=$!vd0L7}g69N(UV-Y}{$lk#pRpEJ<^O zd>jHDeaxOg6a9T#r$2_FliYc+;yGR@T7)LD-JWZhy>^UCxPewu-4-Z5QZelQyigh) z*@ZzO9)Qy2`$P2Wa`cz#IF8kdFuk2UR_XJT9CtXQi4A_msJu{`!Ie@#&ahfDMdC=yn{{ zib*AQ)ajr(`v$HCuK68fplKbL!8n?JJxM2t7xCV;C5#Jpf;%~s;_@SAei?m_>?;B% zO=G<#o+hb%xd^_elPgoJx6jgtfoE3ejSk;5lw~%{=?GJ1WO1p0p|nqeGK=-!`o(`B z{*1&hK)jm_D-6^+!MwUlbaBDF#S-*Fn@xmOgD1-1%h-)PF*@idmtHORabW7ydVE4L zYE~9(Fup}YNo<01rW6j@{8HzDxxqV{=>GE8fIg~YQ-C*p*wZ!=8gukhQg64Ae zLc&Nw9cn7f{i+XUp+q`Rz16-$==@ra)Yb5hpwc3xX_$uu-&JD4va^i+tHYm=&JPJW6aRYhch^ zqi!Ny3tog3o8hMfY~zF(#$_T13zCtefuAc3@ENQqoWN)@?4uIcS`?`O1b;SHojg#5 zG&!q`9i>KhhNo;q5RzzBKNL2OC7r&Nv~tG034<3^oO%2p^WZF&T`UR{us3$S=CzQ=vm=h^SrTfcRU~D4X%q8;>8`ch>Z!kh$Zv9@A&7-TzpBkF2R52~8b&(aF z1cFyP7my^)DiS27rYbQ)B@0bBDM6nbdNY0Xc+|Edk_`nibTg(ss#jodc?2bmT~*p8 z;%JyzAc=QO0doKl-6ySfe#AMA9DPZfnIF9V3ALhyNOT%oTFLH~dLEGp#=6wJ9XRcB zmcz`xrwE_6eOG*JScI?iuIrppva>wx)@4Drb5P{-TpN8SM$a(xzT+IP6NteJ1AHZ9 zkAzZ~L<{QlvgkW-)XW<#Q*bAs{-QY?NDR|rXSIg`EB2~zlOz_MrCYs5%3CCRABilI zGmSkWDybu#;!k> zi@+MBCrXv(Rg_3~%InQrwIkk-+9~3saDzlOJcYI)a!rdyR)QjlcLPJ_&x?Ho+G)3n zyVCv%!T!(;8nKW;wq>@L_5pvdX!Qxu*%O8x`K^p_k!~?EuDp9DJFWoT3g%t(DAGN- ziBFMKbA-!vx`Kd7DmLB>AhaV>;_{El+P~_-Y3mB|nMOot(7}QmQ?^<~ey23Hvs~@PPMTbL zgpL(+B*WW*hLz{gPys;fgnY6LER8XUChh``O}u>?3M;JyDwZ=iX5-e3ovEm3F9&6H~t3c)Yis+!)?v$1d52m>Fwfy?#-JG|}4tZIDQS=>+zw|Y!t{L}P?tQBfw79*zNvRcaL z*htL&l}?&O{i`#Zh|xf3E?|byt`g)0(%m4djY|sp!h=$Gt8yZwO%zM``8&-@m+MokUZS|#4r^VClp$T+z0t{^w);G#22OBDjv^7T@1~7XV zCHr0!8!Xl#eAHyBsVU&UveW0Wwyghjg0o)EE5B@Pzqt6(i5@Nz5%%9cC5HK0Tv%xo z^Xo%=>1baKIvcLQQ2YJkpj9#{Vs9L(MJZl+x&8aWS(P0>{vS+mlDIdCW{h6-7OyOq z^7bM2F8P~y__QrmS-1Q|ZZX+oycH%OutPqU0BZtmu`KD)3`Td^q8v>|NQd5#`pGHk zvJ4&DnyqQ(v?b}b&|sOfWApdA@XsDkaII#WkLVO!*Sgd39G5k@U*5viP;2;X|D>7V z9oRW6|DC9H8?KQ6C!!1R=2L^hC{jy3aZSxks`?i&%xK+eq3X&8Ub%|vf^c7%D*)e0 z)q@t&M@d~Nqv)0jdM%Wf^MTkS-qAR{Xttw_Sc`R zJB%6i>LGSn_Ltw1%%dAQ?^?!zuM8$wt=uJ3>*!X8IbedW%Eju3vF-F?TYjlgXlNDw zMqYt8M?hVQHaQL8poHHYGiCmSIi)tAvJ+`pPXzkhQd43tD4;fUO$YR@6U>pJ-l(u| z!ZFIFH$a0oUEh_DV@s09huPA^gs$VVC0T3va~}#gS724#L((CF^m~|W3TsL0hrH*c zVX}uq-49@CPZI8f@VXiN))9OA#I=12*BOYhdgB?{QgkQqXDLAkQdW|t`WLQx`dM*w zTz60z(4q-nT+Lr-$;n%T8BL8ojDnU1NiT``XEjfN71TZaRS9rM%(gR+RDtjP0aEP$(}&k}Yq>+^NkaVT(1ha}3Ya(IqGScMtcGf33##6{vU)u&B%o zPwJ@$#Y_(TIp)Yu^Pys&SmJhvLH(jRGao5eOOImU>yBvqd3c2+{k)#Wdu>tZ?}RB7=gC;c!pt{>uCI?8+5wK|Otz@AE@y%ga;L zjLI-<4l0Qh`HxA77&4|r8d+4POR5~QTMGBU+^h_W)f8s0Mq)ab-b-!oHQMh1ZA-gg zAHBjW!yJRa{r1yVrWzCi^^ukwg4BQPv{r6Hwe?Iwq0>#+KTwTYP3_khw}&(*r=IoK z5Ouqj%TE)>m6ur*2ACG;`oAi6+owixGz(6bEDd`@{@p^`#s{L!duCc>R%1N$tPwVv zZdJsbcV#lR*P$TX+IB5fPXpPqqT1mUS|u^|iZt{>8^JQdiz9EP1b>2}M4+5`e|zlO{d z-m03fr|y zMJ5XxcAZ2%%RdwB9M62R!GYO5J4{B5r91kr&-0?W-RZP|y=GjOGMdKiA$NPO%ErA( z0&j^mE&WT>1mXbrtSfFbBC^A2a_E>zL0bamfJuX-CN7O$#<1ZJm42LJ$icL& z$=M`PJF074Rp~s`LPDDL3_}wl@#!tSmZY@pf8<6)zXKq>2E0V8zX>Vb2C!rsagj)! z>x`^)>F<%=z!*j5QNQiVYni`rd~ptbZJvG$RNAv|flq$}TH57bfu4Q~Sn3r}A!pdh z97VR%j7#5eQ>^v~_^7F2OtKx%FyQ&hT#DX@QW|E^CFXyjpzjHijt5ps=6^vz&jTmT z7xru-HiM=ddzY6+)6Vi_`2A%q@C8P8MBx~Isd1Xs*K^bO z)8b3fqGiamFuO$K6hsn_A~H#PlAKain;F&xbhAa0x42gJb9Rk7Mux~N^M@LNB#3E- zru3a`Q`d$F|gtZv6QMy*K+=h69t_ zRIyi4jzkg|VR>o7d`{t%|1#5$h7XtMsR?8}H879#z6s`w8obl=z6s}x8knz&z~_c< zPHt@cD;o~QX5S3=O#>d}s$UNKjRRP5?c3`80xKgAj^GM}kMQ0J?d<}nlm1`BXBL1j zi&p!4_Fuy_{0*>Q*5G_+00XY~O|W0yxQc9FR__t9({pbA*Fg79gl`=XU)nIvY5sXp z19Kw#XO7}~Z*xz`xEXm?{)d|PPPlI!co4O~d~1PuSp+UizxaHZs@{6Zc|82C*l!)U zU)zAbw;-MP0eM^lbGZ9wwBmbTC+`vuho6RD*Wi(#{d3>@W%v-c;Cz1r@&LtehNs4s zdxs>)RL|s-zM&WaRm^mDEx47pqp21uX!Jm%7c0lioetWoF^aljdp!bU6n2Jfet|2$Fj0LXQ^{==urC>tT+1chQjjM+n}ywSXH@v}D&=)5 zyoEX#U9gXQ3cLfAT^HaNa)740DQj}b?01wi?@+~*R+av6CZxWsj73z`bPVb%;l*47Oiw+%3riI;9Ijt#L=Fr}$zS##BL(_+G zKwe=}Q8L9n%sgats#)^4QhwlAq)D`M?>NP|fseNdj(3h%~)zb_#Wa;-@Q2VZ1TCDL;!mrTstsaH^W}f zXx+JPfN!=HU%d(ZpFBaU%mQ~QPq%HSFNSD-8r;xi<%CzIygXN>y7CDfnO+vEJvvlW z14KTq_IxuHODgXj3VR~&KR|YLGbwrKdk;;++!hJGx|*6Nsy`_MN^#)a74S)=yn>*Y zMaK&GMNlth%t}1s&?{pVkS~-kkeX2qFPC)Z(&LzyNhpebkkjAK0JD61bik)v%FC}y z-n=}}Z@8`Vb+H9RJo7375(;)-*`7B zvGj`;e4n^vI0GQ;ff5|b7ra55fw0PA{uOHF&HG7y{ayO~(EAS?UHc6%+WB|tFoybn zVx#}d=2KAo-`IRMDjN1mDi}YuO{}mM6fzVf4S=9owZ;4;^JtRLi<;y;pvD)`r4kTn zq#Y#CCDY|aqVi_jqnH~e4g$EQ!zC!f1E63dnD+c;*$(q$3ivp>K1h8|cAKRsVcEai zPCqAHzmF%EeR(T`D&JZQM5w1|%v_D zPg~mQ*(e!EHmD2oyPJmaU)E}0$&My#Np@k8qH8Sai3$6ZB0^S+3w;XSIQ{g3$yiAm z7*Qj}f7JPalfBrK*l;9k3vD~x0;f+#ondB|SxHzxVA=7ZG( z2!mbHaIFN!n?kxa!}-u^ZQ_Il4g88p@MJ}V8jd4%0_Oe0$qiC%&myXVa`OkLK;n>d z%_$R}--aIK%SGF-TaN&z6XZE>6=g>fm**T=h>j#B+z+Mm$uKr6K~O@Mw8vea^>OiQ z3UZzuRV}ui)b?KG2_$50#1*W(1RX~36kmwF@K$a?zeuvq;t!3_+iqF_b&QANNq*wIL5}fLk>hpLU zbvjg|gyX>?;r@h$DN*>sdH#$7htgd91nDd3Jfl5f|dtv>n!2c;4{Qymqys@D%crYo}eh$7tu0>IL%vEthgbK zliDR&7{QO@q|_;81fF-cU#OAjV7qiwVd&+tw8Yfo~Z z)kc81gwJM>JTm8Vh#z=@ds41GcvlZVRKI`lj&#B~zuhxdcNfUSQ*bz`dbB&t3P-{i z)~|Vk|BCMQSEDO)#JJqTRQE+JY z@#Y2@N@|^7tRXF>S8y&!s+}Z9Yei8kR5PP^ErxcH-Pz7c#!d$S?CLwdGH`rOFoDa5 z1mPqDoA(>Q4I{FCXGza0SPw7+bAZUn^G3DZV}%_+><*A6pS5?1e@?ym=TfEX^Ejw6 zS+{5-B>Q`yD9sv8mI{tRJkqIV3k(Q2(7PxZ96*%npggY-v)jn1GI5(A6dx{Pj#%KB zfz4sy(hIC4L7b?D%BzFyRwhwbks(K>8s;e2T0}oqrZ$khY(mk8A>e>2YSMHsYCq@S z*E${8+~_*r0txkOSd^Y-TP~I?ZC@=>PxrzEM4B6L*x()2-7Sf#o`##(St2g71pW!a z+uCOYo9pM$ZOSjczBmlTNhhanGP>?Kp}98Il>#1>8sx4y#cicB#Z_%5 zj_KXo@Q-*c=NazOV zw86evg8?n}>4kkO+>;ACIN+REd>XaIA6r5lD+FTRi+n3qog9eGV0W`_FQmcz1gA4$ zuEL@-k*=;otFg7jfW>rk3lZ{k>^p0ot}-JLt2K`W)Ei<2)mB$z=YjD}ZtMpBP~Sh$ zhdESUn?*X%MK?S(#~PR#Q{GH5pb(a3g;hlXh1eQX!41M@&^Emc&VwG0iOxTq15 zqn4`thvJ286uS$X9ihPRq!LDjJ!M5qV&_wyMd50Q=3?DR1=G1RP?T=MYe;DDon>6R zvnl3A%PLo@WStqhO2}I<9{*Qi?*Jsp)~64*d)l^b+tao=ZQJ&=ZQHhOyQgj2w*Gy; zeRtoxH}>28Rb@tIMV=?BGBQr(Ir+dTFL~$~vdc`fprW-QoH-&E8P=CZ$`_Gk7D17J z{A8O58We?C#elOMk&3BU$yLTohaG3Cl>e1TmpHN!;M1fx?+v^I>huw4@e0sP8z=JC zS`J;=#b2d4{8=mK0@zCdC!Ks;aSr&^n!crEm*iTkz1I-QI487qa2fcO-MAWFIWeXv zz!7#f4hRB+aZia=)wB!lJVq2YHR=RCD%jX-)^6yjmvxpNdk)QRBIbbJvJkE;KrW)! z$AATX1$WkcOUaJH>Lw<;fX6!(<^nSdH>$nt$m+fX}O13L7|-e(YDh zN>cH8BX5hKP&w5{&Ire6;C2`d{6nCX{jq~*pI)E^IJOQjTy_YGWq9C4LA0m$@oHyj z2@=`LkA*|sp(Yws1XhwT13Mxra>8gXb!#!?-jEK@&=l?ir3ZzVxX5C-B_wP*H|sDX zsgWvtha{ROd0K@1;wA&A$=m`nws0w+C>mD$xQ5YdU~6ykEl+VLQt$7Y7=Xj3wh{PT z(a6$xu7h@p>ZbkNWA>!CNJV7Zu9zw8Ba&mujWn*Y1~vGUulVF9K(&}@=O-RKcI(SL&|~C@G1LxmwX+d zU>@_`P^=x~Tb3&X`ZeQ(UlyJ3G~U8pJ#aLx^;n21$^+17@lYx9oE4XwFqBJu+yXF) zltQZWDfb$3ic0UBW@h9k#_#>~!6}FlW)Rgwx zmn4c(=#P$>XE*Qp(8tf)cZJZxIYjZ=goccS1V;&DYYETY>7scFxNunr4#unF;>Db2J1d4ZTYj1R77T3)}HpshjZ{!X}lu_84M@>*xO{b zQi5PoQYp^Vn#oKqq7R2mgG;V5sVsf6FLXnA1k%>)_iSPS8XGrsyjZP4it$}1``3P`2 z%uyu?(yquAB#!hkY~9qo6mu!xW*UjM-Yz#)aZ)nd|M^&Gqq8s z*+Y7BZITx|iOdH1=Y&1+WNYC15{IX>fpQvceG}o7V9J{VW(y3s_%x#>eViUd_|_`; zuMN<=xZsi>LQHTo6NG8MgqZMRvj9JU1&>2hn89Cv_mDjs(Q=*-05;xu$H^KgAxV z3q}7Ke~?#$)|pAavs3dUWj4T=p;QY4REyfv1D*0kZ|ape4^VEw-F1bU;mU=1%fZ3( zhxLp-F8?D9SB&yZs~M!z=l+hsDu!B-{C;gQ8d$)LToo(hZ&5fZRNVhC>)FDu4un-0 zz9Ui!ZXH)e=+3iFxB;79fMc6}&%I9436Wk%B(&vEGmBQE{EE;t3R^IiayEp*|DT_8MDT{+OZN}^V<5jA+9 z?G@6Lx$mV`#uH(*ny*&H<15%`QlsDj5o}hyO|k0YT4t>msU6b)ppRXaY*48k>GWz_ zv4lmRlkHo4VqllRiz|8-U(25zM9>L3e1^l$f7KiMs?09ljY4*|W*6qoC$oUpYxWwy zT*4PD{i>Idi`Sd_DxYD5KgD`#7iC8}#Z0;@l#g(P#dOVWz?)@5-4{3nscBd-G&ls- z(bIxS$80@7GGuJY>K%@T0k^AQz(&io*>^Am5#cVSd5RGL#WUzyTMWX*BYCYLi`~xM z*)rt7;_PAFi#v_lF>%NK=$v)q>EvIqe450_C!1aYyD1tYfJS>8jpYFZ)5YW9v2JP-l;2 zvAcE)vuA6ClGhOH*`xhOc7yD&)}z|Gm25xHBViue&YUw8uR-;o$;HESN9F+9IoGwY z2N`YyUVrlW$8+5W=#0&^GTkmgHJZ+y4Do76wTH<3sd}{dH^f?2smKC z6zx4uAbEowq*h*RlvVi%8e+g8Q&l8W3e8HikF%HKZ1#prn2aY=4jJ-J!&bl+zV-(~ zfq~_5h=Y7srZekvjDU34ND{Yg;XSiuZ&d5S(}izj1pfj~eAX!$-uv^@ks9_V(WtQ` z^&){(20he5stVfz~4y#>b>&hUHc9jcNl|pEs~k zHBx4xn_XIBV{*j4r!+jq@GspEycVma%u6s8_L}H45FB zW<>fz1$5Fx{zfHOg96BupIV-bH*B(%&V+JYN(`M_{)yJlX$!&YJwHIU#Ot%6;zmFde zC96R-B!-S+P4vy)0{Q?FW!8Wp=)GG7RqV-6M4F>1|~HIY@1}+92hnZD@Zq9@o%#uCqqL+jcSc+7Y0k^U6BBW6Tq zFc7Xp8<9L~5e+k|7RYyt$Lfd&w<<;C+u`@vj8T}C6h!fs7i4;*tw~<5!Ikn%wM!Dn zqWUX{ZdArNr9FLO73uFAMx^j1=uReK#N%Z0Z8T{Yjd95zb^rjb({`RLeqlXxJfUM}zbrn_XpJk4tvua!sXc8kp)GC(vYO z?jYP-Q*fHJ{K3T(4#UF8`9(`!D`b`q-*L=M!)w$kQ&+4j@|Ln4EzR`WHlhV-5~@V{ zJ0O9jYuq8`j%YY!&ynXfAS&fdZ|C&Dyeyo>%z*nzihMcKMM==QrHk@esK-%AnzEnZ z8u#f%yu-1rhOr`E?CDF95!O+M$OiX5W+b6wSgHMU zQeNMlN9;;vjy`@|_p#h_lrQDA)9RG!rHd)@1sGUM*EpW4{jlfrwm4fzKUSPJ^+_ft zGDRO+iC3 zFKc^%8M~$H+QdV9`)QoVz02$rV|owG7oU&Rt}n2S-yT`sV_5&8DaG{m)tNOd(NGYn z(j~p$P+6T{Is;m8@7+&BK0d#UgrFJ^u=Zfid__~g>O!(tJ_*GEhf5V?)~YHHmpfdH zj;;UENY;FhllCzTCCnt9wt^^|&jh5>tO1s8_P#J#MjSjyKukj>2Su`R*A6cL36`33G%OR`anM`_y&E1l+cs;)p_Nzvgx zRiuoO^>L5|R)G}}j-239P@rICF9(nkF*kE@#&Tw+$X%7J6=9j7QNpmM{q52zyNS^g zfI~2O?XYF_Acq$)5WcxvE8I#=>Z(5FPCa0IP~sZF9TEvO;NSoWo-GvK)lnTn?wCX> zd`Z5tO<>(z;aQRX*+NPA0puXV5r)f8K~tuZZ290c##6x-I zz?B?#BJ$agP;^%>Z%^S}YK!7m#Mb9+g3xvI-mZ|`XlGz%)dK8E4YqdrcPGa|tF?cAr>G24JS6N86CaNxQAWiKp{i8p02R5D zQ{I2!fb>19>uH^>88lzY{IY(*yHb76Aw+(uy8lPabbkWgLBLMqIBQU^GG>zFpeTp! zoJlJ)RIz3+V7R7_HmE%^pMGW_Y2r9Nm%Qp?=c(6LAgun^^%rA3aCW|a%POalh_s%9 zZER8G2P49To+xUQ+m6|<6hpKvC! zxb|Z=I)M;HG7>vF#uhlToIP%{&agMTL|43+b52Y<{|f88&?GOWiwBfv81-vVFToE$ zsvFf;?RT=(KtE+dA5=R$m5{zZdotdqOQ z&G$K;4}h}s#|KX!BR7mJ35{}Mz!UO&rAeDIv+#IZc?aNVnOyfRkogkim_DO*13?=6 z*0B_{n50B`q(tC(%0|c9Tnbn5=Blo)h?j{B9T7n#-0qKLAI;JoMqG?ACFxr8lZ(@S z8S1<;8h$+GT)gy}^ddW-{rkhrDPu096aBSqV$aS=Wa}ApKbIg2=e&ogtxpXHl0~4` zM-VTyaaTX<3-LDJ52bM6eGfEYhagv!%sEjox+S`lfj)OWe*j+!kkPliEU*Af+biOG zYc|<>)!#bQqy|e@uq}ciKZ9&@00h!45&q$6RCVOPuUV7;!1{iB4f$$JH+4r-WclxX#|4q7>J*FxPZU z9KC%cFd|v$)g{4TEN}6T?)WComJqfZ9~SV6sfKA3hh9lvnWkBDsMaW^*O$TCXu8jr z5r1{hwDLIDhyE<&q0^)2<^GBns8lZq;s^_57eV8YFmS+z+o7oFpKBP&&L!m#2Y$ka zS--n?O!L<10qqdu)$S8@1#PyC>I$0LbJ+Ff*O~fVZ1)aMyUVJLM5&GD)I$93DoEXL zR10YnMyrXC&Oq6A6Ls9L%n;x*Xx2eCr5{muR@_lm^Y;HeM{J42oK*QXIbDPK-|kfY z>p7yMk%J?h()a4`Vv9l#a8IQ{)TfNrb`O)Q$9Aj{1vL0|WJEtiJu?UpW=!=G1pZ`0 zV5m{+WdRhSfv{;XLT9`%?)E$|!A(moB<)JQrh`m+WtK zMT1B3(Wj>^96^DfcV!O*{gRS!1D_&_q;f`S7@0DKl(KsPWtUQ+O_{w?86&>(jRgvZ z3`=C&b|qfbs@D=k5l^Xv@*Gjy@;i&Wk)Co{oW8JvoE6?l;x2L_wQ{LMX|#m=qBJTB zSTThyH;7S6aSXwqk(^NekoYvClg`B+6WaY~VQ6(jQzLji_=5meuy8jF19+1d z-I)DK5={#Ve*c&)*r0%hid@9~_-~q`dvvfbBQ;fG(VWu-gLySTv(+MDJe51Bn0k9oFEs*`|9? zZ#{I@-og<^N6+>awDx{wGJ40vHj1`aVy^|Xw#hY^P3Pz~4VcZ{DHrsn(KW9BliL|E zmdQz?gJOFFQe;tXg;Rrz^7e)j8BswogKEo4v>)# z|K4oqPyK`uWaL{?QSW$#R0&2F@_jAXS6G(Y;86Kg`Js|j`9OK7e3b@atB6$$C;C&v z`N5L0lJt0<2-NGkaDnz&0g=uK=e>)|h)3N9vg$|u2DW@&?Tda>9g(-2Q~8KT6Gwn* z+)6n9mBq%8%Q4CDC35t86-E9R5Awj;a^C| zoUt;yaQC{5`HJY3CXST(bB3H+zKAK~$I#R#Qh`%>FcDc3SoIh@gZCq$tMiAKQ#;YE z?{<{=#T3k9M+~bYILp(f@ujEwRtS2`1%HfxFmh(kfJOviXpI~bUW$cFX&7Mw>SH2A z1t8`7h<)Z^{Dd~hmnOiEYO^I~W?12*LrzD{Sn@*_w4jgJ)q1Z#Lj_9)8Q1WOeK}A> zs9=)Py(J3@Gd_3Tig`I!{~4Gk%;NDpR>Sspeu>#-z@M7n(HccfbTHgaJhQ z3HhF>QA?~pE*nXPg(Y~y9+S@%%Ne2VK))Urp-1ig`vQSt@ia`*zxD@WLyoxxM-Jn+ zPJ<&#@seq(~^wosl?Q$(GS2#IOn3>!NC!WXLP%W$erk?p154PEg$#YMO@@7t^*MlITT*QEO$`Bu;2LEH zck$n{7ky30A&IqPeX0qc)b+xY#32gUm7kN5hvb~7 zQ8l%(%phsf6Qrcfagn4&(ss=pe!jZEZUEMG&56}o%*Krf%=E8Go-~3W5kS+5Cj(Ht zV8Iy&Awdm^tR*?{RX9>;1yQV1Ac@HnsRaJcJv@{%AeNU((`_2yvAYfkSWk27tZrNvb1FayC$b#cJWGzKG#@ z0uErD4en#)pD2x!Uyd~J(WqX$YNH5#dbER$B_AyfiM!o|FgXo#`%p9%Na8!`!4yfO z`q;CcAWG4PBUAk(IYLMau;F6`b6+J9;c@qJ!~w>Tt0SCpm8TM*t@?rL8Lt_w*t-Q6EoTwnRsV zSgAZ@)z#noUWOu5{RcTn369uAu#?<~z(;dXw(5gSFRH7^(z^nM`N?>G4kaK5caDrx zXG%#;0ngvWwHo*&8+tUg6L)ulOQ0LULXlFD#SMczS6TWMp3Lt9d=WKPC-G~kmt2sQ5rgD;gsG51avW5L~7oM@4I#5SO( z%0*jZj3W(tTqAY=*r6C%YO|i@y4IX}$Gu0|HtM zt4FhR6N4JzH6FV^UOVgpLMj3JGYUrL_S)PH?4u5>7-*1bR5zeAhETL-1QQADI$L2C zj=&qHg~^I`u4@6E?X=NjK#CgclPd_DJz|xSg@^q z;7j19b*|ZX-ETpeWRgs{+-O8;Cee61k~cWfmexCDpbKMCf=sFf;fzFth@RgU*qy)K zDt?rYhbaQ9t7PGhpD}6SBg0)4k?GJ+%Q!`4ns3N>A;k3EYgW@_C-98gbt4?D37P)N z>mZ#+w}xqoI4Zg+(!*6^{qZ#fgE>H_?kaie^kb%UT;oVsW0$eBSK>>&`I^HuKXFs2 zS>G5U(YC>pvD`p0WThTTwKwMe0jib!BR7FB+;h!dlYHKE;~@Uq@xs7l=kkK3&N!pAEvx#t841h|KZ&Rjt74$3Yq z-X6|c9k$rCWdk-g41qndLAoET`P2GW^v>V{!FUe+5DO<}PrrnFRC54PuI>byWh!18 z8r0$C$%W@r4XJ*wSO*OzTxiPqNfEALGBY6XIQFpZSGcaT(hm$_C8t2^osi97UYW<8 ztj!X#*u=~2BLJ%6C6Tm1zr@ReW7;QDT>i!^L^hF7W~x&%X6PwTg-2BxGQLq zD0g<&%sg%Zyu=d&l~;DY3GQBSiA;rPDys&RV8V>7SYXB+#Z!hlYH!-j_}UaP`s z+YXbLJr3Aa2TD>1$U$Qejkw&XXMd(=JFVH~fNCTBtml+~>Rl93IL^pP~TR3$&{C zOu`pN5nm-oAT+d!oS` zqXalK(HR1(?NGkyiR<$R;@jUArR8xPKc8EaBtyDCCGni=w0Wb&gER(aa?ct}f#?YJ z10(lV*H9yKWdNps)>l&XdQJseH-xvBAJyH+%&R{zP=q%(me`yzbMfyr^2G`m@-iOTDjw zIIC^BXGIR0`bS4*m_fCLq85l~i_bz=P(F(!)f;qxeJuEQi_)nimve+-jAs|bGPFJa z03|K$jo}_d8VzOz6|M za87Sl_`cO6Sct$Eve?ztJWTFGCs(2fNq_js7g#^YU0Bcp(aWVcPlhD-(QzAfQ^M$r z5f2M0-kbTn(Wq)m1gZy>q;?JF^xv&D#@!_g+CWF$Dxms5cQ7v=jHkF1G`Z%kGUU)U z&W`bmr!E6H+Z9(r z!|H>M)y_c#^M9=GOuNj*Ipr_S`TjQFQ?-;TnUKbcjeq^ab$eO-6OyyDR)6Ve3*jbZ z{-qJY%81sSVz5F(gYqUm)K=0>3ptr~AaAbt7KS>Tf%`6!HhpYwmkyGvJ!nT~c-4$ctbHqvd2{X7(+G2M-WoSC61^kT*1qF|?KI+9So1Y~wW(;Vg z&GSc6Tr0+YwJayVRQx>yW=KW$?*~KNZz@6r7+5DjJ9!s-(zaq}kVz{;E+_#@Xd_K7 zS$uatr3l&`mXkT-J`Q?tG3pjKXWEWrsEX7MlczY6EH=);A2K13^A9#c%wxyOlrj`T z;A@bOB=wgkD+Ug`SVy~9%Yv4aEdd8CUs zFg*|g$jcbYOohU6vke+Hv8Y!t|KLBbVEMu5r&vY#a)@TETuG4r$p?@dF%VB}}uGtCC7ih{-T z{E6`(oz4CEuR&V)eXzc*pao^E=ub8Mw<-P3kk@G+6oCUb`+QVUQKfL&foi4Gnkb+& zc1k!mD36_SoXq{ji_85k5ge_H(-{l|w+kA%f2knzyA(CHrQh;M4t{>2Il(D5v2n8s zv2o63?LYZ3gqw>!@aLFpj$FI8fIl|4IOA{#vlNv&>&eOickV;WbOjNBZwPka#Bdk1 z(@uY|Ihp6W$aL@os@V80k(EDrK)LhrUuClld4Y6x=io(}@>)^DU^a&k9X}xMKhCra zo#P5Z7&v$77JQqrPDxqRgNkS(U7LEB1Z9uB02DHTk z8Jz@~Ddemt?BpcJ1NqzkxGne@7z~Zgx-2*rj1#U6Q+^*4rYE>y;2dY*5=#KHNelYn z5;N8YRP3I?=}3m5a&`?Xf*T*k^ZL~!1lyw$MSfp5} z3Bd&4=f}b+y6^TyZG6N9zIHsFc7FJo_j4;=o_5G0X@W$Y+#{-lza6rqd9P&Kk zVuje;;+gpO3!$Z(v)mSB@sO`tbW&1>kZln1c)sftprU5$uhdl~(Ifn+m_J;BH~T6D zoYj-g8<1xmrFV_>MME)8r7Asux!->+%W!aM+G2rxd)UB2KfyjZuZSC$7Z(_b~5?>Q#|gSvOq9U$(f& zi6UIeTSO%$Sw=f1Ch*a?#kGDm6ujRgS;Ptj)S5=|ZPsPrj-l;*HXNvl-#AL=#@&*o zk)@u=GVj4f8`RRHNT!z|Z(e(kAK8+98@bm;AaN><1*&CfRzcM!K&2`*H^+n6$DK&w zX2qZ2EU%}MaEK^y^9mGdYAX#OQz%_JW>)-M zNeq^}juKd3nRAG!o{+W8-ETA`sLX)JiNa%P|j1Py9H6J~}Rs^$=Mt%x&A+ z42$BvyiCJRH`zDtmYc~$aUi%j#c(qZc6f+zBuqMZ*i0SKO5ZDEb>X~iDK|M-)=cMO z2!L!$%OW*XT{@^~PAXEP$>pu_h#XhWnEoB$9kyjy^p<&Eq?Ws}=YjNOn~ zEM~ogTKHX{`UTY(iA6$NhUAAfz2Brj>Kr2p1m^quMryu;8T?ZLXEO%s_b=3Uqm^rn zX0q!795#6X8~7-j3I0v;dDl8i@*N&0HyK&2Dr>|#%pb{Z`b9o%es3)t;AZtf#Bx;= z{H+R|5^Gm8t>ul&Y_2ex->0M1V%}oT9&N$MCCa}VS0vXh6Ls8)FzL*JyG8r1$725v z+y2k3oKHolfHUizsjZZJcLU@1Cfxv_og(ajbjN^s0KzGiCnEgq!5H+K^`Mjo+aE>1gFmD*&b3g58iA8`ytbpz1gBDk=c;=!F` zz}H5rvaBH+f2aST*2Ll>FWl#X1V%8Ee7&8V=wk=wf60hT?Kw{xB7E8#&hGu z%*~ApX03R_)Rs=4G`-~Bay+o ziag(*EJ3^?zY?2Fm;aL8?8tf?!az?wke>3(>q6+Uc2it_jDm04f{Yl5`nlcg66+Fk zQ>EL{?B9WhKB)DwjldW%jlX&4F~`G)Npq>pH&62#Fc>}W<^H}7JoTl9l`1S3e{dlk5>MJ`3#@=IcdZg}+|C^L|5e@b**oV$Opi8M+0>VqnmHOy+eE%0| z|CcO*_8hEjtc`aG0*)ycp{Uv2~`x8Txn-%>-Z*?9&Xgm)txxYtM^jK-OL>i}HB&r&A{v`Pus_pG|crAJsy3DMWn==Z5E{><@6g8B2KoePD<-5Ah zZ0rjC%!PGjLX;(ax!Z8qA#I4_yJRBJGZ-bbH!98kl1IX>f(LLelwz`&ZqTBSExGs$ z{8~VVh}9UN(xeyqXF*l1vsxQ+DG(Anr8!opc^knlvHj&@n8g&zw`b9l7I&Phy;MnR zY>snwADGr`SLk-5XiQ`Ax%^KNjaj=!0$le$B6c#ed}~QIYd33G;UWKMo0(X!|Dvt&+iGyO(wn?fx0rT!a$^8L=n))$@#a<(f6L*SV*F3SQ6{eY6U^ zZtFO-v)R@!>a#aJc+;LMw%wAOQjI4!TLUbyL0^M22ARQ?i!I3p-Dkq3WC#U)2vijX z^c3?l%kSTx6X%ngtXHEKqP-YH*^eyv=TCr@_KZT1xw(yfCFP^@OBNGE0NZvW!@&dgDj)1`mZ=jrj+({54{s6 z@Cl*^XBvo<{zH<(gMumUe$S{E&jK3;K4Wjh@#4ws^zPX;zIdNqg|P%kg<>&@OvX?p ziehrA1ZB0XTuX(j`85rB>*(94Ti!7%Rd0E35@pnt*{$8-x@85c(wVh*@gBsciuw%6 zQ)&ll4Qh?pu8rG<0}g7Pn)CYerM0bCALXXkiVwL9ht~!B>ODrAnJv zpUU>i2^C+X9_KtOpwfDlwWJjleUHow#5FL>Ez32twZMa;CLOEaF+LlHE^F;EoF05{ z@NaUK*}B=**?||rkIIiM%UuKBl^@^7>-}E-L~qh*{B8P`GSAVoW9LW$I1C_KXn@`{ z%w^1BY~Yb=P-wu?L}!PY8PS11CU6^9pYGuAfaKQu5_m^;#IJDFF>T~Xpp!7-66rE& z%M!!6M7Sh@cG|w!UgfM6d|*|@Lp#B@6kgR?<)wxzcTpBTUn+bm)(ANcajJpzv-4-i)U-ftGMsJUK3RR)kTi z%@3piYt;6{no+<#BqBkZIKKdH)D%Kg`!!BU5_|;xM3nItr&tjtv|(B=Kc+3}G`;JH zlpr1B@HUwPjKBB~ll#)3y%Dn@^NOVyx1gJX8T!Bg7^YDH!5AUCAUa0ocvL~G#l3=s z7-EEe%(`V;f=~?B*p?m6IC@JG@qR1A&>ii%`D=h*#;ys}Y}|q>=$pjFSdX#FK_7;V zI~H|A*GL?5Vk5sq0xOu>Mp|3cGpx=9rWhUxmN3C%up<3Oq=)nj%WH$yExEHSnPiBY z(M{qsBJW15hTvN_mIW@EX$f2~WXW8xrU{?W=?K>%ljA%h(?>ss&cxd7s8;kk(z#97 z`JFMI;JY9%Sb1e|8N0-AS-WI#S-M1VnY^X429!_i_Kx-;_Tcs@_V{ljZs=|+MuoI{ zlutS01G#NZ1+LxNn9p-p%d8%x6Qh14UQoV_E z#!2k~RNHI}p$$_;;Z(bI_G|ZZxMSa=sJ5$b zm2T6ylix|`KnThBW0L_#sD8$M0fM14iMnH%@5xnA1~af)6RAk3lSj-dm( z41=g%lp92bu{Ny3B-M`69mgM2UOd0U2m0v_h_nffoRtpX!*o3V!9y}V-xo7AQ*S)f zRKDPl7b;VR-@uiJc(G4RLX+UR(y{neE%>F_Fp>$3YE?=-3J2(FMG<}|5;zqKq`eYG zkQr4OKqln!YWWpDPzlPmMfPABg%!b0W2Ee=t%y@9RY493G$U(}M-*$@o<>}nCFj23 z3938#2RJQKZg{lvk9~z>$u;~hpsW<#eIf@gE$f8+#*%C;v$J^C4bMB2k_?&#r2!T+ z3%34+U{&=I!Dlo`F>Dy0W~IS2NgOo`h(T6K%GY$`oGp{~wCnmDc-D=U0c$iG+qB~< zE&X*cmkpM|9@OoCPw>lDZm^e)9RN=nn*q+_yskZUc+P6P{+UT%_*Y!6e{O-#>)ru9 zDj2!-ANulD@VNCZz@vY?_3th6UpG9UyUucgWYwwkt}WVKM>XPZHfBLy{W|IeUkt2S zN(=B>G`h}p0`)ZHLE>%FhR#;2_WM}0*ik%_zHWU`dG2$E^EC5W?4CJsUcF?l&Dl&nTNW@Y2KVEi_;`oV!rk> zvuV6^+!@$u&AJG*$-@+FP3E-mB2UW-Zbo2@sUiJBcy;6Pn_=^o@mS|2>9OWr=w8vuwn25y{tcp`k2e;! zNw!$G}+fpelOEUKnD7w}D;bKRR4$E-Ubs>vo#`O)G;?G2`3 zwJR{Hc8h;_06ES{AubWT0a!9B7l3C{vU#FQO$u>;PY*&hbqDTj$X zf?>3}83^vR4lJDmZmga2Zn&Kjt-jXw)_GW&=_dzMSSN{7?I+4pZ^tZC z#m9|Pzvs>}@Mh04b^g#y0pE)p$=(|u@w><0skSW`6*RY^ZyYKdcWZ*G(G@hew9RN} zeVpu7>Awb8{P3Dp7S6VhES_#5oiWj3I)Db+F2Fba@3OEveOdXvfuc*<-8%X<#3U6)&BSgPAhsAPBVJ0vkL8mcS+;k zU`hM6)B^8g-~nReit{I*s?lqpd9hA8?Q7v_kxpsnF`GF8Pmap0%|h%wcw?A%aa8VB zInwd(h17d8Ct98ou#;(Xq7UK7KROEs_iPW)ukG%zABr1dUkcT+CGMR<^S>o>HYvnU zz2fA(eleEXNE$!zh^z3$q`W2;l<xsZQyP7xR93RY3TJrw}?!n&=K$=$mCQ4GHW|+Y?g3jZWeH)ZdP!lV%AWsRrbhD z5P8#qA9>e79Qn{exZwIIvB&dPxW}U-N#^PuBSW1tD-IgQT-!ssfWlq?0m@S#4hmc_ z3R*au;Ac?q>gU5;xh-Vo&fm#guG_|(uUo`ipCiuMs+-H)uG{G-(R(qAop=3}QvQW` zNYQs4Av&UrE5KtrA%o61LEqy&s4T>4Ndz|9jYP>KM8izI>KQ4c?nT0|zBe5L%^olU z@b%6dJZ@W(X}g|BRYi2*%4#E~vmdm(00SBn>Y)jc?Oo}+)QUs@zB3`~*k&hNNU9$z zP#|Sas#x$+psfD0DgiYtrRbPpk^qdm9g(rdRdzHBOH9_xFnX6qBSd{YKd%5>8zH$W zzviMEcr7IJZ6^q!)z}>YWAfXRr4b>xAq81~MKUa&SHUkqLNcJ#ePjLyvtdtN%$8sH zOE}z(Jq8t$B>1iqn}3--hZzZjWHFMmx^SCBIq0ks&IttekEjL?9{9$=-9XQ>Y{>yA z{)OzNNfHi$!AvNWdw?V|=)DXqVKXRfwm&?^6shg_tS8~3Zf!&K; z6hCj)8{3FFaRz_v%^cwX1s$NP)wet_EP^YX0<#+Lry2xKV#Np*K}G_(AsxjULV z{0Fn$NN!xB|0gofoD3q?+Gonax%GM* zvMMT?w+|l4CPW?-_+iEy`#O^gZ}%o2zb8Ys-8{()U*0hEtl%-gs&#OFl;QY~GYrjcI^1#Kj6EydoJw4Nn)j*4B z<|%wAi269jR6;Onn{L1!B>)9O<)*`h!=xv^#PEJN?N%`f^8d-?%_Yew=vU62-IwM) zpOnLPer8$>+bT5H?LeLq;59<2ole>dN65t$(!TMml!dUb?T#?F;7r_#xN zhxzNg2Vc+Ru>b-9WPLAkl7K+S0LcF>*8D#+%m0cs|L^r*Ipu$aod2`w-&4l_3N`X@1^IvKRsM^SKdo$lo2oS)~6_wE??zU{HcH)_qb z>Z@dD1O3Fzd(N8{|-a_Z>;6KKtAQMdW`Nh9);GdtY-R!Mg{~Xl+I|laO7$Xl? zH>>|bD*nwH(!Y^ro~~y0E>;fqF8>1@@!xQBXCpf^4+m$P|3WMO%{bh@(avu6_GZri z1y%hU6#m~(7Y{3Yi@%H+EQ0DUp84aF|Kke$3u|Ta*I{e^&H8@^;`(`-e=)B0H|QU3 z|A+Cvz|jB34$x1StDWP2oso^wU-|RLG53*)WBv>F52{)I%_70S zhxQMz3K=`Nxr$mD**aK|GSQpZ8o9XmDQ!v*3L^5^*es4%+w|D9Q2Ujm#qiUJ-2w|M z3Elc-)n28tCYY++Hi0ti1rzK^0Gf1efmgmw*}BhUb2Z&Rz28NGve#P|SQ^a_B!(u+ zX;|UFX22%aH(?G+qTg@S7)BB)X>}P>s-5HQ9K!dh#hyYLaJ|(g1_l(*@?a~GieAc; z5H+|y;Rsd3lRXEeN|m{jk=ek$5@g6tkH_;uW(E=Y9J~?p-gu${B8W87dO2gd;E?q1 z!X&;P1Yl#LgF{g|sJPqb^M(oYId*sqi&WtFxi>Kcak>sSED2;p@ffs(CelM4mR@y0 z)&m=@)mZ>3 zaiw%Hih4@T2ZK*Qdsv{H5e^VBHNh-NFH?yr>}{x;#jLFr80h3k2Yy9e{(_QDF0d_O zgq0LF{5~wT5KmTz^(?DFsOR_fF=UA&PmW1S4c*DtrL>Q8Q8VAZ(|cs;h|#{%k~4|H z_s@V%Uf9!$1p4x&2KXNV{SUXQ$^Mln|Dp3g-1_NG2YL%DbC+k=rg~XblX&Bonc**> zaE4o7O0mDu5*ogOgwO`O|1!b^D>6I{27!S81)=#?Eh<|S20aHOo#}g(qUD;?2yhn-k!}hc#Pv9m> znsU$3CPJ$KV(%r>Y3V~)tVCI~y7jpgu>|{v>pJ7>90omB#zo?Lh(P?qS*G+bwTLtB z3On6sk~@J~<{Yr#;6(Yp;?7s^B`svA395}{sw$MCUy+utdsrJLV_F5}N^pvU+{2e4 zp?1|_)FTXXnOv!q)Wa+jkvKF0LO%Tmak-s*O6TQ=uHr20%h5y<`f6_M)mq}*)rCH2 z2N|D22LZVtk>Kz3N&UqCk@{GFQ#2PlBU{_Q@*mX%(e!2J3-EvFZ)EfeG6Gv6~*JPCSz{cIVl^nW~Cqx zO_Q5lO!r1fKA{=dkNqc2vwBG+GCzm!@)w%E$p1CA(f@XWvVX+(pGqC7Zl!^uf$1M+ zCz%Zl4w@z@q$GmqSg~E-8id214+h#01wT%Tg=clekoT)ny|65I@hOSm zC&o_$@1NaCA)*m%xYvF^y7+#$yWBtb^?d|dKOC%j`>Mw=sC5?{$e}q@cY4W9^MKSLB4OCZLqQ7zRH3a{bq-3fjHx`ZN*fCw%h z78&r-OqDS8QuPE8vRuOvg~Nw2W_tqM9SSY&0|+zg4T^)EaiR0^A%^aSwBP|(Moc`! z@q@&CmHS$_NoKmK7Ob3{1xD~?th{l>;22PFSlLT^M#>`SWo%O>;)6koC%4IAFonN> zbC+(2#aX*U(!!OA+(pPTa$XR`(nBaEz+r#q6f(#tBg=~s> z+|~0|-yXs00;VE-I&&JMfxzg#2SJTC%w*_uZ5A4TG-NcfYW3qk>n_SC=;58^sw(1O z;iu|-&n?R&A=?#+{oW2TVAmDQ!*jA0cJ-RL!aQ!IktdUN8_i%zg#tT!PG$1#xzB)5W|+i z&eL31s3%wQ1EdT*r!<~*hZrgHP1dtR8Pj#f!S z7Qx5)z!Q{_)D$Y_@Zc~v_3_^>`$MbZZkzg5&o9qms2Od*s=gionb!wp1@;ER@D@d zXJYo9AZ|H%nQ97eJe(>Q%d7E%XJ+ftBVU{=rS&2%TOHbYy(mZnag*i>vGm3;v89<0 zNBGS;nuT%uFLU7H)#!CfG@;?0+A55^pLRuu-(X>`%Ct5I!OLp=B-{zy2^ zSVr>s8B-j`SbXh!sy(0V?>k|b{zm|@)U<47Dc9zBOGVreUoWN)8wuT3uiMI z7hxmkf2g&an$D+MqrQj9MqrJCMu4(@^{fa3=yod)(|A&$S4V0WaD zh$d_SqA*j4G9-eqqcEk7V!eR~BE*2D7;`i_tfit+NCOxZ5`-9RBxYiiQOs8oVt6ZF z9$I{f0Z`6Lq7V~jcio}#h*hy{#H6GHCh|=cV)@CZ=)D}YtL*e_jASP~hyBC|4!7>8 zP41n+=-6j7AB-QTj81x^-4V?Z(YmyIg|W2sr(;IK;dJ=V-&cl9)XfIuM*{tQw9+;+?S-?2((m zc_?HqsJaZhEZXxZ&1u1)8;Vri`#ZI@vfHw=j(u~>?CKf;b`xfA$Fc`8hZ!l2HgvT` zm+74vM!p>tYlExV#w!gI-B-*phEL?^n*ek8jQ)O@89Q>qu z&kP$>X*I!qw)83AnGbsRzrtpv`0z>RiVrT9PDXdWm;Jo#5xXa9V#sI(jrG20&*;r_ z3*oTxp zc}2Be2U(p+an0nSSAC(b%xZ!{bhU{?)n&d%vkEjjpXAy^%QoX75k*T>Qm@Yn76sxI zMa_U)LdAmKvHp3{-DY1h(je>=)5S^=`*Ov;g2)ccfP^$pPfT4nZMnI#qA|R4!fM?Q zH^D!{E@)A%9#SEJ$t_-kvpJ{m!n0EY5m|TJdNQhY1i?G2c3n6EBkC_?iPkf#jufCC z9>++MpYsh5G>WZX%#TxSBptycL!WM7LQ<_kMfBhmyqrFE!QL{$NAWhZ1A#0vG)rGz z#%-=|T$Y!hSiPYol2071;Y^j#@dix)u&yc+e&@9N7GYU7Khkb%tX5`v%pC1)=v!Yc zU5w7IeZ=^OtXco1C*>jYa#r=hjSLes-f@cv(UmrlG=Dsn) zvwmk%o;4YoElOk1nk*7~cl*U_|LQdq9kP)$_R>J6YCw{F+_Q!#0?!^Au`Dul1BRn> z+l){SwH$X2=Rdd!vK>af-MzDl6x`pc(NKg$F~bi8uYzwhRb<;{a+xC{2e+o@Aowoz z^TmZW;TTZ`hqBHQh805p=1Bj$jkSA=SH4^kiW$!r37cHEU!3@FXi+^P*WCPOgMP6(B3#wBs@r=sQYh=415(f1Fv6yakgbb=v z1@U`rL;&RhvzTse1P$t~f|zbagk0oH8gZ@i&~jwEIMOP$aTIZ_%FttEyATow^#Qq< zE46VIvAy~bU1Yl&QXAEQyVzDi1P@w+9MUFQg9sAOm0|>zJEgJWlp%636)e0-{nvhB za5Y$TCQHM)F+;9ksPZ)<{$Qo@4I^Ijje-y%vW=_y^#1;Iv+()y_5R`f)DOGvp zNE!^%5EdSlZpx(N3$?i1$abFY!WUcui|uKQ^&ER-7DMaH6 zxjndF9~^OA zXSWOry}nY2UMA&8Ir+$;L?&fFKDZC7Qsf&e6H?#OkZHF83dA8nCTEBc)_WnKVyy;X z^`an$8@S2J1oC51luN%1uTrxS~ zKT4oD^eX@Fro`%OMbT3!*T=>fO31RX0F#xU)@FPEq8(FZtvfo-4DmAh0Wp zkaxD2eT$+YVzu9mQ0wMIIeNb6srxw6*iXRccG9GXm z6v456>2P~vXMO{}*fY7uH_|hk>Hm$H-*ig?mVbYrqWa}T_6`i8??f&jZq?>MVygy_ z=e5qjdyBJE1Q4*a1oG8sBJ7R%0{Ija6clO5hzOfPWXYO-@${2e2m#>@quQARqa8-u z6;)UOZ=d1j20G+2$lary5Y@{1E<~6Pi697*C9q!C^-H~|$Iz}b7Xx5KAUxl0K`~vq> zM>-Sh?QDSk;{_*rxHz0XT)8trj;?@pLCkQ()YlH>iTkQyKf_HJ!oj)5`Wi?U!VfHKI#a&(-x@^3P#EwYp6h zbu@(KDq1qvWx|jQ2pSevt<}HvgzZEVeR>SIF-9>oGLxq`w0vboJy%i8Yz;x z%@aKZpLl4i6yNrR?p(wM{raWZsHUoN%?dzs%>(Gg>qxvg0Fspk86M)7E+CzGlv-i& zJS7l*;JCQddV$qXdPaV{QOd@|$=(x~jp5WT_q+XaT=qnTBc+#AcRF*yFCqo%jNJI7 z&mX;|MlhjP=XrL?uQro4<&Yn`r8Ou5D|IBes_D!TQ6Of5zN-e1WdRyodhiWg8sP!d zj2v?11UZpaP$4Ja#P7$EvE;MZ?xUb>M?BY(@F?DF>3Qt#@dzIkI8O@GAmAU8YZo+j zH<+q3#fl_3rto?*Ukl=`YN_Y2Pg}k+`_pW{#QT#6zeVaK1AS+3_1;q`?+6dcb23)qK&F+EX^9QmX&sQ2Boin5%-hN>N3dGuY`iwSXym! z2Y9AXT-p_qDKk-(d{g*|l6D#5C;ehb$*tIOeTwIFR$2;GPPO(z*Vyq2OSRYWy(xk~ zwBdS4)C2iyc3akoHqFqPPAZE?H*|JU94JVGl>?_C_V)H`>D*TnAiEInW9cMdY@>5t zn=K&^&E7>z%UTwXs)mFn9UfRjKE3Wk*%gbo*f?L$YFdQ!(&E!IM@ z$?3)^9{U*P=VO}?vM3s=m&fD*VliFIRS0>dEGd!od!mne((EDpO6c}JWQ?fFS0$*? z!k9%$T-X;(1$peJu?UH-B?)Fv7tzSs`>&ecPm6|1$TrW*OOnx;GfP$z=<&DjzGw4W zKFcbUrYY!4%leXP(cNka`?jEO2c|RfllnB60UV;D_f1>S-3^tS#1yEav>&F#!jVRY zkTEm(V-I;0RvXEV&r;sa9g_TOwdiC{mn$rY(RD9~-bTV!(9Z;YG} zG|fD}C#=&xrT)zC8XpA8Xwkt=M9|@$2BqmR!P?iVuWdETSyME}+^OTQzITj1TC%gd z{pm|PeBtp1dqGJTXc%KefmhV(J+SaWndrRg3wFs(Op8aF2JXU3XRo|H2J5;KQlu%U z2A%`+BXo&awPcE4c~TbpeAX>Tk1a!8pClB#lU%lO4KG=^v0ULeK}b9gupT5f{3LF1 zcs8eIp@XyafK&X;U2N&R>F(g-iFTFxh9}+?YkO#SFsRb=9(D)DOu638y$D-3bx>Th z+Lv0HW&-jD3wpO_AFOi`IC81G))*J%_h=%sWut^m_&os8P#)< zZd!cH6sPqKcd!ebR2qi>j6fv8Uy3YVtJsMz?7Hk%!CDeG&LIz>RpE0h4O|lW5mp*| zLHzYFpaEaYSs8}7>CE_hd`8_qwbz+6(fx)dk?9WV;es}|K0yXrh!Jn;)=5> zOG)0|-N5?lQb=!_+_{gn^R5cSGoPE}u8PXfT<+!{6@#B|*?!b=TG$2&(Z>_0Mv}Xs zwwJah1XrcGSM|UBZe;d-TGC)BvSuMkbT=mu)u{$MTVjaO(b(*0Iv7X*3+OVuh0`)( zMmiDKQmMO(`c%6^%r38HREW&RkjhpzdL%TAo7i|MP2`w+jfvFdkgN1ZovDNr!LYx9 z7#6b#lv=`y_F$rz zIj4I9R?CFU)RH41x>JfHZAm#Q$#1#Fn|jfpDF)=o-QNXEs~nP5-dec-#y(EP?=~Q zu*85N+T@;BXnlOCvbDM8Sf?MDHPazuHsiqvh`;hJm}o`rOS=Lt(z9${9_hp`(lfr% zi8N58`S6#yLi~j&06fG|!EkC3F@}Ljfbn%Az#j}XIPgQ|m7(!=9#ip_ZA*6PqhP+@ zFlj9tA9M8-(|mls)9APST6+%Hz6I#jHy*kmTTIGEvVi=Sx>2rVV5!oTci@Zsnpf_}yDjb0S21SXWssDZ+OEA3`x^~3t)d$-C3^J552csr@Lh6Dgk)?5 z@=^#9dR$-;Bj_v7L{wHq3v zve-E*?U9}P;i&lSqs7u;Ga^s#{Sv4r?A&~91S%bT?-=a`m{AJY=zQ?i-wcGYg;y?% zcdwMz8e#n71_JbAFAERs+j)r!`if~uSmePdaOug=POIQhoPXdHY??&8Xx~^Ba6;zE zlh{?!U)83wN@!cLNN&g`vj1j~oFukVe@73Zhs((qM4xVX6jUzquZJGj) z#8Bvx|7MMndVzbR41gNsOjd}%sDpj@b~#e0N7-30n1B{KIhOT~6uMhEB4Ol_v23*s zK{8F+yg8Y@qIUz)A}fC4C8C5nQ}D#C?F`hiig9rTr_?^%iPhL)0~iRmp|TyYuqTvRRll- zKIk<=3m++3Ch~o&P}7B%bymY7xkYlG^eg>Rh?&)J*Jc2Vt`{~qbrA@NiS4$BOe##m z!9#T?Ssvz7+?F&tE2hlW5KZOx!Lr*k=E}2~Vkq?aAtmb&RmBL#iNuybJsmHh!I)RO z<7f?YN*zl^(?uxAt}o)l2~?`Y1F~_3?UCN?m|I|vFN@CiBCwH&7mMg|7}tzN6W}qr zHb6_FzaDkER2Ms-HL095Eal3iz`DMIFQC@77Ahd+zj%usyh}P*X^p_TaIKBvv!GxV zJYH>IdcY-#%ficY5O8O{ooJk#6qxexele2Sy2IE9Y2G?9#AL=zy`cp&#w%sFddJRbch8p7yG*TrbN3rE5W zJrywaPEs)}cH8x}GU6Zd;S&w%++pVC!0>B2CZIZth+DERStg(y7odEOjwT4GiQmw+ z>q}+bDxE`B(Qn}Q~mwlWEjB`&}JbUG;Jxoodxl}&_;HsE&X+XGEx5tf?7 z=2hF`E^S!qT{RG?%+nR7Y=xRnJEJxAuTq_A?zXCaulZ7_z3vxn4?(0?#&xAuc0^!PEv9?D8 zFMLlHsmot#fKvaahFV!02Hy_O{;j3im_-*_C*pv6z_uW-#*t(TwoRog#{W9_>W1<1 z>!=|Guf$c9BS$yNn{W;c{GfujxRx!;QR zq#nL4Vg_2=2z#RQ>~n2_Fzln;K=%UI9pKzx_exxa-=O=$I2y+p4=qs` zf_za$9XK&&_9ZGENHd1_r9NOR`Dc+0(zBM~k9*c1G zLWmLFy5iX&L+~mU?!eM}7;>z&8iOK!2c5Eo7DEDQ1{y7ui!!0^ z<(C317#In$!q(^hY^1{8?*qxqX;c!&7E8ixJ=?%Islz;~^`dk!_JzS$?fNm-17|1F zIhz5F&V3UNx7%P}4>Iua9Dn+qO(?8k9}fo#I*7R{8(Pxk7f$TPvt;l+OiZyWPFyo- zs#;HJCoD3OI}biNs>nq#_%7bzkTNb&*THA1VM_RLT3jLJunc9{*nX@~jJoT`kq($^ z$#Dfw%MFeh?JZ;4Tx-gts#Q4zz;wQ5`CRi(>VRc7K*>H^3AK(9Ge<6Zt&yxNzswrK zb^{^60=jq!LrEZHIR+%053GvSidr6#uWztv(n$$T5 zs^}poMbTcx=p?!Cf>N~0iJ<}Cb^();)G_|Z>S+3+!P{uUYM&gENWT#45%G#J>S*KX-D6u9wbE0Mnl-9Z-Qq?d7zDU>y70}ab z^C$R6n4aWdQ*`)m=*eWI!&#|O=DaE#8zq6#anx=`XCj00I z{Ul-Iow&>`J|{CY!cq#=3~U*4=!vAU90jb-N*ZU8E>%;khc?v`WWM&HhPh1Jn=~d- z8ke28UCq#{+W;(aAe}0I*_`Q+rT-->J62xfaM_wxsd9TarGK_f#S93v5w*IYKsL;8 zCw|y|Y3EEZM@;&V!3OM7W4Pb+L168e>ifu?fdktWnh+-_@5I&NQBG8@#vr!CBt|^! z1KX(39*5A-aS|%!IzT@Tm~OD}qtJQ5S>|F$6a#j2C1XV;%yrSwAOMH~j6!#I;>-MK zI~WKmv%(0)&<$||C1~pXLdKDp;t>A8(TL$NG34% z>3NTAYu;|U$&awZu08JiJ#YCK_~?OE0M7LR2EJL0?1VeKZD>I|w0IGQt|zbT&@v;Q zUp?YxK7N)QemyI`SuSblBgE8^XEI=*PeqSXxEA{w&*}yb3zP*gy*<)fWwnb->~f|* zYu$|4#OJ0a*0s03bjkt3nhnLpxs9sfGR$G>jc%O8KT+~?v3=E0&msBU>#hj8Rt-0} z@FoGKYcCem1ESB+32)7jPj3W;D##<9^k|sGBbQe)MCq5Ahlnu38tF1~Z1Y=wUao-u zS;#9r^xm%6z6zBaq>LLZp-16W&$087i$dKX0brn)x^f9(zJHk&eZF#0lE)k)G!I#N z;u+aKpVR}IssqURmeuhKXMnKc<*0+p^seSKFe|mQZQuGHTFt>3QK%RO2&^ z7iIwTz5FlDi5Qb{Q<(T@2W5s?dF1-RVsGCQYqD+2~`W^;6}6o})ve!I@TN7VEB<(Um=SF+McS z^FSabTZW}A?SmpAlQ4oA#_wS2{*S``xdY2V(ZQsupLmX78uv>w>{3i*=?<3EhTh|YbBRx*!>a~V{- zbdw8euYz!1la_Qnli%Y8EO__g6r-L4M?ek8!qeuNFM7XV4YA=E5Wg}EV)~|J@3CRV z)v3Vx?3n(La`Gd`x+MaMG%Fd`xLfo@!-Nrj^?t&Ym8zEfc%V8%QTgrND~1!W*nIY@ zJ>Ivd9mP1mTV3P^#oES7uO-{#8*!1IZL>^t>x$(?bnA{~8n#{V{L1Oo2hbnedK!|< zG%+||z6^8ycj3j~xApMBO zX0s97+%Y$?AV`71>o$fu(^{vi#01gtR!>k4~Ec}C~42$%TBya^Q zS;Efej;DbYlGA4D3hahhqK+Vl{akVyiJw)XV!n|qRuTW%_f=XRND%;vbQXw)PYcFbHW zmz2s5Wdbue>Skl_U>}kS9ZN8(oV1vbswilWryxqr?YV?;1UYF8HqlmE z<3!@Zh zue^6--<1NV+=3j!dp^B)&&9Kqk9fQ(=K)bn>snUIJi?xr<`W*DzpT z)e$4g&+a+VnMC?i0^6m<`Hl88-(?-p62Tg)t7}@?VcItP*gh(IUlX*H}G-A-#SBVwKrcS?fMR$LnKY z+)ZJ=g5&8iKyI`swZa0hX0&q^B=S&hmgJ9-m$U=yrm{&SC@Sylawe`Vv4vK8Onf$) z%zDjD^D+j11Rw!Cf{Ed$uf+bZzGC@T8TF<-4ih3DxmBxHDk-g9eloi*uw1ZV!p}A6 zipa=F)LTJBULF8YQ4GeFchVhF=sUDBOgVzDpa3)zI~vEl_6F9EsSKA9{Ev>GegN21 zMHj{^!;${#U@izX3=u~?M%b?8=R40ZBm{nF{2fdcq4`1J3D}H{H@h%fyY2P{?fb9K zUf&?NHKV)~d|Brwddg2>N`mn!I_LMI)^$X$lT?-KkQGSIp}`&WsE{~>b4iJfDA`Mp zajfd-4(N8^p%lHV2N@p)kiy1~g`}~`^Ck>sNWEFuh?fzPAF`Cf!#8 zNmhzq$J=6)cQCZw%X7NU&5FkNT+N&@$wEvX%!WBCpxifS zb+5o`ibSLEMPAQJvB=-uuoG9`66tH^PK?|%sPQ*&j4`n^JH#=`l&_3J&ACD6qWxH; z?&^$E0k4z^1V!7_UMNl%Cu7SP0Ym}TObp}4<=`)|8m5yRlv5@HjqM1WSUX0^)keRh zcMN-eDjd!3nbP0eQSBb|G z0b=)81pluDWHYq~VAW6=>r>e-$F}Ts4zmoW1JK8KvYhFzjNc76M4)RW9&ORBJh>hU zD8jK&jv0sMTH0Nw7@IV0?%1DSOP<7ZD6bsAw8N}7t5@NSgAf6U8-mDZ1OQC}a%sSr zI}1*tH(Ho08!r-Uhu&gkt0!($dO;s~%9;#4HZk`>3_1|`N7g9gj?vlxHk$+wml5UC zz}L1|FVgAsSuK4&*+Rif$@|0_11dlIX4tV64v*!v0_Zk&cu`kuag2kIKqQNEg*rAY z8zI%O?yI(T?)zsPIV8)lgI)A--?A8{cBR5|z!ED{%`BN;TeK96S@PMbvf&ebx=Rr+ zuuIA5nFzyoe{D6&tVj)SVGpZUpqZRuSj8zsi1rc2;R6WhCd_8)9R|5DrXx!1VYvzL zi`46VUgG;23;$|X`~AJ+@Y1)EGvn-TZ1;I*@q{+ojqEFooj)hm;~&J+e`s+1|JA8% z|14=#(Q!alLVSm>wq38K)1z8h@us0xr1h-eptf$1%S4nb-tTV<%^hIh9Im&hddJL* zNyA8r1R%VB2}pJ_uP7<5AJ154*`3O8FrRt7e_nMEb%J3acT^hn!$WZ8UAmPVHNhjp zv*FIgjM&%3MUiYwH%nlqJnsg=a{(uAHxwN7#dV@hmpp6)@QkImM^yuSXw{v@MX{pD zbB)J`SajKxg!I1v&&#^Y5N3?4KVO1$?QQ5+DXQp=+N22A)7Ph;nLP2R#X~HpgxbC8 z+uaxdZr7*IG+P&m=vKCgj37ZZ{wlT1uQVhXN40224Rgy)3&-k<+(osC2;iS23@FCC1~s zzwRVPo+%F;5>w~=Zo`W^g((h$<_FR&;}J^2oDZ)&q>*X{MGijevA!HH#b$nln81>7 z5AkNJjbqi-@TOZXeScB5^W37LpZ+k=7EY+#v?rvon;6b7-GHCw8==+{O|W;1u06xj zMmNx20K35`NEu;USUszg&7>2*rl|Q&P~RKQ&mrZ^dy}z)6@Ttygg3cQH8Ph0JnIxn znzzQ!&6LLz;ubO9%e^_Mim*sfAR!>M=q>qhRZ8Zaj&+n>h*7yulX?@w?8lYB6Ohdl zw>hTN3aLKOPHZ0%eF`4h{`hC5?I>bFq3kCo2|ruo{!?lDzsL>P|0Op6N%#sQf2tQF zsA?+cN5qGTE)Y`hlx_C2UfDMC$o!(cP5D>Cmsq}i+0*o#>vElu zUII^){E!{`$*LqR+M2bVy0mE|sWDh;IEI(0-ZFitIRrb%RxzZsU=?v1&9MQR{@Ve6 z&^6BJyPUQBlkMs7qKF@?zC&90XI_o289XlB7nn;7%1jR~xMa=AA#o1E+gjnpokiLw_6 zj;kvbqYuVZhf?m>4&?_}qxd_<8uvex#!EcF>=EfxX`=sBno-W-0}5yu%$7fuhUyQc z(fd>yb^JYEqQzwv0d;IvU<3iyZ3j7w#iQl=s8kj}x7qx$ZQsqGLPNef8XNlmM`$?y zDKyIS_Q;7 zzu-sylR@-z?1(jR*Se3#Nw&{*2aC`B{W-Q*cfSn6EN?R}?{hsKA%wu*qcRj2sF~_b zeY6}DLw#-hk8W;NOE+*9zd{i|YZ2~(wJ<-K`?$L&`5U^CrnS#~L2};wCI9JzbmVaK zU7V38H0Yk;5Y!33K<@;36=}3e5R}CeTmHf$!8l@a+uG~nZzVMw4p_FecLj#!QQn%1SP z^B2w3*3@)@^d)2)r$7;s<1hnp7Ih^{+UKdo>dfS}1$nq1dP>SZ2tK}^T$CQG-;X#2 z0(H6ksXd1}CLG?f&B#vm4}_i{xw;)<@6$~ZY`*H)I@R>epL%&txEkvdXY>}LUWbsRFWs3a*|(8HT6T&a~s(ze!tg%mF`!LKg@AblcR zSO*Dz2CU0W$Me+T+0{N0pXN|@uoQ#}yfl2N9%;Oj6@Qi(vOWCo)9C`+0a|fP@5+0) zFz1$?1B|W1v<(ytVJnBlRc6Ia^KNU*q@jqEr7&cfADW^+8P%mj(Bwx zhYA?nKeIr5y+1O8hw+s*_wls?EPFfLh#OW&p3lr6q4c3_wKKYzkZLf0cvCmW>uoyq zhD~JOA|^g@E*I}mn_3OkGa z6@JCW0A04tBvxTMIowUOQe-Fsx;dk5RePT`vn-*+yy{lIZF|NBTsBW}-$jN_$`B21 z_pkDd*UAi`gl=rNe(Mn?%g@DG)XDCj@wytYP7?m<(!X|_{x1ZW>z^)FoRkMwX^9m zdsteRH_ISth=GH?LYquity8|19%zR0=}`0xTIqT$&x*9e|p@?6HG zzTdOGrNQ4bt`XQs{7C&OG1 zuSQMFPa0gciIrCy+_$*%jr!qu`7Q4it?K{<+pq_7C@0DS%+n2Z-ojFGjb-P2IZ}`u zS{lUNPy+?0%!~`9!#%37%LdQRX2qafj7QVH-+t?yG%jM~{sdwh9l~Kwe%H=(R#gyR zlSq8eNd&5#6Hsu=<+cbab;nQeW<12*wgTxbFdPf}N{wDYFG3JTe0;isKC0ScMSUCc zur$EF2SL_{lXbvhWn9#yb`;|}ZmC{xsM_3=fzkWtN_s0U8_wv{SwjC~{QbS-`#)9B zq)d$e^p>if3XU48zrFC9>3V8n>%%fI`*J*Rpt>DcHJNHMyQ(dsUCVi+k4USYyOV*S zZ#uRYnEMCF`Yh?gSV*>$+kjiISau9IA!YnK_Xnd#qec>?dk$iXkH zF}JMd3+>q>DXcrH^~K+m_NX=0Z)$-R0_zAB5vetm68cf7QF$v0LA=m^Q@a;_>pjF< z3j}(CtCTd66r+g5(uQxsG;#_WmfG=)49-)ZkF~(uONK@(W0||56^UtNE8Pbs*OayL z#9^@Z3=fU9f`joC3JyGBP3No1@3!bK|;;b`@DcF&a z8iYt+x?$2^b_AKVc>%o#KGQeAt~L1yJnsA9N;(U3IsTkhcShqqzmhX-Om;(S;Uv2U z*(EXx9jT^ZkXTjg(ZfmcdoS@pga4>oA>C%&;;hXst-M zXIw%E4~wi(M? zw#HJug!4r>rl-#kZ@G!MKwB0aMJNoTrT7ZH(u6|5oU3#X)*$&5l#^RXEoe7eDQ(-D zAI%IhFSBkACq>DS$$iQP&&h`uW38~f_mo#!t(OXwV=hVxKb!eT(L3@!rjjJ>-y!mq z+w7{9EMyQm4#r_FZJ0d3?YT8NY3S-e_&}z?X&mbxyU+ZGv-CrhX_4kPo5*@1P!pNl ztPH@-{Dd}G1Nx4`TE~MiBwqusk+jJdoNRRz53QP;CY0RHzHMg@$D(b|fF+k9YX=T7 z@|9qHfiiu~2>zya!!S9!8>|-83*!lJ&8Ws&kXpzI^;uKn?2R=E4RpipK>?ddv@Hup z%-eTs^f^@Y4e5ZaY)S~DlTWZLMtlHQh%W{;My2vT4%~(Da7ymueyTZSYP}w*jODvM zC#*1eo~KhBJ-nP~wIl2b{B7Y?K1MW;J`%FJE-P_0#jV_f}h$Brts@))@MO5y1>4M6HXr>&q=};-$_#tr)hrA5trr# zkpV>m{bz%uIx@VoXIwR^SpZ4pKAkRUjdC(N!o#1F{=D!m0p(|Uz6|l-Df-`A>;K*i z_g{ZA@lVN7mvTgrK=rd5XDKqOH^UMMQv(V%Ga{La1(Uh~MoK5clodtClrpgr%ykkc zi5~Ao5=L(f*L9Y@9`9GCt~|)B)J?LXZo_r?o;vXZzl*n#iF)}$pl|o%ciQ#Y>+e1T z0>Th~-?F{pAPm&*;%|!aDvTtDa99o#o-!kw%sUCUwb9R}-3*7V(Fmqn3AY8&UCjK6 zw++z>s+Mb2#%$sA@OEou!o&V(%<$!wCv*KqXz-P%LqupcoT85DD&T6O39<2MB-tLx zG73(fnS(62u@#z8MD%b~ii`tx60g{!uZK|de3N!8*z_jRgIMshPU(A&fWdq0Qb+aR z7$-P*ddu_?G`PCG!mupe%0N7Ew%X+6-nof!(10M}4y%$7{UYy||O;B;Eu)GmT71&(Nc8>=wUV zPA(ouc&Xrc-*kic&ew-+R%W4z2TyE43U^GAia1%()w|DrmkGa+7|kI&9~c@~m_=ZH zKxb~=ex)qcnCT3~TptsR)<~JC&!j+!k-DG5Bd#NsopBIzb%%UW?E;iojqF$S zKst;H?^G>i+3_scG?@k<%f7NVRuRYbEaC_&`CMgI)|Sb20Hw{m#)z|ChRSDP-GZ5A zB8pQ~oFc13F`Gd}kb4iAp>=VZ&MlL~aOORN*n8Jtkx-O~ zY%!c{=KE75k>C-_%96$FO+ZcPBX5?d|?Z+;8BxvMlT~Zt|t|K`vK9+w+2nD z?3@zUk-xWXR<84u>w0Z-qw0EP9=nYW-SLwz2tECtshUS)#4LNAsnO_*0oisX^szQA zG*7b)I}xL!iMe_e5R%ZS(-M4ksufxvy8DF=r)ZK;lIS!s)P1@m`Lh(+dq~*o`n%n9wx0ZntZ9iRB66Vjb$R)= zfS&>H^K|dYwdu)?OkM=n!k(5;XQw!cX9?BSftnyJliuMZ`TlUM1jy=pF#b)qP~+lH zcj`!8GG-umP)&# zkS`t-7#2oPv>OQl9`_8Ybq{e}R%+$mnO%|hYW7D6`X*?rAXGt=dSmy5>I6oTK{l|A-VfqgNBtIka z4?+Bo0XiO$h~S!xMx!5<19-{Zy2-u1t`OkM5O8%)9Q|}V4DA6d?GeNkB6}_`Vl8qr zvM;Y7TfInYB|oPOW-lab3+xqhWyCb#`9#CJLdzRwdER*=7o zEfGKg87Dvlv4d^0-fCze=>`4d^ww{N6eNP|_rq_{FE@KlCB#@DIm_$9!(;OH?&0C+ z(vBZN9I~EjP$dx{Q_29~0Wg*khW`Wut)wK0T|ns5!L*tyEzt4AWm+s#Y?2n|_bfb_ zV+;|*joE*Iyf}3y>r6RbWF+oXJ2nVI7eg0rpPbfFUxmey#z37~-wUmJ98urvN=UoYO=MYw z^sIR>II|>oPkSZUa?a3ZJhYu?#0!cDYq@|_kE7GHT2#-MbnX~MN!=veX|l#+0u|z@sV7Z2HOUSg z1kaw>+yN7<$hi8$O;bdBNM?C?IVTDhn0(xr*g2+t~QPy1QOG{ z;-i2aCzAj%bR?q(@dSIfu^5A!n@x`zH@L&y2W4X17$+FiU=|qPYXTKB;sDQ_N2IHj za*0{BVSGja9L{hi2AB&^88p)6EG#DlgsC-;$qBhFZ4e9Z@CpzDEwKF3@=upApX@BornCHY(#-gJ}{>+o<;BHo29@8 zmjtLWe<4U8KBT0o4WVQgSwZZjpVru)2?tM^ETT33R_jnHY!F3yJck`nBfoSkgoO;1d}?4j zo*WYw=d;~Y0{Y24$pKW4WT7-;^hzS?7$7dT{u3eo7Hq?5r?Q$dnHq* zxo!^jv_2sWTyp!w6~1ycG4eiWl4x*@aC9*mc^rs&I1~Nz>#WB!07a>*G-6A7C1}4NJt*6;vB>03Z zTC2iLoWL?xY_WibXtHB{-%&)6o}eUGJrUL5K?qgiKG-Brf)k|zhly!IvBq;Z_@K4Y^;o->~%>rcy@67st`je=;k%_(Ym)PB3$yM0E=^wdOS?kN6FnH&n z*XYJ@M^!3+6tPom(i4Pz&kh?Dkhrs^Gm!QM?+X8 z<2xJoK6*X$J{q5V`?!54?^W*?gQ0|lXXTl_Qtv~Cm1pIdtI0P|5l12B+O-TbWPyV< z;xd#t4%62bhd`#{E~`@pGmT@Z3DN?)AhOxchPpIb?FLzAsR_Xb)72N#C&~IkUijle z3k_qz6Xho!)W8Kx(>hy?XG}ZxT=muQxZF&a-*41*mcUUp?$o$6bQh&bPvWg;HdX{{ zOWL-x-qn}uEmx9%lOe1)!xae_o;FZebsa2w&EB%h%F~tE0Kb^@7Hn0{VI__96?Ob2<_`daRr)EJ{h{qy3vY5oaz3CQf27xxC!leG13TqrDlRgr zie9qWm)x@2v=Y~np*+VmWmiLi0|eicSeJ^R>3IUFm@LoK8O3xKk%y=&v08OCC9qYK0B!=b4&Nrhi>{Ew$Mw}+N{}TvY(pC z4Uv(j*F6P9y7}wONe;Pbby_Au5y1(buKzf}IPgkq>qpOE4;oB%uB>B*zNy`@2IPZA zzYAKX%bSC76~~$-S|=IdauTTXinHZj4lrQ{J$*c7b5Os;RKPjtPG%b%Ggr$zK)*Q3 z!muztLB@$)EWwLx!9_A3Q_Tg<^k1>xu>%i641`WK76M~OIAuTKFjMk9f|4vdWkQja zRS6hL8RakBY8$}_j~frWlW*_i?lxnzWPU>b<+jX~$W;bkY0&0B5+%g{R~l3@u{SYr zHZlIoYyZ*y`SRE=7EeyAt%wd(Ggn)aqI4Rqu+;q^Uz>%HF#a21PqU4eCR$Vb#Ko6F z!xQySdcNn~Kr$#XB%jCTC+ztzZ3t|Nj`7K~wD&H%L*vP*t*tKNFfH{ceVzbJ&_`4r zg)4;~V$c}WaZ$<*WYG*3D9@rL@=jy!-s6-_0Te`-(f(MTcu2w`Ltvv>Z8Zn*0;&t5 zN<%bG)X0{yT}Uwijgk5Q6cbF3wQW=$d4|^35?o_IUfM!$a*azp*Ab~6(@(PuN9+L~ zT_h*kv64FU0(9t<4XNNYz~)-Hcc{US-Kw%kp@Buqw&qi zXe$=q7*iYFqx9_q9AS6el3me|=?IlWn4e%XtyLLs!CKUgURu;xD7e>*&vDzu1zN?* z%Xf@CrXgL6@fb>KBL-pBTBH-pGuApx&(0eY+jEY5LBvKv=pxya8da1`tV@V#L{l`T zrln=HV~x^pt#qI8R`*|{doYaEO8FJ$aBdj$qfNSdav(Wv3z&l+Q+^W+?kdd5XXRRZ z#qO?vT^GsWX_t@q(!E8u(bz6WRhT~X8>X&N>Euet$ZufuIT-h*ud5>#A^}a(Pz96O z2UrKR1`8)l!9yrWURQF)qj{z+-UR`QtN5Vbgas}@JqT~e?E|fo>VhYifRf{5FF)S6=yg^}{NZvl-cUR<3QML6OKJt^lQNeOE}mykAg{wyN;M;- zvh!_H_J@8GIRuzz;tKPMJq|hf6lT0gWZyfi{i1pU{VN=no+`q-zQO_hKcWJX|0^8+ z3Ih=nBRfX}XS=@(_4p{;+06>z_(ltAtwOS7Xo9ZmX@f5>^pAoIMq!?wJ< z58|kzXSNTH8PRrVp7Wp2pPodIp*>iyk{CE9h{B{{^%O~>!u&gs!Y49ZFo!`U%)eYa z%j^b^cygx~Cn6-KiO$g_dqG{;l27t!(%HV$|BI_+z1uxX5C%Wou5G4C=wOu zH-Nu^t(>YCT!MLo0u*x>9(;56?|=8bNa+I6zNnU>mnxaTnrL3eFJ-C}#Bl$p;}J5s zo3@!t6^=S_-_pOYR-oI)npZ6&tF&_ZAqRJy8`%V0nDGlJhf*(|q?how*pe^{qglUqm{%$EJlC2y zuyj_BMciQ9r{V~6+wgqK2jPL|P=B^u*!!MO0h4T8@(|=oZ{wfd=0x-ngidDGf}b-* z#Vj%PEX_S2vjeS_57`4aTd4Mrb;w8%*?MBmRkFnbPfW6s=cG(i;S+-dawjeht}=h7 zStx3lVCko`xw5+r@0AAEN8`S02GYcj!~tr7k~+VGYvd7mB4QWtS?*nzy-|UpjW5U> zzm)N(E9f`Yz57Hkk-8LrPbQxl(vgF+<;7f3ogg4+*;Fo4R0d^7uA_MrCI@EbJaNlp z{Uurceip#2J@MViC)&ySO4&u9552cTBAK?yb;asUx7iK!659&SwhpGkEgIiG%w!QQ zRAbo`R`qn7jrn`iG=;`xn$BMPGx9~K?jzL4FWtu-xAEv&mkfrfCoLLmv`#)6th|in zek5X$r32#nEQ$X8-pDN^86InUM?poIF5&O-Dbo#h{;iI4KyU+%)2k%7E4U#1LPSVW6J;6hI~CD_qG zKnPlz-gJpwuK>Ojy?EN>jfO;v1n>O~KRC6qQbdR}&b7+yaJ+*3_vhPNFq7*xrn_OT z)pnV`8CW*)=wB(8?GU~D>3wEiYB=nFFHZ62at#!}BVlo=HdSgvwD9pj;A!VPZ z9fMqffJY7qKYB{-+b(XT2yQqDtco7-ixZ-#oHivQsUQxih9d=lYoz>(#U1@^Sb8>u z4;uLV^0jhb6bG}oMuFtWzb{EN+z2j6vRQIOOc?V_L2|d6`LKcR6SCm(R)1Gnz|0Z2 ze6&NE;$KY7F=3D?rPl%3Fo)qAHJ_&7KUKqV-obr{o|(tDE4htdgeWX6-VrOF(|HmA zGof+UXHMfSioL;g>3?N3qC$ho^{E&3kmiO9L;Y#%MPVe`@N76p@`zC$u0TFtRrNgu z{F*dMQ_&2_Cm>yQgSRah8qd|lRdKoC2mnkf$@Ov_+X?jUbmx`sNy=rjPU;g=;Z`_S zX!8gT<93Rb-0l+DRTqhPRfNVv=?nu#88{b$5jb&pIp(NN-6Rs*~p9%}=ynd

nF_@K(3rizM?|8pRG3cx_P286 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 oL<~A4NIcyH4<`vJKVNL*$e^=5ij4+4eE9hU Date: Fri, 3 Feb 2017 08:09:05 -0600 Subject: [PATCH 05/11] move bin directory into src/main --- {bin => src/main/bin}/AllTests.bat | 0 {bin => src/main/bin}/AllTests.sh | 0 {bin => src/main/bin}/Console.bat | 0 {bin => src/main/bin}/Console.sh | 0 {bin => src/main/bin}/Evaluator.bat | 0 {bin => src/main/bin}/Evaluator.sh | 0 {bin => src/main/bin}/Fractal.bat | 0 {bin => src/main/bin}/Fractal.sh | 0 {bin => src/main/bin}/FunctionPlotter.bat | 0 {bin => src/main/bin}/JEPTest.bat | 0 {bin => src/main/bin}/JEPTest.sh | 0 {bin => src/main/bin}/JEPTestExpressions.txt | 0 {bin => src/main/bin}/ThreadTest.bat | 0 {bin => src/main/bin}/ThreadTest.sh | 0 14 files changed, 0 insertions(+), 0 deletions(-) rename {bin => src/main/bin}/AllTests.bat (100%) rename {bin => src/main/bin}/AllTests.sh (100%) rename {bin => src/main/bin}/Console.bat (100%) rename {bin => src/main/bin}/Console.sh (100%) rename {bin => src/main/bin}/Evaluator.bat (100%) rename {bin => src/main/bin}/Evaluator.sh (100%) rename {bin => src/main/bin}/Fractal.bat (100%) rename {bin => src/main/bin}/Fractal.sh (100%) rename {bin => src/main/bin}/FunctionPlotter.bat (100%) rename {bin => src/main/bin}/JEPTest.bat (100%) rename {bin => src/main/bin}/JEPTest.sh (100%) rename {bin => src/main/bin}/JEPTestExpressions.txt (100%) rename {bin => src/main/bin}/ThreadTest.bat (100%) rename {bin => src/main/bin}/ThreadTest.sh (100%) diff --git a/bin/AllTests.bat b/src/main/bin/AllTests.bat similarity index 100% rename from bin/AllTests.bat rename to src/main/bin/AllTests.bat diff --git a/bin/AllTests.sh b/src/main/bin/AllTests.sh similarity index 100% rename from bin/AllTests.sh rename to src/main/bin/AllTests.sh diff --git a/bin/Console.bat b/src/main/bin/Console.bat similarity index 100% rename from bin/Console.bat rename to src/main/bin/Console.bat diff --git a/bin/Console.sh b/src/main/bin/Console.sh similarity index 100% rename from bin/Console.sh rename to src/main/bin/Console.sh diff --git a/bin/Evaluator.bat b/src/main/bin/Evaluator.bat similarity index 100% rename from bin/Evaluator.bat rename to src/main/bin/Evaluator.bat diff --git a/bin/Evaluator.sh b/src/main/bin/Evaluator.sh similarity index 100% rename from bin/Evaluator.sh rename to src/main/bin/Evaluator.sh diff --git a/bin/Fractal.bat b/src/main/bin/Fractal.bat similarity index 100% rename from bin/Fractal.bat rename to src/main/bin/Fractal.bat diff --git a/bin/Fractal.sh b/src/main/bin/Fractal.sh similarity index 100% rename from bin/Fractal.sh rename to src/main/bin/Fractal.sh diff --git a/bin/FunctionPlotter.bat b/src/main/bin/FunctionPlotter.bat similarity index 100% rename from bin/FunctionPlotter.bat rename to src/main/bin/FunctionPlotter.bat diff --git a/bin/JEPTest.bat b/src/main/bin/JEPTest.bat similarity index 100% rename from bin/JEPTest.bat rename to src/main/bin/JEPTest.bat diff --git a/bin/JEPTest.sh b/src/main/bin/JEPTest.sh similarity index 100% rename from bin/JEPTest.sh rename to src/main/bin/JEPTest.sh diff --git a/bin/JEPTestExpressions.txt b/src/main/bin/JEPTestExpressions.txt similarity index 100% rename from bin/JEPTestExpressions.txt rename to src/main/bin/JEPTestExpressions.txt diff --git a/bin/ThreadTest.bat b/src/main/bin/ThreadTest.bat similarity index 100% rename from bin/ThreadTest.bat rename to src/main/bin/ThreadTest.bat diff --git a/bin/ThreadTest.sh b/src/main/bin/ThreadTest.sh similarity index 100% rename from bin/ThreadTest.sh rename to src/main/bin/ThreadTest.sh From 2c28df351b530152dee0dc442e3a7fafc143cda3 Mon Sep 17 00:00:00 2001 From: Cosmin Stroe Date: Fri, 3 Feb 2017 08:09:31 -0600 Subject: [PATCH 06/11] update version to the next patch version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 95916b0..9c3e073 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.github.cstroe JEP - 1.0.0-SNAPSHOT + 2.4.2-SNAPSHOT jar From 6fcd56345a00a873870e4f68eeca1efc439f9312 Mon Sep 17 00:00:00 2001 From: Cosmin Stroe Date: Fri, 3 Feb 2017 08:11:20 -0600 Subject: [PATCH 07/11] moved doc files into src/main --- {doc => src/main/doc}/.cvsignore | 0 {doc => src/main/doc}/Library/top bar.lbi | 0 {doc => src/main/doc}/Templates/maintemplate.dwt | 0 {doc => src/main/doc}/html/CustFunc.java | 0 {doc => src/main/doc}/html/Half.java | 0 {doc => src/main/doc}/html/advanced.html | 0 {doc => src/main/doc}/html/extensions/djep.html | 0 {doc => src/main/doc}/html/extensions/groupjep.html | 0 {doc => src/main/doc}/html/extensions/index.html | 0 {doc => src/main/doc}/html/extensions/rpe.html | 0 .../main/doc}/html/extensions/vectorjep.html | 0 {doc => src/main/doc}/html/extensions/version.html | 0 {doc => src/main/doc}/html/extensions/xjep.html | 0 {doc => src/main/doc}/html/faq.html | 0 {doc => src/main/doc}/html/functions.html | 0 {doc => src/main/doc}/html/grammar.html | 0 {doc => src/main/doc}/html/img/.cvsignore | 0 {doc => src/main/doc}/html/img/checkmark.gif | Bin {doc => src/main/doc}/html/img/new-window-icon.gif | Bin {doc => src/main/doc}/html/img/top.gif | Bin {doc => src/main/doc}/html/index.html | 0 {doc => src/main/doc}/html/main.css | 0 {doc => src/main/doc}/html/operators.html | 0 {doc => src/main/doc}/html/types.html | 0 {doc => src/main/doc}/html/variables.html | 0 {doc => src/main/doc}/html/version.html | 0 26 files changed, 0 insertions(+), 0 deletions(-) rename {doc => src/main/doc}/.cvsignore (100%) rename {doc => src/main/doc}/Library/top bar.lbi (100%) rename {doc => src/main/doc}/Templates/maintemplate.dwt (100%) rename {doc => src/main/doc}/html/CustFunc.java (100%) rename {doc => src/main/doc}/html/Half.java (100%) rename {doc => src/main/doc}/html/advanced.html (100%) rename {doc => src/main/doc}/html/extensions/djep.html (100%) rename {doc => src/main/doc}/html/extensions/groupjep.html (100%) rename {doc => src/main/doc}/html/extensions/index.html (100%) rename {doc => src/main/doc}/html/extensions/rpe.html (100%) rename {doc => src/main/doc}/html/extensions/vectorjep.html (100%) rename {doc => src/main/doc}/html/extensions/version.html (100%) rename {doc => src/main/doc}/html/extensions/xjep.html (100%) rename {doc => src/main/doc}/html/faq.html (100%) rename {doc => src/main/doc}/html/functions.html (100%) rename {doc => src/main/doc}/html/grammar.html (100%) rename {doc => src/main/doc}/html/img/.cvsignore (100%) rename {doc => src/main/doc}/html/img/checkmark.gif (100%) rename {doc => src/main/doc}/html/img/new-window-icon.gif (100%) rename {doc => src/main/doc}/html/img/top.gif (100%) rename {doc => src/main/doc}/html/index.html (100%) rename {doc => src/main/doc}/html/main.css (100%) rename {doc => src/main/doc}/html/operators.html (100%) rename {doc => src/main/doc}/html/types.html (100%) rename {doc => src/main/doc}/html/variables.html (100%) rename {doc => src/main/doc}/html/version.html (100%) diff --git a/doc/.cvsignore b/src/main/doc/.cvsignore similarity index 100% rename from doc/.cvsignore rename to src/main/doc/.cvsignore diff --git a/doc/Library/top bar.lbi b/src/main/doc/Library/top bar.lbi similarity index 100% rename from doc/Library/top bar.lbi rename to src/main/doc/Library/top bar.lbi diff --git a/doc/Templates/maintemplate.dwt b/src/main/doc/Templates/maintemplate.dwt similarity index 100% rename from doc/Templates/maintemplate.dwt rename to src/main/doc/Templates/maintemplate.dwt diff --git a/doc/html/CustFunc.java b/src/main/doc/html/CustFunc.java similarity index 100% rename from doc/html/CustFunc.java rename to src/main/doc/html/CustFunc.java diff --git a/doc/html/Half.java b/src/main/doc/html/Half.java similarity index 100% rename from doc/html/Half.java rename to src/main/doc/html/Half.java diff --git a/doc/html/advanced.html b/src/main/doc/html/advanced.html similarity index 100% rename from doc/html/advanced.html rename to src/main/doc/html/advanced.html diff --git a/doc/html/extensions/djep.html b/src/main/doc/html/extensions/djep.html similarity index 100% rename from doc/html/extensions/djep.html rename to src/main/doc/html/extensions/djep.html diff --git a/doc/html/extensions/groupjep.html b/src/main/doc/html/extensions/groupjep.html similarity index 100% rename from doc/html/extensions/groupjep.html rename to src/main/doc/html/extensions/groupjep.html diff --git a/doc/html/extensions/index.html b/src/main/doc/html/extensions/index.html similarity index 100% rename from doc/html/extensions/index.html rename to src/main/doc/html/extensions/index.html diff --git a/doc/html/extensions/rpe.html b/src/main/doc/html/extensions/rpe.html similarity index 100% rename from doc/html/extensions/rpe.html rename to src/main/doc/html/extensions/rpe.html diff --git a/doc/html/extensions/vectorjep.html b/src/main/doc/html/extensions/vectorjep.html similarity index 100% rename from doc/html/extensions/vectorjep.html rename to src/main/doc/html/extensions/vectorjep.html diff --git a/doc/html/extensions/version.html b/src/main/doc/html/extensions/version.html similarity index 100% rename from doc/html/extensions/version.html rename to src/main/doc/html/extensions/version.html diff --git a/doc/html/extensions/xjep.html b/src/main/doc/html/extensions/xjep.html similarity index 100% rename from doc/html/extensions/xjep.html rename to src/main/doc/html/extensions/xjep.html diff --git a/doc/html/faq.html b/src/main/doc/html/faq.html similarity index 100% rename from doc/html/faq.html rename to src/main/doc/html/faq.html diff --git a/doc/html/functions.html b/src/main/doc/html/functions.html similarity index 100% rename from doc/html/functions.html rename to src/main/doc/html/functions.html diff --git a/doc/html/grammar.html b/src/main/doc/html/grammar.html similarity index 100% rename from doc/html/grammar.html rename to src/main/doc/html/grammar.html diff --git a/doc/html/img/.cvsignore b/src/main/doc/html/img/.cvsignore similarity index 100% rename from doc/html/img/.cvsignore rename to src/main/doc/html/img/.cvsignore diff --git a/doc/html/img/checkmark.gif b/src/main/doc/html/img/checkmark.gif similarity index 100% rename from doc/html/img/checkmark.gif rename to src/main/doc/html/img/checkmark.gif diff --git a/doc/html/img/new-window-icon.gif b/src/main/doc/html/img/new-window-icon.gif similarity index 100% rename from doc/html/img/new-window-icon.gif rename to src/main/doc/html/img/new-window-icon.gif diff --git a/doc/html/img/top.gif b/src/main/doc/html/img/top.gif similarity index 100% rename from doc/html/img/top.gif rename to src/main/doc/html/img/top.gif diff --git a/doc/html/index.html b/src/main/doc/html/index.html similarity index 100% rename from doc/html/index.html rename to src/main/doc/html/index.html diff --git a/doc/html/main.css b/src/main/doc/html/main.css similarity index 100% rename from doc/html/main.css rename to src/main/doc/html/main.css diff --git a/doc/html/operators.html b/src/main/doc/html/operators.html similarity index 100% rename from doc/html/operators.html rename to src/main/doc/html/operators.html diff --git a/doc/html/types.html b/src/main/doc/html/types.html similarity index 100% rename from doc/html/types.html rename to src/main/doc/html/types.html diff --git a/doc/html/variables.html b/src/main/doc/html/variables.html similarity index 100% rename from doc/html/variables.html rename to src/main/doc/html/variables.html diff --git a/doc/html/version.html b/src/main/doc/html/version.html similarity index 100% rename from doc/html/version.html rename to src/main/doc/html/version.html From 74cb051a21a3cd0aac57df9a695186f51b188304 Mon Sep 17 00:00:00 2001 From: Cosmin Stroe Date: Fri, 3 Feb 2017 08:12:18 -0600 Subject: [PATCH 08/11] move cvsignore entries into gitignore --- .cvsignore | 7 ------- .gitignore | 9 +++++++++ 2 files changed, 9 insertions(+), 7 deletions(-) delete mode 100644 .cvsignore diff --git a/.cvsignore b/.cvsignore deleted file mode 100644 index 651d5d0..0000000 --- a/.cvsignore +++ /dev/null @@ -1,7 +0,0 @@ -.classpath -.project -build -dist -.externalToolBuilders -.settings -disttemp diff --git a/.gitignore b/.gitignore index 92322c4..20f1a28 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,11 @@ .idea/ target/ + +.classpath +.project +build/ +dist/ +.externalToolBuilders +.settings/ +disttemp/ + From a4dd60500807b3fa86c2cbc1a955806592f0aa93 Mon Sep 17 00:00:00 2001 From: Cosmin Stroe Date: Fri, 3 Feb 2017 17:34:44 -0600 Subject: [PATCH 09/11] move expression to test resources --- src/{main/bin => test/resources}/JEPTestExpressions.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/{main/bin => test/resources}/JEPTestExpressions.txt (100%) diff --git a/src/main/bin/JEPTestExpressions.txt b/src/test/resources/JEPTestExpressions.txt similarity index 100% rename from src/main/bin/JEPTestExpressions.txt rename to src/test/resources/JEPTestExpressions.txt From 34b99574e0e0871f9ca7d3bdbf5437c7568b03e9 Mon Sep 17 00:00:00 2001 From: Cosmin Stroe Date: Fri, 3 Feb 2017 22:57:01 -0600 Subject: [PATCH 10/11] mvn test compiles --- .../java/org/lsmp/djepJUnit/DJepTest.java | 17 --- .../java/org/lsmp/djepJUnit/GroupJepTest.java | 54 ++++---- src/test/java/org/lsmp/djepJUnit/JepTest.java | 65 ++++----- src/test/java/org/lsmp/djepJUnit/MRpTest.java | 39 ++---- .../org/lsmp/djepJUnit/MatrixJepTest.java | 33 +---- .../java/org/lsmp/djepJUnit/RewriteTest.java | 29 +--- src/test/java/org/lsmp/djepJUnit/RpTest.java | 37 ++--- .../java/org/lsmp/djepJUnit/SJepTest.java | 52 ++++--- .../org/lsmp/djepJUnit/VectorJepTest.java | 35 +---- .../java/org/lsmp/djepJUnit/XJepTest.java | 47 +++---- .../java/org/nfunk/jeptesting/AllTests.java | 27 ---- .../java/org/nfunk/jeptesting/JEPTest.java | 128 ++++++------------ .../org/nfunk/jeptesting/LogarithmTest.java | 32 ++--- .../jeptesting/NaturalLogarithmTest.java | 33 ++--- 14 files changed, 190 insertions(+), 438 deletions(-) delete mode 100644 src/test/java/org/nfunk/jeptesting/AllTests.java diff --git a/src/test/java/org/lsmp/djepJUnit/DJepTest.java b/src/test/java/org/lsmp/djepJUnit/DJepTest.java index 22dd511..61b64aa 100644 --- a/src/test/java/org/lsmp/djepJUnit/DJepTest.java +++ b/src/test/java/org/lsmp/djepJUnit/DJepTest.java @@ -5,10 +5,6 @@ */ package org.lsmp.djepJUnit; -import junit.framework.Test; -import junit.framework.TestResult; -import junit.framework.TestSuite; - import org.lsmp.djep.djep.DJep; import org.lsmp.djep.djep.DSymbolTable; import org.nfunk.jep.Node; @@ -20,19 +16,6 @@ */ public class DJepTest extends XJepTest { - public DJepTest(String name) { - super(name); - } - - public static Test suite() { - return new TestSuite(DJepTest.class); - } - - public static void main(String[] args) { - TestSuite suite= new TestSuite(DJepTest.class); - suite.run(new TestResult()); - } - protected void setUp() { j = new DJep(); j.addStandardConstants(); diff --git a/src/test/java/org/lsmp/djepJUnit/GroupJepTest.java b/src/test/java/org/lsmp/djepJUnit/GroupJepTest.java index 2ed0438..067185e 100644 --- a/src/test/java/org/lsmp/djepJUnit/GroupJepTest.java +++ b/src/test/java/org/lsmp/djepJUnit/GroupJepTest.java @@ -1,13 +1,27 @@ package org.lsmp.djepJUnit; -import junit.framework.*; -import org.nfunk.jep.*; -import org.nfunk.jep.type.*; -import org.lsmp.djep.groupJep.interfaces.*; -import org.lsmp.djep.groupJep.values.*; -import org.lsmp.djep.groupJep.*; -import org.lsmp.djep.groupJep.groups.*; -import java.math.*; +import org.lsmp.djep.groupJep.GroupJep; +import org.lsmp.djep.groupJep.PolynomialVisitor; +import org.lsmp.djep.groupJep.groups.AlgebraicExtension; +import org.lsmp.djep.groupJep.groups.ExtendedFreeGroup; +import org.lsmp.djep.groupJep.groups.FreeGroup; +import org.lsmp.djep.groupJep.groups.Integers; +import org.lsmp.djep.groupJep.groups.Quaternions; +import org.lsmp.djep.groupJep.groups.Rationals; +import org.lsmp.djep.groupJep.groups.Reals; +import org.lsmp.djep.groupJep.groups.Zn; +import org.lsmp.djep.groupJep.interfaces.RingI; +import org.lsmp.djep.groupJep.values.FreeGroupElement; +import org.lsmp.djep.groupJep.values.HasComplexValueI; +import org.lsmp.djep.groupJep.values.Polynomial; +import org.nfunk.jep.JEP; +import org.nfunk.jep.Node; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +import java.math.BigInteger; + +import static org.junit.jupiter.api.Assertions.assertEquals; /* @author rich * Created on 19-Nov-2003 */ @@ -18,35 +32,15 @@ * @author Rich Morris * Created on 19-Nov-2003 */ -public class GroupJepTest extends TestCase { +public class GroupJepTest { GroupJep j; public static final boolean SHOW_BAD=false; - - public GroupJepTest(String name) { - super(name); - } - - public static void main(String args[]) { - // Create an instance of this class and analyse the file - - TestSuite suite= new TestSuite(GroupJepTest.class); -// DJepTest jt = new DJepTest("DJepTest"); -// jt.setUp(); - suite.run(new TestResult()); - } - - protected void setUp() { - } - - public static Test suite() { - return new TestSuite(GroupJepTest.class); - } public void myAssertEquals(String msg,String expected,String actual) { if(!actual.equals(expected)) System.out.println("Error \""+msg+"\" is \""+actual+" should be "+expected+"\""); - assertEquals("<"+msg+">",expected,actual); + assertEquals(expected, actual, "<"+msg+">"); System.out.println("Success: Value of \""+msg+"\" is \""+actual+"\""); } diff --git a/src/test/java/org/lsmp/djepJUnit/JepTest.java b/src/test/java/org/lsmp/djepJUnit/JepTest.java index 4824178..ea28ca4 100644 --- a/src/test/java/org/lsmp/djepJUnit/JepTest.java +++ b/src/test/java/org/lsmp/djepJUnit/JepTest.java @@ -1,8 +1,17 @@ package org.lsmp.djepJUnit; -import junit.framework.*; -import org.nfunk.jep.*; -import org.nfunk.jep.type.*; +import org.junit.jupiter.api.BeforeEach; +import org.nfunk.jep.JEP; +import org.nfunk.jep.Node; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.closeTo; +import static org.hamcrest.Matchers.is; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; /* @author rich * Created on 19-Nov-2003 @@ -12,35 +21,11 @@ * @author Rich Morris * Created on 19-Nov-2003 */ -public class JepTest extends TestCase { +public class JepTest { JEP j; - public static final boolean SHOW_BAD=false; - - public JepTest(String name) { - super(name); - } - - /** - * Create a test suite. - * @return the TestSuite - */ - public static Test suite() { - return new TestSuite(JepTest.class); - } + public static final boolean SHOW_BAD = false; - /** - * Main entry point. - * @param args - */ - public static void main(String args[]) { - // Create an instance of this class and analyse the file - - TestSuite suite= new TestSuite(JepTest.class); - suite.run(new TestResult()); - } - /** - * Run before each test. - */ + @BeforeEach protected void setUp() { j = new JEP(); j.addStandardConstants(); @@ -63,24 +48,24 @@ public void myAssertEquals(String msg,Object expected,Object actual) { if(!actual.equals(expected)) System.out.println("Error: '"+msg+"' is '"+actual+"' should be '"+expected+"'"); - assertEquals("<"+msg+">",expected,actual); + assertEquals(expected,actual, "<"+msg+">"); System.out.println("Success: Value of \""+msg+"\" is "+actual+""); } public void myAssertNaN(String msg,Object actual) { if(actual instanceof Double) { - if(Double.isNaN( ((Double) actual).doubleValue()) ) { + if(Double.isNaN((Double) actual) ) { System.out.println("Success: Value of \""+msg+"\" is "+actual+""); } else { System.out.println("Error: \""+msg+"\" is '"+actual+"' should be NaN"); - assertTrue("<"+msg+"> is "+actual+" should be NaN",false); + assertTrue(false, "<"+msg+"> is "+actual+" should be NaN"); } } else { System.out.println("Error: '"+msg+"' is '"+actual+"' should be 'NaN'"); - assertTrue("<"+msg+">",false); + assertTrue(false, "<"+msg+">"); } } @@ -152,18 +137,18 @@ public void valueTest(String expr,double a,double tol) throws Exception { Object res = calcValue(expr); if(res instanceof Double) { - double val = ((Double) res).doubleValue(); + double val = (Double) res; if(Math.abs(val-a) expected: <"+a+"> but was <"+res+">",false); + assertTrue(false, "<"+expr+"> expected: <"+a+"> but was <"+res+">"); } } @@ -181,7 +166,7 @@ public void complexValueTest(String expr,Complex expected,double tol) throws Exc System.out.println("Success value of \""+expr+"\" is "+res); else { System.out.println("Error value of \""+expr+"\" is "+res+" should be "+expected); - assertTrue("<"+expr+"> expected: <"+expected+"> but was <"+res+">",false); + assertTrue(false, "<"+expr+"> expected: <"+expected+"> but was <"+res+">"); } } @@ -426,8 +411,8 @@ public void testAssign2() parser.parseExpression("AB=3"); // AB = 8 System.out.println("AB=3"+parser.getValue()); parser.parseExpression("AB+2"); - double result= parser.getValue(); // Result = 17 - assertEquals("",5.0,result,0.0); + double result = parser.getValue(); // Result = 17 + assertThat("", result, is(closeTo(5.0, 0.0001))); } boolean isExpressionValid(String expression) diff --git a/src/test/java/org/lsmp/djepJUnit/MRpTest.java b/src/test/java/org/lsmp/djepJUnit/MRpTest.java index f6198d8..1128554 100644 --- a/src/test/java/org/lsmp/djepJUnit/MRpTest.java +++ b/src/test/java/org/lsmp/djepJUnit/MRpTest.java @@ -1,13 +1,19 @@ package org.lsmp.djepJUnit; -import junit.framework.*; -import org.nfunk.jep.*; -import org.nfunk.jep.type.*; -import org.lsmp.djep.matrixJep.*; +import org.lsmp.djep.matrixJep.MatrixJep; import org.lsmp.djep.mrpe.MRpCommandList; import org.lsmp.djep.mrpe.MRpEval; import org.lsmp.djep.mrpe.MRpRes; -import org.lsmp.djep.vectorJep.values.*; +import org.lsmp.djep.vectorJep.values.MVector; +import org.lsmp.djep.vectorJep.values.Matrix; +import org.lsmp.djep.vectorJep.values.MatrixValueI; +import org.nfunk.jep.Node; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; /* @author rich * Created on 19-Nov-2003 @@ -19,27 +25,11 @@ * @author Rich Morris * Created on 19-Nov-2003 */ -public class MRpTest extends TestCase { +public class MRpTest { MatrixJep mj; MRpEval mrpe; public static final boolean SHOW_BAD=false; - public MRpTest(String name) { - super(name); - } - - public static Test suite() { - return new TestSuite(MRpTest.class); - } - - public static void main(String args[]) { - // Create an instance of this class and analyse the file - - TestSuite suite= new TestSuite(MRpTest.class); -// DJepTest jt = new DJepTest("DJepTest"); -// jt.setUp(); - suite.run(new TestResult()); - } /** strings for each variable */ String matStrs[][] = new String[10][10]; String matStrsB[][] = new String[10][10]; @@ -128,7 +118,7 @@ public void valueTest(String expr,Object expected) throws ParseException Object res = calcValue(expr); if(mj.hasError()) fail("Evaluation Failure: "+expr+mj.getErrorInfo()); - assertEquals("<"+expr+">",expected,res); + assertEquals(expected, res, "<"+expr+">"); System.out.println("Success value of <"+expr+"> is "+res); } @@ -145,8 +135,7 @@ public void complexValueTest(String expr,Complex expected,double tol) throws Exc { Node node = mj.preprocess(mj.parse(expr)); Object res = mj.evaluate(node); - assertTrue("<"+expr+"> expected: <"+expected+"> but was <"+res+">", - expected.equals((Complex) res,tol)); + assertTrue(expected.equals((Complex) res,tol), "<"+expr+"> expected: <"+expected+"> but was <"+res+">"); System.out.println("Sucess value of <"+expr+"> is "+res); } diff --git a/src/test/java/org/lsmp/djepJUnit/MatrixJepTest.java b/src/test/java/org/lsmp/djepJUnit/MatrixJepTest.java index 0e69a2b..dd7139f 100644 --- a/src/test/java/org/lsmp/djepJUnit/MatrixJepTest.java +++ b/src/test/java/org/lsmp/djepJUnit/MatrixJepTest.java @@ -5,46 +5,17 @@ */ package org.lsmp.djepJUnit; +import org.junit.jupiter.api.BeforeEach; import org.lsmp.djep.matrixJep.MatrixJep; import org.nfunk.jep.Node; import org.nfunk.jep.ParseException; -import junit.framework.Test; -import junit.framework.TestResult; -import junit.framework.TestSuite; - /** * @author Rich Morris * Created on 22-Apr-2005 */ public class MatrixJepTest extends DJepTest { - - /** - * @param name - */ - public MatrixJepTest(String name) { - super(name); - // TODO Auto-generated constructor stub - } - /** - * Create a test suite. - * @return the TestSuite - */ - public static Test suite() { - return new TestSuite(MatrixJepTest.class); - } - - /** - * Main entry point. - * @param args - */ - public static void main(String args[]) { - // Create an instance of this class and analyse the file - - TestSuite suite= new TestSuite(MatrixJepTest.class); - suite.run(new TestResult()); - } - + @BeforeEach protected void setUp() { j = new MatrixJep(); j.addStandardConstants(); diff --git a/src/test/java/org/lsmp/djepJUnit/RewriteTest.java b/src/test/java/org/lsmp/djepJUnit/RewriteTest.java index 1469c10..cd2ec77 100644 --- a/src/test/java/org/lsmp/djepJUnit/RewriteTest.java +++ b/src/test/java/org/lsmp/djepJUnit/RewriteTest.java @@ -1,10 +1,12 @@ package org.lsmp.djepJUnit; -import junit.framework.*; - -import org.nfunk.jep.*; -import org.lsmp.djep.djep.*; -import org.lsmp.djep.rewrite.*; +import org.lsmp.djep.djep.DJep; +import org.lsmp.djep.rewrite.CollectPowers; +import org.lsmp.djep.rewrite.ExpandBrackets; +import org.lsmp.djep.rewrite.RewriteRuleI; +import org.lsmp.djep.rewrite.RewriteVisitor; +import org.nfunk.jep.Node; +import org.nfunk.jep.ParseException; /* @author rich * Created on 19-Nov-2003 @@ -17,23 +19,6 @@ public class RewriteTest extends DJepTest { DJep j; public static final boolean SHOW_BAD=false; - - public RewriteTest(String name) { - super(name); - } - - public static void main(String args[]) { - // Create an instance of this class and analyse the file - - TestSuite suite= new TestSuite(RewriteTest.class); -// DJepTest jt = new DJepTest("DJepTest"); -// jt.setUp(); - suite.run(new TestResult()); - } - - public static Test suite() { - return new TestSuite(RewriteTest.class); - } public void testRewrite() throws Exception { diff --git a/src/test/java/org/lsmp/djepJUnit/RpTest.java b/src/test/java/org/lsmp/djepJUnit/RpTest.java index da0b6e8..91cced6 100644 --- a/src/test/java/org/lsmp/djepJUnit/RpTest.java +++ b/src/test/java/org/lsmp/djepJUnit/RpTest.java @@ -1,10 +1,16 @@ package org.lsmp.djepJUnit; -import junit.framework.*; -import org.nfunk.jep.*; -import org.nfunk.jep.type.*; -import org.lsmp.djep.rpe.*; +import org.lsmp.djep.rpe.RpCommandList; +import org.lsmp.djep.rpe.RpEval; import org.lsmp.djep.xjep.XJep; +import org.nfunk.jep.JEP; +import org.nfunk.jep.Node; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; /* @author rich * Created on 19-Nov-2003 @@ -16,22 +22,10 @@ * @author Rich Morris * Created on 19-Nov-2003 */ -public class RpTest extends TestCase { +public class RpTest { JEP j; public static final boolean SHOW_BAD=false; - public RpTest(String name) { - super(name); - } - - public static void main(String args[]) { - // Create an instance of this class and analyse the file - - TestSuite suite= new TestSuite(RpTest.class); -// DJepTest jt = new DJepTest("DJepTest"); -// jt.setUp(); - suite.run(new TestResult()); - } /** strings for each variable */ String matStrs[][] = new String[10][10]; String vecStrs[] = new String[10]; @@ -48,10 +42,6 @@ protected void setUp() { } - public static Test suite() { - return new TestSuite(RpTest.class); - } - public void testGood() { assertEquals(1,1); @@ -75,7 +65,7 @@ public void valueTest(String expr,Object expected) throws ParseException,Excepti Object res = j.evaluate(node); if(j.hasError()) fail("Evaluation Failure: "+expr+j.getErrorInfo()); - assertEquals("<"+expr+">",expected,res); + assertEquals(expected, res, "<"+expr+">"); System.out.println("Sucess value of <"+expr+"> is "+res); } @@ -93,8 +83,7 @@ public void complexValueTest(String expr,Complex expected,double tol) throws Exc { Node node = j.parse(expr); Object res = j.evaluate(node); - assertTrue("<"+expr+"> expected: <"+expected+"> but was <"+res+">", - expected.equals((Complex) res,tol)); + assertTrue(expected.equals((Complex) res,tol), "<"+expr+"> expected: <"+expected+"> but was <"+res+">"); System.out.println("Sucess value of <"+expr+"> is "+res); } diff --git a/src/test/java/org/lsmp/djepJUnit/SJepTest.java b/src/test/java/org/lsmp/djepJUnit/SJepTest.java index c8e1b95..0fbe629 100644 --- a/src/test/java/org/lsmp/djepJUnit/SJepTest.java +++ b/src/test/java/org/lsmp/djepJUnit/SJepTest.java @@ -1,12 +1,21 @@ package org.lsmp.djepJUnit; -import junit.framework.*; -import org.nfunk.jep.*; -import org.nfunk.jep.type.*; -import org.lsmp.djep.xjep.*; -import org.lsmp.djep.djep.*; +import org.junit.jupiter.api.BeforeEach; +import org.lsmp.djep.djep.DJep; +import org.lsmp.djep.sjep.PNodeI; +import org.lsmp.djep.sjep.PolynomialCreator; +import org.lsmp.djep.xjep.PrintVisitor; +import org.lsmp.djep.xjep.XOperator; +import org.nfunk.jep.Node; +import org.nfunk.jep.OperatorSet; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + import java.text.NumberFormat; -import org.lsmp.djep.sjep.*; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; /* @author rich * Created on 19-Nov-2003 */ @@ -15,25 +24,13 @@ * @author Rich Morris * Created on 19-Nov-2003 */ -public class SJepTest extends TestCase { +public class SJepTest { DJep j; PolynomialCreator pc; public static final boolean SHOW_BAD=false; - - public SJepTest(String name) { - super(name); - } - - public static void main(String args[]) { - // Create an instance of this class and analyse the file - - TestSuite suite= new TestSuite(SJepTest.class); -// DJepTest jt = new DJepTest("DJepTest"); -// jt.setUp(); - suite.run(new TestResult()); - } + @BeforeEach protected void setUp() { j = new DJep(); j.addStandardConstants(); @@ -47,15 +44,11 @@ protected void setUp() { pc = new PolynomialCreator(j); } - public static Test suite() { - return new TestSuite(SJepTest.class); - } - public void myAssertEquals(String msg,String actual,String expected) { if(!actual.equals(expected)) System.out.println("Error \""+msg+"\" is \""+actual+" should be "+expected+"\""); - assertEquals("<"+msg+">",expected,actual); + assertEquals(expected,actual, "<"+msg+">"); System.out.println("Success: Value of \""+msg+"\" is \""+actual+"\""); } @@ -71,7 +64,7 @@ public void assertPolynomialEquals(String s1,String s2) throws ParseException System.out.println("Sucess: \""+s1+"\" equals \""+s2+"\""); }else{ System.out.println("Error: \""+s1+"\" is not equal to \""+s2+"\""); - assertTrue("<"+s1+"> should be equal to <"+s2+"> it is not",false); + assertTrue(false, "<"+s1+"> should be equal to <"+s2+"> it is not"); } } /** just test JUnit working OK */ @@ -84,21 +77,22 @@ public void valueTest(String expr,double dub) throws Exception { valueTest(expr,new Double(dub)); } + public void valueTest(String expr,Object expected) throws Exception { Node node = j.parse(expr); Node n2 = j.preprocess(node); Object res = j.evaluate(n2); - assertEquals("<"+expr+">",expected,res); + assertEquals(expected,res, "<"+expr+">"); System.out.println("Success value of <"+expr+"> is "+res); } + public void complexValueTest(String expr,Complex expected,double tol) throws Exception { Node node = j.parse(expr); Node n2 = j.preprocess(node); Object res = j.evaluate(n2); - assertTrue("<"+expr+"> expected: <"+expected+"> but was <"+res+">", - expected.equals((Complex) res,tol)); + assertTrue(expected.equals((Complex) res,tol), "<"+expr+"> expected: <"+expected+"> but was <"+res+">"); System.out.println("Success value of <"+expr+"> is "+res); } diff --git a/src/test/java/org/lsmp/djepJUnit/VectorJepTest.java b/src/test/java/org/lsmp/djepJUnit/VectorJepTest.java index fb37afd..dfd60ce 100644 --- a/src/test/java/org/lsmp/djepJUnit/VectorJepTest.java +++ b/src/test/java/org/lsmp/djepJUnit/VectorJepTest.java @@ -5,46 +5,15 @@ */ package org.lsmp.djepJUnit; +import org.junit.jupiter.api.BeforeEach; import org.lsmp.djep.vectorJep.VectorJep; import org.nfunk.jep.ParseException; - -import junit.framework.Test; -import junit.framework.TestResult; -import junit.framework.TestSuite; - /** * @author Rich Morris * Created on 22-Apr-2005 */ public class VectorJepTest extends JepTest { - - /** - * @param name - */ - public VectorJepTest(String name) { - super(name); - // TODO Auto-generated constructor stub - } - - /** - * Create a test suite. - * @return the TestSuite - */ - public static Test suite() { - return new TestSuite(VectorJepTest.class); - } - - /** - * Main entry point. - * @param args - */ - public static void main(String args[]) { - // Create an instance of this class and analyse the file - - TestSuite suite= new TestSuite(VectorJepTest.class); - suite.run(new TestResult()); - } - + @BeforeEach protected void setUp() { j = new VectorJep(); j.addStandardConstants(); diff --git a/src/test/java/org/lsmp/djepJUnit/XJepTest.java b/src/test/java/org/lsmp/djepJUnit/XJepTest.java index 8a34d68..a86fcd9 100644 --- a/src/test/java/org/lsmp/djepJUnit/XJepTest.java +++ b/src/test/java/org/lsmp/djepJUnit/XJepTest.java @@ -5,16 +5,24 @@ */ package org.lsmp.djepJUnit; +import org.lsmp.djep.xjep.BaseFormat; +import org.lsmp.djep.xjep.MacroFunction; +import org.lsmp.djep.xjep.PrintVisitor; +import org.lsmp.djep.xjep.XJep; +import org.lsmp.djep.xjep.XOperator; +import org.nfunk.jep.Node; +import org.nfunk.jep.OperatorSet; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.type.Complex; + import java.text.NumberFormat; import java.util.Vector; -import org.nfunk.jep.*; -import org.nfunk.jep.type.Complex; -import org.lsmp.djep.xjep.*; - -import junit.framework.Test; -import junit.framework.TestResult; -import junit.framework.TestSuite; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; /** * @author Rich Morris @@ -22,19 +30,6 @@ */ public class XJepTest extends JepTest { - public XJepTest(String name) { - super(name); - } - - public static Test suite() { - return new TestSuite(XJepTest.class); - } - - public static void main(String[] args) { - TestSuite suite= new TestSuite(XJepTest.class); - suite.run(new TestResult()); - } - protected void setUp() { j = new XJep(); j.addStandardConstants(); @@ -324,7 +319,7 @@ public void testReentrant() throws ParseException,Exception node = xj.continueParsing(); myAssertEquals("..., z=x+y;","3.0",calcValue(node).toString()); node = xj.continueParsing(); - assertNull("empty string ",node); + assertNull(node, "empty string "); } @@ -359,10 +354,10 @@ public void testVarInEqn() throws Exception Node n1 = j.parse("a+b+c+d"); Vector v = xj.getVarsInEquation(n1,new Vector()); - assertTrue("Does not contain a",v.contains(j.getSymbolTable().getVar("a"))); - assertTrue("Does not contain b",v.contains(j.getSymbolTable().getVar("b"))); - assertTrue("Does not contain c",v.contains(j.getSymbolTable().getVar("c"))); - assertTrue("Does not contain d",v.contains(j.getSymbolTable().getVar("d"))); + assertTrue(v.contains(j.getSymbolTable().getVar("a")), "Does not contain a"); + assertTrue(v.contains(j.getSymbolTable().getVar("b")), "Does not contain b"); + assertTrue(v.contains(j.getSymbolTable().getVar("c")), "Does not contain c"); + assertTrue(v.contains(j.getSymbolTable().getVar("d")), "Does not contain d"); xj.preprocess(j.parse("x=a+b t")); xj.preprocess(j.parse("y=c+d t")); @@ -383,7 +378,7 @@ public void testVarInEqn() throws Exception v3.add(j.getVar("g")); System.out.println(v2.toString()); - assertEquals("Bad element seq",v3,v2); + assertArrayEquals(v3.toArray(), v2.toArray(), "Bad element seq"); } public void testUndecVar() throws ParseException { diff --git a/src/test/java/org/nfunk/jeptesting/AllTests.java b/src/test/java/org/nfunk/jeptesting/AllTests.java deleted file mode 100644 index 1fc2cc0..0000000 --- a/src/test/java/org/nfunk/jeptesting/AllTests.java +++ /dev/null @@ -1,27 +0,0 @@ -/***************************************************************************** - -@header@ -@date@ -@copyright@ -@license@ - -*****************************************************************************/ - -package org.nfunk.jeptesting; - -import junit.framework.*; - -public class AllTests { - - public static void main (String[] args) { - junit.textui.TestRunner.run(suite()); - } - - public static Test suite() { - TestSuite suite = new TestSuite("All JUnit Tests"); - suite.addTest(new JEPTest("testParseExpression")); - suite.addTest(new LogarithmTest("testLogarithm")); - suite.addTest(new NaturalLogarithmTest("testNaturalLogarithm")); - return suite; - } -} diff --git a/src/test/java/org/nfunk/jeptesting/JEPTest.java b/src/test/java/org/nfunk/jeptesting/JEPTest.java index 5f8e4b4..55d8dcf 100644 --- a/src/test/java/org/nfunk/jeptesting/JEPTest.java +++ b/src/test/java/org/nfunk/jeptesting/JEPTest.java @@ -9,13 +9,19 @@ package org.nfunk.jeptesting; -import java.io.*; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.nfunk.jep.JEP; +import org.nfunk.jep.type.Complex; -import junit.framework.Assert; -import junit.framework.TestCase; +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; -import org.nfunk.jep.*; -import org.nfunk.jep.type.Complex; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * This class is designed for testing the validity of JEP evaluations. @@ -27,38 +33,15 @@ *3. * The expressions '1+2' and '3' are evaluated with JEP and the results compared. */ -public class JEPTest extends TestCase { +public class JEPTest { /** The parser */ - JEP myParser; + private JEP myParser; /** Current line position */ - int lineCount; + private int lineCount; - /** - * Constructor - * - public JEPTester() { - // Set up the parser - myParser = new JEP(); - myParser.setImplicitMul(true); - myParser.addStandardFunctions(); - myParser.addStandardConstants(); - myParser.addComplex(); - myParser.setTraverse(false); - lineCount = 0; - }*/ - - /** - * Creates a new JEPTest instance - */ - public JEPTest(String name) { - super(name); - } - - /** - * Sets up the parser. - */ + @BeforeEach public void setUp() { // Set up the parser myParser = new JEP(); @@ -69,56 +52,26 @@ public void setUp() { myParser.setTraverse(false); lineCount = 0; } - - /** - * Runs the test. - */ - public void runTest() { - String fileName = "JEPTestExpressions.txt"; - testWithFile(fileName); - testGetValue(); - testGetComplexValue(); - testOpSetBug(); - } - - /** - * The main method checks the arguments and creates an instance - * and calls it's run method. - */ - public static void main(String args[]) { - String fileName; - - // get filename from argument, or use default - if (args!=null && args.length>0) { - fileName = args[0]; - } else { - fileName = "JEPTestExpressions.txt"; - println("Using default input file: " + fileName); - println("Start with \"java org.nfunk.jepexamples."+ - "JEPTest \" to load a different input file."); - } - - // Create an instance of this class and analyse the file - JEPTest jt = new JEPTest("JEP Test"); - jt.setUp(); - jt.testWithFile(fileName); - } /** * Loads the file specified in fileName. Evaluates the expressions listed * in it and compares the expressions with the results. */ - public void testWithFile(String fileName) { + @Test + public void testWithFile() { + final String resource = "/JEPTestExpressions.txt"; + InputStream ios = JEPTest.class.getResourceAsStream(resource); + BufferedReader reader; Object v1, v2; boolean hasError = false; // Load the input file try { - reader = new BufferedReader(new FileReader(fileName)); + reader = new BufferedReader(new InputStreamReader(ios)); } catch (Exception e) { - Assert.assertTrue(false); - println("File \""+fileName+"\" not found"); + assertTrue(false); + println("File \""+resource+"\" not found"); return; } @@ -230,50 +183,47 @@ private boolean equal(Object param1, Object param2) throws Exception // throw new Exception("Unable to compare the values of this type"); } - /** - * Test the getValue() method. - */ + @Test + @DisplayName("Test the getValue() method") public void testGetValue() { // Test whether a normal double value is returned correctly myParser.parseExpression("2.1345"); - Assert.assertEquals(myParser.getValue(), 2.1345, 0); + assertEquals(myParser.getValue(), 2.1345, 0.00001); - // Test whether NaN is returned for Somplex numbers + // Test whether NaN is returned for Complex numbers myParser.parseExpression("i"); - Assert.assertTrue(Double.isNaN(myParser.getValue())); + assertTrue(Double.isNaN(myParser.getValue())); // Test whether NaN is returned for String results myParser.parseExpression("\"asdf\""); - Assert.assertTrue(Double.isNaN(myParser.getValue())); + assertTrue(Double.isNaN(myParser.getValue())); } - /** - * Test the getComplexValue() method. - */ + @Test + @DisplayName("Test the getComplexValue() method.") public void testGetComplexValue() { // Test whether a normal double value is returned as a Complex myParser.parseExpression("2.1345"); - Assert.assertTrue(new Complex(2.1345, 0).equals( + assertTrue(new Complex(2.1345, 0).equals( myParser.getComplexValue(), 0)); // Test whether (0, 1) is returned for i myParser.parseExpression("i"); Complex z = myParser.getComplexValue(); - Assert.assertTrue(z != null); - Assert.assertTrue(z.re() == 0); - Assert.assertTrue(z.im() == 1); + assertTrue(z != null); + assertTrue(z.re() == 0); + assertTrue(z.im() == 1); // Test whether NaN is returned for String results myParser.parseExpression("\"asdf\""); - Assert.assertTrue(Double.isNaN(myParser.getValue())); + assertTrue(Double.isNaN(myParser.getValue())); } - /** - * Tests the uninitialized OperatorSet bug 1061200 - */ + @Test + @DisplayName("Tests the uninitialized OperatorSet bug 1061200") public void testOpSetBug() { JEP j = new JEP(false, true, true, null); - Assert.assertNotNull(j.getOperatorSet()); + assertNotNull(j.getOperatorSet()); } /** diff --git a/src/test/java/org/nfunk/jeptesting/LogarithmTest.java b/src/test/java/org/nfunk/jeptesting/LogarithmTest.java index 38588c3..8254bf6 100644 --- a/src/test/java/org/nfunk/jeptesting/LogarithmTest.java +++ b/src/test/java/org/nfunk/jeptesting/LogarithmTest.java @@ -1,37 +1,25 @@ package org.nfunk.jeptesting; +import org.junit.jupiter.api.Test; import org.nfunk.jep.ParseException; import org.nfunk.jep.function.Logarithm; -import junit.framework.Assert; -import junit.framework.TestCase; +import java.util.Stack; -public class LogarithmTest extends TestCase { - - LogarithmTest(String name) { - super(name); - } +import static org.junit.jupiter.api.Assertions.assertTrue; +public class LogarithmTest { /** * Test method for 'org.nfunk.jep.function.Logarithm.run(Stack)' * Tests the return value of log(NaN). This is a test for bug #1177557 */ - public void testLogarithm() { + @Test + public void testLogarithm() throws ParseException { Logarithm logFunction = new Logarithm(); - java.util.Stack stack = new java.util.Stack(); - stack.push(new Double(Double.NaN)); - try { - logFunction.run(stack); - } catch (ParseException e) { - Assert.fail(); - } - Object returnValue = stack.pop(); - - if (returnValue instanceof Double) { - Assert.assertTrue(Double.isNaN(((Double)returnValue).doubleValue())); - } else { - Assert.fail(); - } + Stack stack = new Stack<>(); + stack.push(Double.NaN); + logFunction.run(stack); + assertTrue(Double.isNaN(stack.pop())); } } diff --git a/src/test/java/org/nfunk/jeptesting/NaturalLogarithmTest.java b/src/test/java/org/nfunk/jeptesting/NaturalLogarithmTest.java index 82f5bf5..22a4c6d 100644 --- a/src/test/java/org/nfunk/jeptesting/NaturalLogarithmTest.java +++ b/src/test/java/org/nfunk/jeptesting/NaturalLogarithmTest.java @@ -1,37 +1,24 @@ package org.nfunk.jeptesting; +import org.junit.jupiter.api.Test; import org.nfunk.jep.ParseException; import org.nfunk.jep.function.NaturalLogarithm; -import junit.framework.Assert; -import junit.framework.TestCase; +import java.util.Stack; -public class NaturalLogarithmTest extends TestCase { - - NaturalLogarithmTest(String name) { - super(name); - } +import static org.junit.jupiter.api.Assertions.assertTrue; +public class NaturalLogarithmTest { /** * Test method for 'org.nfunk.jep.function.Logarithm.run(Stack)' * Tests the return value of log(NaN). This is a test for bug #1177557 */ - public void testNaturalLogarithm() { + @Test + public void testNaturalLogarithm() throws ParseException { NaturalLogarithm logFunction = new NaturalLogarithm(); - java.util.Stack stack = new java.util.Stack(); - stack.push(new Double(Double.NaN)); - try { - logFunction.run(stack); - } catch (ParseException e) { - Assert.fail(); - } - Object returnValue = stack.pop(); - - if (returnValue instanceof Double) { - Assert.assertTrue(Double.isNaN(((Double)returnValue).doubleValue())); - } else { - Assert.fail(); - } + Stack stack = new Stack<>(); + stack.push(Double.NaN); + logFunction.run(stack); + assertTrue(Double.isNaN(stack.pop())); } - } From 23625f5da0cde10f7b3e2cb18755f51ca7542862 Mon Sep 17 00:00:00 2001 From: Cosmin Stroe Date: Sat, 4 Feb 2017 08:43:18 -0600 Subject: [PATCH 11/11] enable all the tests again --- .../lsmp/djep/vectorJep/values/Scaler.java | 10 +- .../java/org/lsmp/djepJUnit/DJepTest.java | 7 +- .../java/org/lsmp/djepJUnit/GroupJepTest.java | 25 +++-- src/test/java/org/lsmp/djepJUnit/JepTest.java | 95 +++++++++++-------- src/test/java/org/lsmp/djepJUnit/MRpTest.java | 23 ++++- .../org/lsmp/djepJUnit/MatrixJepTest.java | 16 +++- .../java/org/lsmp/djepJUnit/RewriteTest.java | 8 +- src/test/java/org/lsmp/djepJUnit/RpTest.java | 22 ++++- .../java/org/lsmp/djepJUnit/SJepTest.java | 28 ++++-- .../org/lsmp/djepJUnit/VectorJepTest.java | 20 +++- .../java/org/lsmp/djepJUnit/XJepTest.java | 4 +- 11 files changed, 181 insertions(+), 77 deletions(-) diff --git a/src/main/java/org/lsmp/djep/vectorJep/values/Scaler.java b/src/main/java/org/lsmp/djep/vectorJep/values/Scaler.java index 64f8471..a7c2071 100644 --- a/src/main/java/org/lsmp/djep/vectorJep/values/Scaler.java +++ b/src/main/java/org/lsmp/djep/vectorJep/values/Scaler.java @@ -14,6 +14,7 @@ * TODO don't implement number! So what if a scaler is a boolean */ public class Scaler extends Number implements MatrixValueI { + public static final double PRECISION = 0.00000000000001; private static final long serialVersionUID = 336717881577257953L; Object value; @@ -69,10 +70,13 @@ public boolean equals(Object obj) { if(!(obj instanceof Scaler)) return false; Scaler s = (Scaler) obj; if(!s.getDim().equals(getDim())) return false; - if(!value.equals(s.value)) return false; - return true; + + double diff = Math.abs((Double)value - (Double)s.value); + if(diff > PRECISION) return false; + + return true; } - + /** * Always override hashCode when you override equals. * Effective Java, Joshua Bloch, Sun Press diff --git a/src/test/java/org/lsmp/djepJUnit/DJepTest.java b/src/test/java/org/lsmp/djepJUnit/DJepTest.java index 61b64aa..a0f9f89 100644 --- a/src/test/java/org/lsmp/djepJUnit/DJepTest.java +++ b/src/test/java/org/lsmp/djepJUnit/DJepTest.java @@ -5,6 +5,8 @@ */ package org.lsmp.djepJUnit; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.lsmp.djep.djep.DJep; import org.lsmp.djep.djep.DSymbolTable; import org.nfunk.jep.Node; @@ -15,7 +17,7 @@ * Created on 22-Apr-2005 */ public class DJepTest extends XJepTest { - + @BeforeEach protected void setUp() { j = new DJep(); j.addStandardConstants(); @@ -28,6 +30,7 @@ protected void setUp() { ((DJep) j).addStandardDiffRules(); } + @Test public void testDiff() throws ParseException { System.out.println("\nTesting assignment"); @@ -104,6 +107,7 @@ public void testDiff() throws ParseException // addDiffRule(new PassThroughDiffRule(this,"\"==\"",new Comparative(5))); } + @Test public void testAssignDiff() throws Exception { System.out.println("\nTesting assignment and diff"); @@ -122,6 +126,7 @@ public void testAssignDiff() throws Exception } + @Test public void testChainedVaraibles() throws Exception { simplifyTestString("x=5","x=5.0"); diff --git a/src/test/java/org/lsmp/djepJUnit/GroupJepTest.java b/src/test/java/org/lsmp/djepJUnit/GroupJepTest.java index 067185e..31e91c3 100644 --- a/src/test/java/org/lsmp/djepJUnit/GroupJepTest.java +++ b/src/test/java/org/lsmp/djepJUnit/GroupJepTest.java @@ -1,5 +1,7 @@ package org.lsmp.djepJUnit; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import org.lsmp.djep.groupJep.GroupJep; import org.lsmp.djep.groupJep.PolynomialVisitor; import org.lsmp.djep.groupJep.groups.AlgebraicExtension; @@ -48,11 +50,11 @@ public void myAssertEquals(String msg,String expected,String actual,String endin { if(!actual.equals(expected)) System.out.println("Error \""+msg+"\" is \""+actual+" should be "+expected+"\""); - assertEquals("<"+msg+">",expected,actual); + assertEquals(expected,actual, "<"+msg+">"); System.out.println("Success: Value of \""+msg+"\" is \""+actual+"\": "+ending); } - /** just test JUnit working OK */ + @Test @DisplayName("just test JUnit working OK") public void testGood() { assertEquals(1,1); @@ -72,14 +74,14 @@ public void valueToStringTest(String expr,String expected) throws Exception myAssertEquals(expr,expected,res,ending); } - /** Tests very large numbers, 20! */ + @Test @DisplayName("Tests very large numbers, 20!") public void testZ() throws Exception { j = new GroupJep(new Integers()); valueToStringTest("1*2*3*4*5*6*7*8*9*10*11*12*13*14*15*16*17*18*19*20","2432902008176640000"); } - /** Tests rationals */ + @Test @DisplayName("Tests rationals") public void testQ() throws Exception { j = new GroupJep(new Rationals()); @@ -87,7 +89,7 @@ public void testQ() throws Exception valueToStringTest("(1/2)-(1/3)","1/6"); } - /** Tests Quaternions */ + @Test @DisplayName("Tests Quaternions") public void testQuartonians() throws Exception { j = new GroupJep(new Quaternions()); @@ -96,7 +98,7 @@ public void testQuartonians() throws Exception valueToStringTest("i*j","-k"); } - /** Tests integers mod 5 */ + @Test @DisplayName("Tests integers mod 5 ") public void testZn() throws Exception { j = new GroupJep(new Zn(BigInteger.valueOf(5))); @@ -115,6 +117,7 @@ public void testZn() throws Exception valueToStringTest("4/3","3"); } + @Test public void testZroot2() throws Exception { RingI ring = new Integers(); @@ -130,7 +133,8 @@ public void testZroot2() throws Exception valueToStringTest("rt2*rt2","2"); valueToStringTest("(rt2+1)*(rt2+1)","2 rt2+3"); } - + + @Test public void testZ5thRootUnity() throws Exception { RingI ring = new Integers(); @@ -152,6 +156,7 @@ public void testZ5thRootUnity() throws Exception valueToStringTest("t*t*t*t*t","1"); } + @Test public void testZRoot2Root5() throws Exception { RingI ring = new Integers(); @@ -182,6 +187,7 @@ public void testZRoot2Root5() throws Exception valueToStringTest("(t-1)*(s-1)","(t-1) s-t+1"); } + @Test public void testZtau() throws Exception { RingI ring = new Integers(); @@ -209,6 +215,7 @@ public void testZtau() throws Exception valueToStringTest("t*(1-t)","-1"); } + @Test public void testPolynomials() throws Exception { RingI ring = new Reals(); @@ -255,6 +262,7 @@ public void testPolynomials() throws Exception } + @Test public void testPolynomials2() throws Exception { RingI ring = new Reals(); @@ -279,6 +287,8 @@ public void testPolynomials2() throws Exception System.out.println(expr2 +" -> "+res2); } + + @Test public void testPolynomialCreator() throws Exception { RingI ring = new Reals(); @@ -297,6 +307,7 @@ public void testPolynomialCreator() throws Exception System.out.println("Coeffs ["+i+"] "+coeffs[i]); } + @Test public void testBad() throws ParseException { if(SHOW_BAD) diff --git a/src/test/java/org/lsmp/djepJUnit/JepTest.java b/src/test/java/org/lsmp/djepJUnit/JepTest.java index ea28ca4..c116937 100644 --- a/src/test/java/org/lsmp/djepJUnit/JepTest.java +++ b/src/test/java/org/lsmp/djepJUnit/JepTest.java @@ -1,6 +1,8 @@ package org.lsmp.djepJUnit; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import org.nfunk.jep.JEP; import org.nfunk.jep.Node; import org.nfunk.jep.ParseException; @@ -172,20 +174,22 @@ public void complexValueTest(String expr,Complex expected,double tol) throws Exc /////////////////// Tests //////////////// - /** just test JUnit working OK */ + @Test @DisplayName("just test JUnit working OK") public void testGood() { myAssertEquals("1",new Double(1),new Double(1)); myAssertNaN("NaN",new Double(Double.NaN)); } + @Test public void testSimpleSum() throws Exception { valueTest("1+2",3); valueTest("2*6+3",15); valueTest("2*(6+3)",18); } - + + @Test public void testLogical() throws Exception { System.out.println("\nTesting logical operations"); @@ -246,7 +250,8 @@ public void testLogical() throws Exception valueTest("if((true&&true)==true,6,7)",6); valueTest("if((!false)==true,6,7)",6); } - + + @Test public void testFunction() throws Exception { System.out.println("\nTesting real functions"); @@ -262,6 +267,8 @@ public void testFunction() throws Exception valueTest("2^(-4)",1.0/16,0.00000001); valueTest("2^(-10)",1.0/1024,0.00000001); } + + @Test public void testComplex() throws Exception { System.out.println("\nTesting complex values"); @@ -285,7 +292,7 @@ public void testComplex() throws Exception //complexValueTest("cos(z)",new Complex(3,-2),tol); } - + @Test public void testIf() throws Exception { System.out.println("\nTesting if statement"); @@ -305,6 +312,7 @@ public void testIf() throws Exception valueTest("if(x<3,1,-1)",-1); } + @Test public void testAssign() throws Exception { System.out.println("\nTesting assignment of variables"); @@ -323,6 +331,7 @@ public void testAssign() throws Exception // and hence the broken MMultiply was used. } + @Test public void testDotInName() throws ParseException,Exception { System.out.println("\nTesting names with dot in them"); @@ -330,7 +339,7 @@ public void testDotInName() throws ParseException,Exception valueTest("x.x+1",4); } - + @Test public void testBinom() throws ParseException,Exception { System.out.println("\nTesting binomial coeffs"); @@ -367,7 +376,8 @@ public void testBinom() throws ParseException,Exception valueTestInt("binom(10,1)",10); valueTestInt("binom(10,5)",252); } - + + @Test public void testNaN() throws Exception { System.out.println("\nTesting for NaN"); @@ -397,7 +407,8 @@ public void testNaN() throws Exception valueTest("x == x+5",0); valueTest("x == x",1); } - + + @Test public void testAssign2() { System.out.println("\nTesting for assignment using parseExpression and getValue"); @@ -415,38 +426,39 @@ public void testAssign2() assertThat("", result, is(closeTo(5.0, 0.0001))); } - boolean isExpressionValid(String expression) - { - JEP jep = j; - try{ - Node n = jep.parse(expression); - System.out.println("expression " + expression + " \n Parsed value " + jep.hasError()); - if(jep.hasError()) - { - System.out.println("jep.getErrorInfo " + jep.getErrorInfo()); - return false; - } - System.out.println("jep.getSymbolTable " + jep.getSymbolTable()); - System.out.println("Eval: " +jep.evaluate(n).toString()); - return true; - } - catch(Error e) - { - System.out.println(e.getMessage()); - if(jep.hasError()) - System.out.println("Error is : " + jep.getErrorInfo()); - return false; - } - catch(Exception e1) - { - System.out.println(e1.getMessage()); - if(jep.hasError()) - System.out.println("Error is : " + jep.getErrorInfo()); - return false; - } - - } - + boolean isExpressionValid(String expression) + { + JEP jep = j; + try{ + Node n = jep.parse(expression); + System.out.println("expression " + expression + " \n Parsed value " + jep.hasError()); + if(jep.hasError()) + { + System.out.println("jep.getErrorInfo " + jep.getErrorInfo()); + return false; + } + System.out.println("jep.getSymbolTable " + jep.getSymbolTable()); + System.out.println("Eval: " +jep.evaluate(n).toString()); + return true; + } + catch(Error e) + { + System.out.println(e.getMessage()); + if(jep.hasError()) + System.out.println("Error is : " + jep.getErrorInfo()); + return false; + } + catch(Exception e1) + { + System.out.println(e1.getMessage()); + if(jep.hasError()) + System.out.println("Error is : " + jep.getErrorInfo()); + return false; + } + + } + + @Test public void testNumParam() throws Exception { j.parse("if(3,1,2)"); @@ -502,6 +514,8 @@ public void testNumParam() throws Exception ) */ } + + @Test public void testUndeclared() throws Exception { j.setAllowUndeclared(false); @@ -518,7 +532,8 @@ public void testUndeclared() throws Exception System.out.println("Expected error caught: "+e.getClass().getName()+": "+e.getMessage()); } } - + + @Test public void testBad() throws Exception { if(SHOW_BAD) diff --git a/src/test/java/org/lsmp/djepJUnit/MRpTest.java b/src/test/java/org/lsmp/djepJUnit/MRpTest.java index 1128554..dbbf430 100644 --- a/src/test/java/org/lsmp/djepJUnit/MRpTest.java +++ b/src/test/java/org/lsmp/djepJUnit/MRpTest.java @@ -1,5 +1,8 @@ package org.lsmp.djepJUnit; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; import org.lsmp.djep.matrixJep.MatrixJep; import org.lsmp.djep.mrpe.MRpCommandList; import org.lsmp.djep.mrpe.MRpEval; @@ -35,6 +38,7 @@ public class MRpTest { String matStrsB[][] = new String[10][10]; String vecStrs[] = new String[10]; + @BeforeEach protected void setUp() { mj = new MatrixJep(); mj.addStandardConstants(); @@ -100,6 +104,7 @@ protected void setUp() { } } + @Test public void testGood() { assertEquals(1,1); @@ -109,7 +114,7 @@ public void myAssertEquals(String msg,String actual,String expected) { if(!actual.equals(expected)) System.out.println("Error \""+msg+"\" is \n<"+actual+"> should be \n<"+expected+">"); - assertEquals("<"+msg+">",expected,actual); + assertEquals(expected,actual, "<"+msg+">"); System.out.println("Success: Value of <"+msg+"> is <"+actual+">"); } @@ -253,6 +258,7 @@ void rpTest2(String eqns[]) throws ParseException rpe.cleanUp(); } + @Test public void testRp() throws ParseException { rpTest(new String[]{"y=[[1,2,3],[4,5,6],[7,8,9]]"},"y*y"); @@ -295,6 +301,7 @@ public void testRp() throws ParseException } + @Test public void testRpAllDim() throws ParseException { @@ -325,7 +332,7 @@ public void testRpAllDim() throws ParseException } } - + @Test public void testMul() throws ParseException { rpTest(new String[]{"x=[1,2]","y="+matStrs[2][2]},"x*y"); @@ -405,8 +412,9 @@ public void testMul() throws ParseException rpTest(new String[]{"x=[1,2,3,4,5]","y=[1,0,0,0,0]"},"x*y"); } - - public void testAssign() throws ParseException + + @Test + public void tesign() throws ParseException { rpTest2(new String[]{"x=[[5,6],[7,8]]","x+x"}); rpTest2(new String[]{"x=[5,6]","x+x"}); @@ -472,6 +480,7 @@ public void testLogical() throws ParseException rpTest2(new String[]{matStrs[2][2]+"!="+matStrs[2][2]}); } boolean TESTALL = false; + @Test public void testVn() throws ParseException { rpTest2(new String[]{"x=[5,6,7,8,9]","x+x","x-x","2*x","x*3","x.x"}); rpTest2(new String[]{"x=[[1,2,3,4,5],[5,6,7,8,9]]","x+x","x-x","2*x","x*3"}); @@ -505,6 +514,7 @@ public void testVn() throws ParseException { } } + @Test public void testFun() throws ParseException { rpTest2(new String[]{"x=5","y=4","x/y","x%y","x^y"}); rpTest2(new String[]{"x=0.5","cos(x)","sin(x)","tan(x)","asin(x)","acos(x)","atan(x)"}); @@ -513,7 +523,8 @@ public void testFun() throws ParseException { rpTest2(new String[]{"x=0.5","sec(x)","cosec(x)","cot(x)"}); rpTest2(new String[]{"x=3","y=4","atan2(y,x)","if(x>y,1,2)","if(x should be \n<"+expected+">"); - assertEquals("<"+msg+">",expected,actual); + assertEquals(expected, actual, "<"+msg+">"); System.out.println("Success: Value of <"+msg+"> is <"+actual+">"); } @@ -174,13 +181,14 @@ void rpTest2(String eqns[]) throws ParseException,Exception System.out.println("<"+eqns[i]+"> "+rpRes[i]); } for(int i=0;i found <"+rpRes[i]+">"); + Double matRes = (Double) j.evaluate(nodes[i]); + assertThat("Expected <"+matRes+"> found <"+rpRes[i]+">", + matRes, is(closeTo(rpRes[i], 0.0000000000000001))); } rpe.cleanUp(); } + @Test public void testRp() throws ParseException,Exception { rpTest(new String[0],"1*2*3+4*5*6+7*8*9"); @@ -190,13 +198,15 @@ public void testRp() throws ParseException,Exception } + @Test public void testAssign() throws ParseException,Exception { rpTest2(new String[]{"x=5","x+x"}); j.setVarValue("x",new Double(6.0)); rpTest2(new String[]{"x+x"}); } - + + @Test public void testLogical() throws ParseException,Exception { rpTest2(new String[]{"1&&1","1&&0","0&&0","0&&1","3.14&&1"}); @@ -212,6 +222,8 @@ public void testLogical() throws ParseException,Exception } boolean TESTALL = false; + + @Test public void testFun() throws ParseException,Exception { rpTest2(new String[]{"x=5","y=4","x/y","x%y","x^y"}); diff --git a/src/test/java/org/lsmp/djepJUnit/SJepTest.java b/src/test/java/org/lsmp/djepJUnit/SJepTest.java index 0fbe629..f96c2cd 100644 --- a/src/test/java/org/lsmp/djepJUnit/SJepTest.java +++ b/src/test/java/org/lsmp/djepJUnit/SJepTest.java @@ -1,6 +1,7 @@ package org.lsmp.djepJUnit; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.lsmp.djep.djep.DJep; import org.lsmp.djep.sjep.PNodeI; import org.lsmp.djep.sjep.PolynomialCreator; @@ -118,7 +119,7 @@ public void simplifyTest(String expr,String expected) throws ParseException if(!res2.equals(res)) System.out.println("Error: Value of \""+expr+"\" is \""+res+"\" should be \""+res2+"\""); - assertEquals("<"+expr+">",res2,res); + assertEquals(res2,res,"<"+expr+">"); System.out.println("Sucess: Value of \""+expr+"\" is \""+res+"\""); // System.out.print("Full Brackets:\t"); @@ -137,7 +138,7 @@ public void simplifyTestString(String expr,String expected) throws ParseExceptio if(!expected.equals(res)) System.out.println("Error: Value of \""+expr+"\" is \""+res+"\" should be \""+expected+"\""); - assertEquals("<"+expr+">",expected,res); + assertEquals(expected,res,"<"+expr+">"); System.out.println("Sucess: Value of \""+expr+"\" is \""+res+"\""); // System.out.print("Full Brackets:\t"); @@ -157,7 +158,7 @@ public void expandTestString(String expr,String expected) throws ParseException if(!expected.equals(res)) System.out.println("Error: Value of \""+expr+"\" is \""+res+"\" should be \""+expected+"\""); - assertEquals("<"+expr+">",expected,res); + assertEquals(expected,res,"<"+expr+">"); System.out.println("Sucess: Value of \""+expr+"\" is \""+res+"\""); // System.out.print("Full Brackets:\t"); @@ -182,13 +183,15 @@ public Node parseProcSimpEval(String expr,Object expected) throws ParseException } */ + @Test public void testSimpleSum() throws Exception { valueTest("1+2",3); valueTest("2*6+3",15); valueTest("2*(6+3)",18); } - + + @Test public void testOperators() throws Exception { OperatorSet opSet = j.getOperatorSet(); @@ -227,7 +230,8 @@ public void testOperators() throws Exception valueTest("(a&&(b||c)) == ((a&&b)||(a&&c))",1); valueTest("(a||(b&&c)) == ((a||b)&&(a||c))",1); } - + + @Test public void testPrint() throws ParseException { simplifyTestString("(a+b)+c","a+b+c"); @@ -268,7 +272,8 @@ public void testPrint() throws ParseException // simplifyTestString("a||(b&&c)","a||b&&c"); // simplifyTestString("a&&(b&&c)","a&&b&&c"); } - + + @Test public void testSimp() throws ParseException { simplifyTest("2+3","5"); @@ -408,6 +413,7 @@ public void testSimp() throws ParseException simplifyTest("(2*x+x)^3","27*x^3"); } + @Test public void testPolySimp() throws ParseException,Exception { Node n1 = j.parse("(1.0+2.0*x+x^2.0)*(1.0+2.0*x+x^2.0)"); @@ -489,6 +495,7 @@ public void testPolySimp() throws ParseException,Exception j.println(simp); } + @Test public void testTotalOrder() throws ParseException,Exception { expandTestString("y+x","x+y"); @@ -507,7 +514,8 @@ public void testTotalOrder() throws ParseException,Exception simplifyTestString("x+1/x","1/x+x"); simplifyTestString("1/x^2+1/x","1/x^2+1/x"); } - + + @Test public void testPolySimp2() throws ParseException,Exception { expandTestString("1+2*(1+x)","3+2*x"); @@ -515,7 +523,8 @@ public void testPolySimp2() throws ParseException,Exception expandTestString("x*y+2*x","2*x+x*y"); expandTestString("(1+x+y)^2","1+2*x+2*x*y+x^2+2*y+y^2"); } - + + @Test public void testFormat() throws ParseException { NumberFormat format = NumberFormat.getInstance(); @@ -539,10 +548,13 @@ public void testFormat() throws ParseException System.out.println(c.toString(format,true)); } + @Test public void testSimpleEquals() throws ParseException { assertPolynomialEquals("a+b-(c+d)","(a+b)-c-d"); } + + @Test public void testBad() throws ParseException { if(SHOW_BAD) diff --git a/src/test/java/org/lsmp/djepJUnit/VectorJepTest.java b/src/test/java/org/lsmp/djepJUnit/VectorJepTest.java index dfd60ce..46a92b9 100644 --- a/src/test/java/org/lsmp/djepJUnit/VectorJepTest.java +++ b/src/test/java/org/lsmp/djepJUnit/VectorJepTest.java @@ -6,6 +6,8 @@ package org.lsmp.djepJUnit; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; import org.lsmp.djep.vectorJep.VectorJep; import org.nfunk.jep.ParseException; /** @@ -25,6 +27,7 @@ protected void setUp() { j.setImplicitMul(true); } + @Test public void testMatrix() throws Exception { System.out.println("\nTesting vector and matrix operations"); @@ -64,6 +67,7 @@ public void testMatrix() throws Exception valueTest("ele(x,[2,2])","4.0"); // Value: 2.0 } + @Test public void testLength() throws ParseException,Exception { System.out.println("\nTesting vector and matrix functions"); @@ -97,22 +101,30 @@ public void testLength() throws ParseException,Exception valueTest("Map(abs(x),x,[[-2,-1],[1,2]])","[[2.0,1.0],[1.0,2.0]]"); } + @Test @Disabled public void testSumVector() throws Exception { } + + @Test public void testVecCmp() throws Exception { valueTest("[1,2,3]==[1,2,3]",1); valueTest("[1,2,3]==[1,2,4]",0); } + + @Test @Disabled public void testDotInName() throws ParseException, Exception { } + + @Test public void testGenMatEle() throws Exception { System.out.println("The following caused a problem as ele only acepted Double arguments"); valueTest("m=[1,2,3]","[1.0,2.0,3.0]"); valueTest("GenMat(3,ele(m,n)*10,n)","[10.0,20.0,30.0]"); } - + + @Test public void testArrayAccess() throws Exception { System.out.println("\nTests array access on lhs and rhs using the a[3] notation"); valueTest("a=[1,2,3]","[1.0,2.0,3.0]"); @@ -124,7 +136,8 @@ public void testArrayAccess() throws Exception { valueTest("c","[[1.0,5.0],[3.0,4.0]]"); valueTest("c[2,1]",3); } - + + @Test public void testElementOperations() throws Exception { ((VectorJep) j).setElementMultiply(true); valueTest("[1,2,3] == [2,2,2]","[0.0,1.0,0.0]"); @@ -136,7 +149,8 @@ public void testElementOperations() throws Exception { valueTest("[1,2,3] * [2,2,2]","[2.0,4.0,6.0]"); valueTest("[1,2,3] / [2,2,2]","[0.5,1.0,1.5]"); } - + + @Test public void testComplexMatricies() throws Exception { valueTest("v=[1+i,1-2i]","[(1.0, 1.0),(1.0, -2.0)]"); valueTest("vsum(v)","(2.0, -1.0)"); diff --git a/src/test/java/org/lsmp/djepJUnit/XJepTest.java b/src/test/java/org/lsmp/djepJUnit/XJepTest.java index a86fcd9..82ece70 100644 --- a/src/test/java/org/lsmp/djepJUnit/XJepTest.java +++ b/src/test/java/org/lsmp/djepJUnit/XJepTest.java @@ -5,6 +5,7 @@ */ package org.lsmp.djepJUnit; +import org.junit.jupiter.api.BeforeEach; import org.lsmp.djep.xjep.BaseFormat; import org.lsmp.djep.xjep.MacroFunction; import org.lsmp.djep.xjep.PrintVisitor; @@ -30,6 +31,7 @@ */ public class XJepTest extends JepTest { + @BeforeEach protected void setUp() { j = new XJep(); j.addStandardConstants(); @@ -62,7 +64,7 @@ public void simplifyTestString(String expr,String expected) throws ParseExceptio if(!expected.equals(res)) System.out.println("Error: Value of \""+expr+"\" is \""+res+"\" should be \""+expected+"\""); - assertEquals("<"+expr+">",expected,res); + assertEquals(expected,res, "<"+expr+">"); System.out.println("Success: Value of \""+expr+"\" is \""+res+"\""); }