From ad432c45fbd4559b8d34ee38a5ce7498d63e31bf Mon Sep 17 00:00:00 2001 From: Felix Homa Date: Sun, 27 Mar 2022 22:05:25 +0200 Subject: [PATCH] Initial Data Commit --- .classpath | 38 ++++++ .project | 23 ++++ .settings/org.eclipse.jdt.core.prefs | 7 ++ .settings/org.eclipse.m2e.core.prefs | 4 + pom.xml | 43 +++++++ .../pingger/korrekturHelper/AbstractNode.java | 60 +++++++++ .../pingger/korrekturHelper/CheckboxNode.java | 58 +++++++++ .../pingger/korrekturHelper/HeaderNode.java | 118 ++++++++++++++++++ .../korrekturHelper/KorrekturHelper.java | 15 +++ .../cs/rvs/pingger/korrekturHelper/Node.java | 61 +++++++++ .../rvs/pingger/korrekturHelper/Test.schema | 24 ++++ .../korrekturHelper/AbstractNode.class | Bin 0 -> 2531 bytes .../korrekturHelper/CheckboxNode.class | Bin 0 -> 2141 bytes .../pingger/korrekturHelper/HeaderNode.class | Bin 0 -> 4402 bytes .../korrekturHelper/KorrekturHelper.class | Bin 0 -> 1009 bytes .../cs/rvs/pingger/korrekturHelper/Node.class | Bin 0 -> 722 bytes .../rvs/pingger/korrekturHelper/Test.schema | 24 ++++ 17 files changed, 475 insertions(+) create mode 100644 .classpath create mode 100644 .project create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.m2e.core.prefs create mode 100644 pom.xml create mode 100644 src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/AbstractNode.java create mode 100644 src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/CheckboxNode.java create mode 100644 src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/HeaderNode.java create mode 100644 src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/KorrekturHelper.java create mode 100644 src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/Node.java create mode 100644 src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/Test.schema create mode 100644 target/classes/de/tuDortmund/cs/rvs/pingger/korrekturHelper/AbstractNode.class create mode 100644 target/classes/de/tuDortmund/cs/rvs/pingger/korrekturHelper/CheckboxNode.class create mode 100644 target/classes/de/tuDortmund/cs/rvs/pingger/korrekturHelper/HeaderNode.class create mode 100644 target/classes/de/tuDortmund/cs/rvs/pingger/korrekturHelper/KorrekturHelper.class create mode 100644 target/classes/de/tuDortmund/cs/rvs/pingger/korrekturHelper/Node.class create mode 100644 target/classes/de/tuDortmund/cs/rvs/pingger/korrekturHelper/Test.schema diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..3bc452e --- /dev/null +++ b/.classpath @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..8f7e44e --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + KorrekturHelper + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..aeacc3c --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..aaa211b --- /dev/null +++ b/pom.xml @@ -0,0 +1,43 @@ + + 4.0.0 + de.tuDortmund.cs.rvs.pingger + KorrekturHelper + 0.0.1-SNAPSHOT + KorrekturHelper + + 17 + 17 + + + + + maven-jlink-plugin + 3.1.0 + true + + jlink + 2 + true + true + ${project.build.directory}/jlink_output + + java.compiler + java.datatransfer + java.desktop + java.instrument + java.logging + java.management + java.naming + java.prefs + java.rmi + java.scripting + java.sql + java.xml + jdk.compiler + jdk.unsupported + + + + + + \ No newline at end of file diff --git a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/AbstractNode.java b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/AbstractNode.java new file mode 100644 index 0000000..52cfe07 --- /dev/null +++ b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/AbstractNode.java @@ -0,0 +1,60 @@ +package de.tuDortmund.cs.rvs.pingger.korrekturHelper; + +import java.awt.BorderLayout; +import java.awt.Component; +import java.util.LinkedHashSet; + +import javax.swing.BoxLayout; +import javax.swing.JPanel; +import javax.swing.border.EmptyBorder; + +/** + * @author Pingger + */ +public abstract class AbstractNode extends JPanel implements Node +{ + private static final long serialVersionUID = 2766238124985613235L; + /** Content-Panel */ + protected final JPanel content; + private final JPanel sub; + /** Sub-Nodes */ + protected final LinkedHashSet subNodes = new LinkedHashSet<>(); + + /** + * + */ + public AbstractNode() + { + super(true); + setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); + + content = new JPanel(new BorderLayout(), true); + sub = new JPanel(true); + sub.setLayout(new BoxLayout(sub, BoxLayout.Y_AXIS)); + sub.setBorder(new EmptyBorder(0, 8, 8, 0)); + + add(content); + add(sub); + } + + @Override + public void addSubNode(Node n) + { + subNodes.add(n); + sub.add(n.getComponent()); + } + + @Override + public Component getComponent() + { return this; } + + @Override + public LinkedHashSet getSubNodes() + { return subNodes; } + + @Override + public void reset() + { + subNodes.forEach(Node::reset); + } +} diff --git a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/CheckboxNode.java b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/CheckboxNode.java new file mode 100644 index 0000000..1d113d5 --- /dev/null +++ b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/CheckboxNode.java @@ -0,0 +1,58 @@ +package de.tuDortmund.cs.rvs.pingger.korrekturHelper; + +import java.math.BigDecimal; +import java.math.MathContext; + +import javax.swing.JCheckBox; + +public class CheckboxNode extends AbstractNode +{ + private final JCheckBox cbx; + private final String message; + + private final BigDecimal points; + + public CheckboxNode(String configString) + { + if (configString.contains("\n")) + { throw new IllegalArgumentException("Bad config! Found line feed!"); } + var spl = configString.split("\t"); + if (spl.length != 3) + { throw new IllegalArgumentException("Bad Config String! Expected 2 \\t"); } + if (!"[]".equals(spl[0])) + { throw new IllegalArgumentException("Not a [] Node"); } + points = new BigDecimal(spl[1]); + message = spl[2]; + cbx = new JCheckBox(); + } + + @Override + public BigDecimal achievedPoints(MathContext mc) + { + return cbx.isSelected() ? points : BigDecimal.ZERO; + } + + @Override + public boolean isVisibleInResultHtml() + { return cbx.isSelected(); } + + @Override + public BigDecimal maximumPoints() + { + return BigDecimal.ZERO; + } + + @Override + public String toConfigString() + { + return "[]\t" + (points.signum() > 0 ? "+" : "") + points.toPlainString() + "\t" + message; + } + + @Override + public String toResultHtml() + { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/HeaderNode.java b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/HeaderNode.java new file mode 100644 index 0000000..f8d079d --- /dev/null +++ b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/HeaderNode.java @@ -0,0 +1,118 @@ +package de.tuDortmund.cs.rvs.pingger.korrekturHelper; + +import java.awt.Font; +import java.math.BigDecimal; +import java.math.MathContext; + +import javax.swing.JLabel; + +/** + * @author Pingger + */ +public class HeaderNode extends AbstractNode +{ + private static final String[] configStyles = { "", "#", "##", "###", "####", "#####", "######", "*", "_" }; + private static final String[] htmlStyles = { "", "h1", "h2", "h3", "h4", "h5", "h6", "b", "i" }; + private static final long serialVersionUID = -5511548087337263042L; + + private static int indexOf(String[] array, String elem) + { + for (var i = 0; i < array.length; i++) + { + if (elem.equals(array[i])) + { return i; } + } + return -1; + } + + /** Additional CSS */ + protected final String css; + + /** Text to display */ + protected final String message; + + /** type of header (h#, b, i) */ + protected final int style; + + /** + * Load from config String + * + * @param config the config String + */ + public HeaderNode(String config) + { + if (config.contains("\n")) + { throw new IllegalArgumentException("Bad config! Found line feed!"); } + var spl = config.split("\t"); + if (spl.length < 3 || spl.length > 4) + { throw new IllegalArgumentException("Bad Config String! Expected 2 or 3 \\t"); } + if (!"!header".equals(spl[0])) + { throw new IllegalArgumentException("Not a !header Node"); } + style = indexOf(configStyles, spl[1]); + if (style == -1) + { throw new IllegalArgumentException("Bad Style!"); } + message = spl[2]; + if (spl.length == 3) + { + css = null; + } + else + { + css = spl[3]; + } + var lbl = new JLabel(message); + switch (style) + { + case 0: + break; + + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + lbl.setFont(new Font(lbl.getFont().getFontName(), Font.PLAIN, + (int) (lbl.getFont().getSize() * (1.0 + (6 - style) / 6)))); + break; + + case 7: + lbl.setFont(new Font(lbl.getFont().getFontName(), Font.BOLD, lbl.getFont().getSize())); + break; + + case 8: + lbl.setFont(new Font(lbl.getFont().getFontName(), Font.ITALIC, lbl.getFont().getSize())); + break; + } + } + + @Override + public BigDecimal achievedPoints(MathContext mc) + { + return BigDecimal.ZERO; + } + + @Override + public boolean isVisibleInResultHtml() + { return subNodes.stream().anyMatch(Node::isVisibleInResultHtml); } + + @Override + public BigDecimal maximumPoints() + { + return BigDecimal.ZERO; + } + + @Override + public String toConfigString() + { + return "!header\t" + configStyles[style] + "\t" + message + (css == null ? "" : "\t" + css); + } + + @Override + public String toResultHtml() + { + return (style == 0 ? "" : "<" + htmlStyles[style] + (css == null ? "" : " style=\"" + css + "\"") + ">") + message + + (style == 0 ? "" : ""); + } + +} diff --git a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/KorrekturHelper.java b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/KorrekturHelper.java new file mode 100644 index 0000000..466ebbe --- /dev/null +++ b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/KorrekturHelper.java @@ -0,0 +1,15 @@ +package de.tuDortmund.cs.rvs.pingger.korrekturHelper; + +import java.io.IOException; + +public class KorrekturHelper +{ + + public static void main(String[] args) throws IOException + { + var in = KorrekturHelper.class.getClassLoader() + .getResourceAsStream("de/tuDortmund/cs/rvs/pingger/korrekturHelper/Test.schema"); + in.transferTo(System.out); + } + +} diff --git a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/Node.java b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/Node.java new file mode 100644 index 0000000..b6e2375 --- /dev/null +++ b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/Node.java @@ -0,0 +1,61 @@ +package de.tuDortmund.cs.rvs.pingger.korrekturHelper; + +import java.awt.Component; +import java.math.BigDecimal; +import java.math.MathContext; +import java.util.LinkedHashSet; + +/** + * @author Pingger + */ +public interface Node +{ + /** + * @param mc the {@link MathContext} + * @return the achieved Points + */ + BigDecimal achievedPoints(MathContext mc); + + /** + * Adds a Sub-Node to this Node + * + * @param n the Sub-Node to add + */ + void addSubNode(Node n); + + /** + * @return the AWT-Component for Displaying + */ + Component getComponent(); + + /** + * @return all Sub-Nodes + */ + LinkedHashSet getSubNodes(); + + /** + * @return whether this Element should be visible in the Result HTML + */ + boolean isVisibleInResultHtml(); + + /** + * @return the maximum Points + */ + BigDecimal maximumPoints(); + + /** + * Resets this Element and all sub-elements to their defaults + */ + void reset(); + + /** + * @return this Node as a Config-String (with which this Node can be correctly + * parsed again using the Constructor) + */ + String toConfigString(); + + /** + * @return the current Result-HTML + */ + String toResultHtml(); +} diff --git a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/Test.schema b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/Test.schema new file mode 100644 index 0000000..625ede6 --- /dev/null +++ b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/Test.schema @@ -0,0 +1,24 @@ +:base 0.0 +:fullPts color: #0f0; +:fullPtsText +:noPts color: #f00; +:noPtsText +:partialPts color: #fb0; +:partialPtsText +!header # Test-Schema + [] -0.5 Punktabzug + [] +0.5 Bonus-Punkt + !header ## Sub-Header zum versteck-Test + [] -0.5 Punktabzug (uncheck um Sub-Header zu verstecken) + !header ## Sub-Header für Punkte + \ 1.0 Element existiert | Element existiert nicht + \ 2 Anderes Element existiert | Anderes Element fehlt + \ 1.5 Beispiel | fehlt + [] -0.5 Punktabzug weil is so. + !header ## Sub-Header für Punkte Multiline + \\ 5.0 + 5.0 Volle Punkte + 2.5 Halbe Punkte + 50% Halbe Punkte in Prozent + 1/3 Ein Drittel Punkte als Bruch + 0 Null Punkte \ No newline at end of file diff --git a/target/classes/de/tuDortmund/cs/rvs/pingger/korrekturHelper/AbstractNode.class b/target/classes/de/tuDortmund/cs/rvs/pingger/korrekturHelper/AbstractNode.class new file mode 100644 index 0000000000000000000000000000000000000000..49a2e6a7b688a88cd4f98da518fb93973585dc59 GIT binary patch literal 2531 zcmbVNYf}_Q6g|zdEUbed!3T=L2bg712V*qRMWY}F%!(w7YcS8=*#<^-XErlED1RuQ zlS;&jR^?MZrSd~km7kERR8G$Z+xK;DpL^%Gzn}jC;2OdlIs~rNm93*& zexRF?SGS$e4mLu&<$9~DDzMl6AW-W%3g%R!#rK=FPzTb{3w~YY&?zwRNN&g{cKDbE z_MJuPsYVW60vGn=*0>Ys4^`mGMpXr&>wEX-ZwZJy0=+Z77i#J0s%%6md&c?h&(nYW z^`k(}@jb0PEihPqJ&lq;CX8wV-CRw8P+%z5vm@;`?6T{vtNNS_*D6X=xu@c;dXi9? z$--`WQ{_G5DqW}Zt|`}Z^>wCH7_SO+&M==mGB|AEEgYes@Nm4E!%>052FVT?<}rj} zqdnLIfwwL6p+AQc0teI3r~M~ox#>qbj}e?Q>Zb*c6cRY{v9?)DEnQCqrTOt{o}R`m zoWVPUA1a-g3LHxrB(l5GljK9mBst!WX&Zmjeo$AzcFY2X4XU#y@Hv6uUHuTPfni&) z&}*J9SlEwVV?36_djyz9Rf~hzv(1*?OakU{5tmJr_eq1oJpT-u46azX3Uir6lW5Xa zlEpSj+s=|x0y0IoX5l(MZamT{PC<|DtO1~_Dz@fs9RWOym#%A>dF1|rh?EJe*ule;w8OWy6?0&MGq$jF9M$5m8F?kzO5{13AOE~x`Aby_I+&za4V@- zn1_Uu1BcwHcx=QM>3SRfy0Xi%S*uGb$`uZ5KiITT2OaNYg||flzo#kCwoIJQNw3~e z;b__S*P~V`VSgN;q61F*wB!}TrOlRlv%@6h|J$|+m_|Ay8;y#qRjIEF-|WKbYCl#D zu^(Aj!eCzy+q@q2l+@=RAC^kUNzlhi}_6%1&qUiYh6S)UNX+M@)wQ zS#;tka_HuB52@9GJO<4K8Z&$oxP@7wH;9(FcW^(#Ajc=RaQlIYHt{p&1-5WE6>~pp2u!eYXK@(kV!wwH z+qPeN!2;t8EK)Pe?>IMMCK*=~>@0UvzK-JeX2lJzU9sdsD$S0UX?}uFsg+zsCH7#q zJ!DO~|8;UH##F-P!i$A13 z=wn}eP?vFTefRDGUA@?+2TG!=fK$m2Gb7Rm9NhBtAY zp((65wqUr~NF@<#aQkfiD&AtyCERobr^m7V`fRPjEy0U=UVkD~3^1g&cO=q~hGC45 ztW=xnP}TpC^X=UO9+yJ(Y2kpXqI1Et$~HgX#g)X) zM$*7YsUu=UDU9IEV+Ga_R&M?rfZ$t zI^zrmX>Nz>c4(7q3*I9hRvj@fT&l6vHEXt8bx&ya4EzfpDoOaUr%qJrIEih%!3yXG zcE7wAaqv{tc8WYuu|WlF?~ujU&?jB8t>FoF$bF$*@~UoB-hzrR=pGEKFc~02Ee%DG z0h-N9g?mMYTjyPeGq)i@osd8!4P`v0f`z~0(Djaa$;0;WPkcLQv_Xbq|i#UKPXDZ7l)2;VK~=b z$EBxeJ;vqDT<;NH|7|$;Mjic2BhQ<^PnK`U<=oAYbiR(kZA&SZ&4@KVq}mwe&fz0WQcY8|+J*EBIv}NhDRe0Ql+WyR2WDum ziBSqDWtLK63D#+rqP5PUUoc+B$4`-^QT`d4f5s<2(nic#>IPyUd341Ir#w2bjEA%@ z(dkdGeM+G=CveNO#;}41^eYw5(^sCPCU8H{I2EZ9Bix7(v^XX~V5G#OB!4u?&m`;` zbB7voGpD($c%0;ZL$yfkv16=l<~}>ZrmVD%t?!`bK7WR$+?RC};z)H9s1N^ zzbeM<2Dq^VE^a_-L&4e$$&{KPJFzA^!Qh-y8IhZ^bS6)2EMlzT)YNGaZWQJH4WR7e AZ~y=R literal 0 HcmV?d00001 diff --git a/target/classes/de/tuDortmund/cs/rvs/pingger/korrekturHelper/HeaderNode.class b/target/classes/de/tuDortmund/cs/rvs/pingger/korrekturHelper/HeaderNode.class new file mode 100644 index 0000000000000000000000000000000000000000..292aec192a3870288eefa07f31b31213cb81d8b0 GIT binary patch literal 4402 zcmb7HX>`=q75+4~N3s#%2(vpd29nsuFkrTTAuSjv2HOyZ5QfkMdFI&`){F*8114$O zrlF-v8qzH-qzklZX;az;2!=pIx|1g9zVGYr{^&V9r$0EQ-;*>j18z>iSnuh*d++=1 zz2Ci0e)T^WE&*7DzpIETSe6w@zqrxv=2=xz{p zf$tlHnH6rYlNBne6)e9c<<)(j@0uB3sw>blPQKq7NcjhB;VGE#K=&SVpP97H{6I40 zy9Cgopl;C5*(H&BPq>z8Zx^m-Ir;m#)+$goDj3`887(bHek?0m7*9Bmi3KQlPEO*jC>1rEYV}b_La)fv1xc)ZYkB!xRP3Fpa9S zH8d)S&E`0RsjJE_>Jp_#)&wNTKiqXuyeZL~DFP{VvV zwrf}*$3+_2<+xbGVmU6+uvCsqHQY@DeHvD9u%w-pI#k3JjPJJcqPLjq6Ye&%Pr7Jy zI~j)0WDxltEvi;ND~31sD`;*WB?UJJucfOF6R}1|Czyb^*jqGhhIwLhnds)eJtE_G zwCtqort6vq7z|;H9Fvvu&CF1bS%{9W?-Bl>ligyvW={CbEKRPAa!_G1qD0H~I#i)s zM;9h&=%v$j63!MK_hKtENK*Nxm8Y5M<$yW|O*ciTBA*e2rDB_cS=UqAW!qxFv{$xMI;;FDt-NP@;SW;PL$wJEXQVU;Av5|QW^BHL7l6n0278#T~drB(<6N?hNd<}gH)TY6p z9yMf{-CoB}n2Bg9A&abzbm-UdCcIe^V^BvuZqu-bWhKuD%Bo53*gD2zoSfx#jKw$= z1=^G08BTipS&7Mw-DaP#>)>FA3I=y<5Ib|fpIpy?%k`p;eb`S-1HzYU3T|s|2`Nz$ z>!^c^13DhYBMQbua=pyEf`*c8dHGB6M|Hd%?+DGNtcNMe$|M6_JSL<5E(McE32s-H z7 zNW~5NIzEbzvFLWL+qzl7q|t4#f#fm_VA*c@$*gJ1+irOln?+ZCtMH1pzk%&INWo6Y zmS=Q)5}#t#dBr}-H~KL(G*ahrY}0i;7jPC8VJlb6m2x?y1muRKkS61NCoFBc z!Maj$x&)?-_-l%m&0AK(3xpEYGyBRZ?2wOhI?m%ohRG}xM4p8|ZiD{>LCtqU9K4Nv=X!=Uyv$a%Qo}bXlL#)zRkJjFn~NO2%i$i`<}T}a1>a|N?UNU; zyh83Qhf=x(LPnH9>Co^RxwkUOMwD`jZbq!P>P!e1n66^ zx8n>I3mrGZE?cQk+;*TK%EkZx&G5)K)-6wEWVzF{?UY4EkB{R=^;kOwzs7G>{6@jT zTk2r4W_5f5N5by+r@q6;8E1wr`r)_$k@KpSn_gGNnLE0+1tzYDqUktPo?9=?WweC%uJ;GaC>g_BsH>ss3Tl)wF>K&lZH(feASlQWoe)&4 zj!|axlm)HluxYN*GlI=WF!mx+Y2&_gxc}w3MtTGf^t4@yA4hH5CH2{8^C7uum~BV#wiRr*)wG|*5Dgx~m{#R1awkyN+7{9t!q4&7u!)VJ8~^0^FZAHw*rFJ? zSDDDK-6ZZ02p~^m&Tt6t<=JxfzJLHTDEWSpB1UV+@ButQjFJj-pkF1hm+d);eH7Y z!99(Sb6@g~2A}4j$OgryEQFO5m&yhca&!crzJOBfbJXD(HY;m2GRIVI6aT=h5M0bCEGIt-B&AZmy~XF zG3<6OcEcmd+%i`Wm$}-9_*J&T&`s7Z|6j$-@VzR04#qb0CkfS8ZFPMg3;&=E1{>T;ix6_~S7yJ!V{|i25Nmc*= literal 0 HcmV?d00001 diff --git a/target/classes/de/tuDortmund/cs/rvs/pingger/korrekturHelper/KorrekturHelper.class b/target/classes/de/tuDortmund/cs/rvs/pingger/korrekturHelper/KorrekturHelper.class new file mode 100644 index 0000000000000000000000000000000000000000..4f07abc885f345c10d5834698e6c863a0ca062ea GIT binary patch literal 1009 zcmbtT*>2N76g`tBb>o<}WP`Go)oCGSdq7I5gbIkokcw1QC7veEkhqQQXl7i&XTd{| zc;Ey0D8#kX#%aY1;^oeqdp+l#yZG1dA3p&+#bX0GhK-(Zbo@M$I*7xb<0(fTDre+} z{l1XSK_sO((6M|ah9kmnPhtakhUI;J$eke%`%b&NFFegKzu||z-ej1w8@mkot*9qV z%%NzZfO&=`*AK<}IOqzw!@EPlP%>w&KrHr@Zx*rNOa_d|xd{n5>| zcC@4-TZumN#b-~9v>%1aK$)SEe&t8b>-IEaqKdkK8i~(1wuW3O3+Hg2VX-fCirt9! zgk)H;8#C!*Qf~6^FgR6mY#T~ zs9M1ThK4<(>9_?GS5j{{iuL5vRuR{6)4+`r1MYlLS_Bqu;WiC7ifPuh>FaH3=<#b4 zHr5O@W}BIjTUf_k>bsUaRG(-GqNH6@qIRq^9gR0MKrZ{V2$jFgk0F=LHd8TM18ILJ z^dRbObIAjtg(McUllJ7LpX^=r)J8XxmSPoD9sMLgj&8KFWDPO}hK0^5D?ItT48j}=&kdf@f%1IRI)_22s@$Ig)H)r^56#Rhv zs3>y_=A%dvnj6i#H#2YF%8L4(m`6aFn2=;@o*Mg-v9fOFz%$OxrX?FQ?9X zoKoTYn9VrrSvVip)HCHlIHkCidHyD$Ewu&bj=a`I~wv-Eyok3t3MH4yX&zZA? zchu{?!cTR2j>j|ism|G8#CN3E%uM84;?$lIC5*6cex`5-(;J-EZx>o{(70^nN z&YYP!iD_LdU(?p)Xzn~SQGda+9ib-GPlL(2qjYy|fu}Lg$^l#?L zJ7j<3_S-tY(zzaIcxiuPUS!lKlL=Vrbbkq0GwM#8!YoYRT?h!Szj3$fF-Lwh7qS~| za=edgokrw&+XA*0m0_!oD35QEdp)%oxx&YIp)-DMquj`sa>+He7nb<002+KARj6^k z!dX>79m