Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ####### START of documentation #######
- ==> update.sh <==
- #!/bin/bash
- #
- # Download all Wiki pages where title starts with 'Fragment ',
- # plus some AWK processing, some ImageMagick and gnuplotting
- #
- # http://de.guttenplag.wikia.com/wiki/Benutzer:User8, March 2011
- # Change to working directory
- cd ${HOME}/tmp/gutt/download || exit 1
- # The current date and time, in 2 formats
- export DATE=$(date +'%Y%m%d_%H%M')
- export DAT2=$(date +'%d.%m.%Y %H:%M')
- echo
- echo $DAT2
- echo
- ######## START download of Fragment Pages ########
- # Get batch #1, via a wikia.com API query. The built-in page limit is 50.
- NUM=0 ; BATCH=$(printf "%03d" $NUM)
- echo
- echo "Downloading Fragment pages from de.guttenplag.wikia.com (batch ${BATCH})"
- echo
- wget -nv -O batch_${DATE}_${BATCH}.xml "http://de.guttenplag.wikia.com/api.php?action=query&format=xml&prop=revisions&rvprop=content&generator=allpages&gaplimit=50&gapprefix=Fragment%20"
- CONTINUE=$(xml sel -T -t -m /api/query-continue/allpages -v @gapfrom batch_${DATE}_${BATCH}.xml | sed 's/ /%20/g')
- # Get more batches of 50 pages, until /api/query-continue/allpages is empty
- while [[ -n "$CONTINUE" ]]; do
- NUM=$((++NUM)) ; BATCH=$(printf "%03d" $NUM)
- echo
- echo "Downloading Fragment pages from de.guttenplag.wikia.com (batch ${BATCH})"
- echo
- wget -nv -O batch_${DATE}_${BATCH}.xml "http://de.guttenplag.wikia.com/api.php?action=query&format=xml&prop=revisions&rvprop=content&generator=allpages&gaplimit=50&gapprefix=Fragment%20&gapfrom=$CONTINUE"
- CONTINUE=$(xml sel -T -t -m /api/query-continue/allpages -v @gapfrom batch_${DATE}_${BATCH}.xml | sed 's/ /%20/g')
- done
- # Get the actual page content out of the downloaded XMl files, using xmlstarlet 1.0.5
- xml sel -T -t -m /api/query/pages/page/revisions/rev -v ../../@title -o '	' -v "." -n batch_${DATE}_???.xml |
- pgawk --profile=fragment_${DATE}.out '
- BEGIN { FS = OFS = "\t" ; q = "\"" ; IGNORECASE = 1}
- /val_1=/ {
- regex = "VerschärftesBauernOpfer|BauernOpfer|HalbsatzFlickerei|KomplettPlagiat|ShakeAndPaste|StrukturPlagiat|Verschleierung|ÜbersetzungsPlagiat"
- gsub(/val_|cswikitext/, "\t&") # make tab delimited fields
- split($3, p, q) # page number value = val_1
- split($4, l, q) # line number value = val_2
- split($9, c, q) # category = val_7
- split($NF, k, q) # Kategorien = cswikitext, often 2 cswikitext attributes :-(
- gsub(/ /, "", k[2]) # remove CRLF representation between Kategorien
- # If we find one of our PlagiatsKategorien and page number between 15 and 407
- if ( ($9 ~ regex || $NF ~ regex ) && p[2] > 14 && p[2] < 408 )
- print $1, p[2], l[2], c[2], k[2]
- else
- print > "fragmente_ignored.list"
- next
- }
- { print > "fragmente_ignored.list" }' | sort > fragment_$DATE.list
- echo
- echo "Processing Fragment entries, line by line"
- echo
- # Process Fragments line by line, generating a line-oriented output file
- # Which is the source file for Thumbnails and gnuplot images
- pgawk --profile=zeilen_${DATE}.out -f ../scripts/zeilen.awk fragment_$DATE.list > zeilen_${DATE}.list
- # Remember # of Fragmente
- export FRAGMENTS=$( awk 'END{print NR}' fragment_${DATE}.list )
- # Remember # of Plagzeilen
- export PLAGZEILEN=$( awk -F"\t" '! a[$2,$5]++{zeile++}END{print zeile}' zeilen_${DATE}.list )
- # Remember % Plagzeilen
- export PLAGPROZENT=$( awk -v pz=$PLAGZEILEN 'BEGIN { printf "%.1f", 100 * pz / 16325 }' )
- echo
- echo " ---------------------------------------------------------------"
- echo " Fragmente = $FRAGMENTS | PlagZeilen = $PLAGZEILEN | PlagProzent = $PLAGPROZENT"
- echo " ---------------------------------------------------------------"
- echo
- ######## START Image processing ########
- cd ../thumb || exit 1
- echo
- echo "Doing the thumbnail images..."
- echo
- # Generating the coloured boxes
- mv -u *.png attic/
- cp -p ../images/seite-???.png .
- # Output of colorise.awk is piped though the shell, zeilenpositionen.txt is a 1:1 copy from the Wiki's [[Zeilenpositionen]] page
- pgawk --profile=colorise_${DATE}.out -f ../scripts/colorise.awk ../scripts/zeilenpositionen.txt ../download/zeilen_${DATE}.list | sh
- echo
- echo "Compositing pages and boxes..."
- echo
- # Compositing pages and boxes
- for f in out-???.png ; do
- composite -compose multiply $f ${f/out/seite} ${f/out/comp}
- done
- # Renaming composite pages
- for f in comp-???.png ; do mv -f $f ${f/comp/seite}; done
- echo
- echo "Mounting tile overviews..."
- echo
- # Tiled overview
- montage -geometry +1+1 -tile 20x -border 1 seite-???.png thumb_xxl.png
- # Statuszeile 1
- convert -size 770x160 -pointsize 16 -gravity center label:"130+ Quellen mit eigener Farbe. Sonstige Quellen in Rot." status1.png
- # Thin status line 2
- convert -size 770x22 -pointsize 16 -gravity center label:"$DAT2 | $FRAGMENTS Fragmente mit $PLAGZEILEN Zeilen ($PLAGPROZENT%) | http://de.guttenplag.wikia.com/wiki/Benutzer:User8" status2_thin.png
- # Statuszeile 1 + 2 thin
- composite -compose multiply -gravity east -geometry +0+40 status2_thin.png status1.png legende.png
- # Kacheln + Statuszeilen
- composite -gravity southeast legende.png thumb_xxl.png out.png
- # Kacheln + Statuszeile + vertikale Farblegende
- convert -depth 8 -quality 30 out.png ../images/legend_vertical.png +append thumb_${DATE}.png && rm -f out.png
- echo
- echo "Generating a stacked histogramme.."
- echo
- # Generate a stacked histogramme, using gnuplot
- awk -f ../scripts/author_stats.awk ../download/zeilen_${DATE}.list | sort -t " " -nr -k11 > author_stats.txt
- # Gnuplot generates tmp1_stats.png
- gnuplot ../scripts/author_stats.gp
- # Rotate
- convert -rotate 90 tmp1_stats.png tmp2_stats.png
- # Crop left border
- convert -crop 950x2000+50+0 -gravity NorthWest tmp2_stats.png tmp3_stats.png
- # Now we need to add a rotated static legend... :-(
- composite -gravity NorthWest -geometry +600+250 ../images/legend_stats.png tmp3_stats.png tmp4_stats.png
- # Add status line, generate final image
- composite -depth 8 status2_thin.png -gravity NorthEast -geometry +0+5 tmp4_stats.png quell_stats_${DATE}.png
- rm -f tmp?_stats.png
- echo
- echo "$(date +'%d.%m.%Y %H:%M') -- Done!"
- echo
- exit 0
- ####### END of update.sh bash script #######
- ####### AWK scripts: zeilen.awk, colorise.awk and quelle_color.awk #######
- #
- # If you are having trouble with @include (which is a new feature of not yet released Gawk v4)
- # then you could remove @include and copy & paste the content of quelle_color.awk there
- #
- ==> zeilen.awk <==
- @include "quelle_color.awk"
- BEGIN { FS = OFS = "\t" ; IGNORCASE = 1 }
- {
- cat_num = qll_num = ""
- for (i = 1; i < numPLAGKAT; i++) {
- if (tolower($0) ~ tolower(PLAGKAT[i])) {
- cat_num = i
- break
- }
- }
- if (! cat_num) {
- cat_num = numPLAGKAT
- print $0 > "cat_not_found.list"
- }
- for (i = 1; i < numQUELLE; i++) {
- if (tolower($0) ~ tolower(QUELLE[i] "]")) {
- qll_num = i
- break
- }
- }
- if (! qll_num) {
- qll_num = numQUELLE
- print $0 > "qll_not_found.list"
- }
- split($3, z, "-")
- # start line
- sl = z[1] + 0
- # end line
- el = z[2] ? z[2] + 0 : sl
- # Fragment.. (str) | Seite (num) | start_line | end_line | curr_line | cat_num | qll_num
- for (i = sl; i <= el; i++)
- print $1, $2 + 0, sl, el, i, cat_num, qll_num
- }
- ==> colorise.awk <==
- #
- # Usage:
- # awk -f colorise.awk zeilenpositionen.txt zeilen_YYMMDD_HHMM.list
- # zeilenpositionen.txt ist eine 1:1 Kopie vom Wiki [[Zeilenpositionen]]
- #
- @include "quelle_color.awk"
- BEGIN {
- PROCINFO["sorted_in"] = "ascending"
- # Scale factor for PDF background = 8
- if (large) {
- fact = 8
- prefix = "page-"
- } else {
- fact = 1
- prefix = "out-"
- }
- width = 104 * fact
- height = 158 * fact
- # Quotes as variables
- sq = "\'"
- dq = "\""
- }
- # Remember the line positions as given in zeilenpositionen.txt
- NR == FNR {
- f = split($0, fld, ":")
- if (f == 3) {
- key = sprintf("%03d", fld[1])
- n = split(fld[2], line, ",")
- num_lines[key] = n
- for (i in line)
- ZP[key,i] = line[i] / 100
- n = split(fld[3], note, ",")
- num_notes[key] = n
- for (i in note)
- NP[key,i] = note[i] / 100
- }
- next
- }
- # colorise boxes, per fragment
- ! a[$1,$2,$3]++ {
- if (! prevPage) prevPage = $2
- if (prevPage != $2) {
- print "convert -size " width "x" height " xc:none -pointsize 10" plot_cmd, prefix prevPage ".png"
- plot_cmd = ""
- }
- # start and end line
- sl = $5 ; el = $6
- # Kategorie, Quelle
- pk = $8 ; qu = $9
- plot_cmd = plot_cmd box()
- prevPage = $2
- }
- # take care of the last page
- END {
- if ($2 < 408)
- print "convert -size " width "x" height " xc:none -pointsize 10" plot_cmd, prefix prevPage ".png"
- }
- function box( ulx, uly, lrx, lry, text_pos, str) {
- # upper left x coordinate of the box
- ulx = 0.08 * width # left-shifted thumbs
- # upper left y coordinate of the box
- uly = height * ( sl < 100 ? ZP[$2, sl] : NP[$2, sl - 100] )
- # upper left y coordinate, adjusted by half a line (~0.25% of the height)
- uly = uly - 0.0025 * height
- # lower right y coordinate of the box
- lrx = 0.86 * width # left-shifted thumbs
- # lower right y coordinate, adjusted
- lry = height * ( el < 100 ? ZP[$2, el] : NP[$2, el - 100] )
- # Now we have to go to the bottom of the end line (adding ~1.5% of the height)
- lry = lry + 0.0125 * height
- ulx = sprintf("%.0f", ulx )
- uly = sprintf("%.0f", uly )
- llx = sprintf("%.0f", llx )
- lly = sprintf("%.0f", lly )
- text_pos = sprintf ("%.0f", ( uly + lry ) / 2 - 4 )
- ### Default values ###
- qu = qu == numQUELLE ? "(*)" : qu
- color = qu == "(*)" ? "red" : COLOR[qu]
- randnotiz = qu
- ### By author modification ###
- if (single_aut) {
- color = "red"
- randnotiz = KURZKAT[pk]
- }
- ### For PDF background ###
- if (large) {
- ulx = 0.11 * width
- lrx = 0.89 * width
- randnotiz = substr($1,10) FS KURZKAT[pk]
- }
- str = FS "-fill " color " -draw " sq "rectangle " ulx "," uly FS lrx "," lry sq " -fill blue -gravity NorthEast -draw " sq "text 1," text_pos FS dq randnotiz dq sq
- return str
- }
- ==> quelle_color.awk <==
- BEGIN {
- numQUELLE = split("Abromeit.2001 Ackerman.2000 Adams.1992 Annaheim.1992 Bauer.2002 Beer.2000 Blankenburg.1998 Blumenwitz.1998 Blumenwitz.2003 Bocklet.2003 Bouton.2001 Brockhaus.1986 Brugger.1994 Buck.1996 Bundestag.2003 Burgard.2000 Burghardt.2002 Böckenförde.1999 CRS.Annotated.Constitution.1992 Casper.2001 Century.Foundation.1999 Chiang.2003 Currie.1998 Di.Fabio.2001 Dippel.2001 Dix.2001 Duftner.2001 Egerer.1989 Examen.Europaeum.Consortium.o.J. Fraenkel.1960 Freiburghaus.2003 Fuchs.2002 Giering.o.J. Grimm.1994 Grimm.2001 Guérot.2001 Görlitz.2003 Görlitz.2003b Habermas.2001 Haller.1973 Haller.2003 Haltern.1998 Haratsch.2000 Hartleif.2004 Heideking.1998 Heideking.2004 Held.2004 Hellriegel/Thoma.2005 Heun.1999 Hirsch.2001 Hirsch.2002 Hofmeister.1988 Hummer.2003 Häberle.1992 Häberle.2006 Hänsch.2003 Janssen.2005 Jouanjan.2003 Kimmel.1990 Kimmel.1994 Kirchhof.1998 Koeppen.2003 Kreis.2003 Kühnhardt.2003 Kühnhardt.2004 Kühnhardt.2005 LZB.NDS.2004 Landtag-BW.2002 Langen.2003 Loewenstein.1959 Läufer.1994 Marhold.2006 Martenczuk.2000 Marxer.2004 Maurer.2003 Maurer.2005 Mayer.2003 Mayer.2004 Moisi.2001 Murphy.2000 Nettesheim.2002 Nettesheim.2004 Neuss.2000 Obermüller.2003 Opolka.1998 Pechstein.2000 Pentzlin.2003 Pernice.2001 Peters.2003 Pieper.1998 Rakove.2003 Ratzmann.2003 Reinalter.2006 Reinhard.1999 Robbers.2003 Sautter.1976 Scharpf.1995 Schieren.2002 Schmitz.2001 Schnepel.2003 Scholz.2001 Schulze.1999 Schwab.2001 Schäfer.2005 Schütz.2000 Shell.1992 Shell.2005 Sokatscheva.2000 Stein.1997 Steinberger.1987 Steinkamp.1999 Stern.1977 Stern.1997 Stoiber.2001 Stolleis.2002 Stürmer.2001 Tammler.2003 Tammler.2004 Thalmaier.2005 Triebel.2003 Tushnet.1999 U.S..Diplomatic.Mission.to.Germany U.S..Diplomatic.Mission.to.Germany.2004 Vaubel.2003 Vile.1991 Volkmann-Schluck.2001 Waibel.2001 Wasser.1997 Wasser.1997b Weege.2005 Zehnpfennig.1997 Zippelius.1999 Sonstige.Quelle", QUELLE, " ")
- numCOLOR = split("darkolivegreen olivedrab yellowgreen olivedrab3 olivedrab2 olivedrab1 darkolivegreen2 darkolivegreen1 darkolivegreen3 greenyellow chartreuse3 chartreuse2 chartreuse1 chartreuse lawngreen darkgreen green forestgreen green3 green2 limegreen lime green1 palegreen3 darkseagreen darkseagreen3 mediumforestgreen seagreen2 seagreen1 seagreen3 seagreen mediumseagreen springgreen3 springgreen2 springgreen1 springgreen mediumspringgreen turquoise mediumturquoise teal darkcyan cyan3 cyan2 cyan1 cyan aqua darkturquoise turquoise3 turquoise2 turquoise1 deepskyblue3 deepskyblue2 deepskyblue1 deepskyblue skyblue skyblue3 skyblue2 skyblue1 steelblue3 steelblue2 steelblue1 steelblue dodgerblue3 dodgerblue2 dodgerblue1 dodgerblue cornflowerblue royalblue3 royalblue2 royalblue1 royalblue mediumblue blue3 blue2 blue1 blue slateblue3 slateblue2 slateblue1 slateblue mediumslateblue mediumpurple3 mediumpurple2 mediumpurple1 mediumpurple purple1 purple3 purple2 blueviolet purple darkorchid2 darkorchid3 darkorchid1 darkorchid darkviolet mediumorchid3 mediumorchid2 mediumorchid1 mediumorchid purple darkmagenta magenta3 magenta2 magenta1 magenta fuchsia violet orchid3 orchid1 orchid orchid2 violetred mediumvioletred maroon3 maroon2 maroon1 deeppink3 deeppink2 deeppink1 deeppink hotpink hotpink1 hotpink2 violetred2 violetred1 violetred3 hotpink3 palevioletred3 palevioletred1 palevioletred2 palevioletred crimson maroon darkred red3 brown firebrick red2 firebrick3 red1 brown3 firebrick2 indianred3 indianred brown2 firebrick1 brown1 indianred2 indianred1", COLOR, " ")
- numPLAGKAT = split("Verschleierung KomplettPlagiat ÜbersetzungsPlagiat VerschärftesBauernOpfer BauernOpfer HalbsatzFlickerei ShakeAndPaste StrukturPlagiat Sonstige.Kategorie", PLAGKAT, " ")
- numKURZKAT = split("VS KP ÜP vBO BO HF SAP SP SK", KURZKAT, " ")
- if (debug == 1) {
- print numCOLOR " Farben, " numQUELLE " Quellen" > "/dev/stderr"
- for (i = 1; i <= numQUELLE; i++) {
- str = length(QUELLE[i]) > 20 ? substr(QUELLE[i], 1, 18) ".." : QUELLE[i]
- printf "%4d|%03d|%s|%s\n", i, i, str, COLOR[i]
- }
- }
- if (debug == 2)
- for (i = 1; i <= numPLAGKAT; i++)
- print i, "=", PLAGKAT[i], "=", KURZKAT[i]
- if (debug == 3)
- for (i = 1; i <= numQUELLE; i++)
- print i, "=", QUELLE[i], "=", COLOR[i]
- }
- ####### author_stats.awk and author_stats.gp are used for Gnuplotting #######
- ==> author_stats.awk <==
- @include "quelle_color.awk"
- BEGIN { PROCINFO["sorted_in"] = "ascending" ; OFS = "\t" }
- # Avoid duplicates
- ! a[$2,$7]++ {
- pk = $8
- qu = $9
- Z[qu][pk]++ # count lines by quelle
- T[qu]++ # total number of lines by quelle
- H[pk]++ # total number of lines by category
- }
- END {
- # Print header
- printf "%s\t", "Quelle"
- for (i = 1; i <= numPLAGKAT; i++)
- printf "%s\t", PLAGKAT[i]
- print 99999 # Should be "sum", 9999 needed for numeric sort later
- # Print data
- for (i in T) {
- printf "%s\t", ( length(QUELLE[i]) > 40 ? substr(QUELLE[i], 1, 38) ".." : QUELLE[i] )
- for (j = 1; j <= numPLAGKAT; j++)
- printf "%s\t", Z[i][j] + 0
- print T[i] + 0
- }
- }
- ==> author_stats.gp <==
- # Plot column-stacked plag stats
- #
- # Columnstacks
- # xtic labels should be picked up from column heads ('title column')
- # key titles should be picked up from row heads ('key(1)')
- #
- # set terminal png transparent nocrop enhanced font arial 8 size 500,350
- set term png size 2000,1000
- set out "tmp1_stats.png"
- # set title "Quellen und PlagiatsKategorien"
- set style data histograms
- set style histogram rowstacked
- set style fill solid 1.0 border lt -1
- unset key
- # set key noinvert
- set boxwidth 0.8
- set xtic rotate
- set lmargin 12
- set ylabel "Zeilenanzahl"
- # set xlabel "Quelle" rotate
- set xtics rotate nomirror scale 0.0
- set ytics out rotate nomirror
- plot 'author_stats.txt' using 2 ti col, \
- '' using 3 ti col, \
- '' using 4 ti col, \
- '' using 5 ti col, \
- '' using 6 ti col, \
- '' using 7 ti col, \
- '' using 8 ti col, \
- '' using 9:xtic(1):key(1) ti col
- ####### Definitions from quelle_color.awk, for easier reading #######
- ### PLAGKATs and KURZKATs ###
- 1 = Verschleierung = VS
- 2 = KomplettPlagiat = KP
- 3 = ÜbersetzungsPlagiat = ÜP
- 4 = VerschärftesBauernOpfer = vBO
- 5 = BauernOpfer = BO
- 6 = HalbsatzFlickerei = HF
- 7 = ShakeAndPaste = SAP
- 8 = StrukturPlagiat = SP
- 9 = Sonstige.Kategorie = SK
- ### QUELLEn and COLORs ###
- 1 = Abromeit.2001 = darkolivegreen
- 2 = Ackerman.2000 = olivedrab
- 3 = Adams.1992 = yellowgreen
- 4 = Annaheim.1992 = olivedrab3
- 5 = Bauer.2002 = olivedrab2
- 6 = Beer.2000 = olivedrab1
- 7 = Blankenburg.1998 = darkolivegreen2
- 8 = Blumenwitz.1998 = darkolivegreen1
- 9 = Blumenwitz.2003 = darkolivegreen3
- 10 = Bocklet.2003 = greenyellow
- 11 = Bouton.2001 = chartreuse3
- 12 = Brockhaus.1986 = chartreuse2
- 13 = Brugger.1994 = chartreuse1
- 14 = Buck.1996 = chartreuse
- 15 = Bundestag.2003 = lawngreen
- 16 = Burgard.2000 = darkgreen
- 17 = Burghardt.2002 = green
- 18 = Böckenförde.1999 = forestgreen
- 19 = CRS.Annotated.Constitution.1992 = green3
- 20 = Casper.2001 = green2
- 21 = Century.Foundation.1999 = limegreen
- 22 = Chiang.2003 = lime
- 23 = Currie.1998 = green1
- 24 = Di.Fabio.2001 = palegreen3
- 25 = Dippel.2001 = darkseagreen
- 26 = Dix.2001 = darkseagreen3
- 27 = Duftner.2001 = mediumforestgreen
- 28 = Egerer.1989 = seagreen2
- 29 = Examen.Europaeum.Consortium.o.J. = seagreen1
- 30 = Fraenkel.1960 = seagreen3
- 31 = Freiburghaus.2003 = seagreen
- 32 = Fuchs.2002 = mediumseagreen
- 33 = Giering.o.J. = springgreen3
- 34 = Grimm.1994 = springgreen2
- 35 = Grimm.2001 = springgreen1
- 36 = Guérot.2001 = springgreen
- 37 = Görlitz.2003 = mediumspringgreen
- 38 = Görlitz.2003b = turquoise
- 39 = Habermas.2001 = mediumturquoise
- 40 = Haller.1973 = teal
- 41 = Haller.2003 = darkcyan
- 42 = Haltern.1998 = cyan3
- 43 = Haratsch.2000 = cyan2
- 44 = Hartleif.2004 = cyan1
- 45 = Heideking.1998 = cyan
- 46 = Heideking.2004 = aqua
- 47 = Held.2004 = darkturquoise
- 48 = Hellriegel/Thoma.2005 = turquoise3
- 49 = Heun.1999 = turquoise2
- 50 = Hirsch.2001 = turquoise1
- 51 = Hirsch.2002 = deepskyblue3
- 52 = Hofmeister.1988 = deepskyblue2
- 53 = Hummer.2003 = deepskyblue1
- 54 = Häberle.1992 = deepskyblue
- 55 = Häberle.2006 = skyblue
- 56 = Hänsch.2003 = skyblue3
- 57 = Janssen.2005 = skyblue2
- 58 = Jouanjan.2003 = skyblue1
- 59 = Kimmel.1990 = steelblue3
- 60 = Kimmel.1994 = steelblue2
- 61 = Kirchhof.1998 = steelblue1
- 62 = Koeppen.2003 = steelblue
- 63 = Kreis.2003 = dodgerblue3
- 64 = Kühnhardt.2003 = dodgerblue2
- 65 = Kühnhardt.2004 = dodgerblue1
- 66 = Kühnhardt.2005 = dodgerblue
- 67 = LZB.NDS.2004 = cornflowerblue
- 68 = Landtag-BW.2002 = royalblue3
- 69 = Langen.2003 = royalblue2
- 70 = Loewenstein.1959 = royalblue1
- 71 = Läufer.1994 = royalblue
- 72 = Marhold.2006 = mediumblue
- 73 = Martenczuk.2000 = blue3
- 74 = Marxer.2004 = blue2
- 75 = Maurer.2003 = blue1
- 76 = Maurer.2005 = blue
- 77 = Mayer.2003 = slateblue3
- 78 = Mayer.2004 = slateblue2
- 79 = Moisi.2001 = slateblue1
- 80 = Murphy.2000 = slateblue
- 81 = Nettesheim.2002 = mediumslateblue
- 82 = Nettesheim.2004 = mediumpurple3
- 83 = Neuss.2000 = mediumpurple2
- 84 = Obermüller.2003 = mediumpurple1
- 85 = Opolka.1998 = mediumpurple
- 86 = Pechstein.2000 = purple1
- 87 = Pentzlin.2003 = purple3
- 88 = Pernice.2001 = purple2
- 89 = Peters.2003 = blueviolet
- 90 = Pieper.1998 = purple
- 91 = Rakove.2003 = darkorchid2
- 92 = Ratzmann.2003 = darkorchid3
- 93 = Reinalter.2006 = darkorchid1
- 94 = Reinhard.1999 = darkorchid
- 95 = Robbers.2003 = darkviolet
- 96 = Sautter.1976 = mediumorchid3
- 97 = Scharpf.1995 = mediumorchid2
- 98 = Schieren.2002 = mediumorchid1
- 99 = Schmitz.2001 = mediumorchid
- 100 = Schnepel.2003 = purple
- 101 = Scholz.2001 = darkmagenta
- 102 = Schulze.1999 = magenta3
- 103 = Schwab.2001 = magenta2
- 104 = Schäfer.2005 = magenta1
- 105 = Schütz.2000 = magenta
- 106 = Shell.1992 = fuchsia
- 107 = Shell.2005 = violet
- 108 = Sokatscheva.2000 = orchid3
- 109 = Stein.1997 = orchid1
- 110 = Steinberger.1987 = orchid
- 111 = Steinkamp.1999 = orchid2
- 112 = Stern.1977 = violetred
- 113 = Stern.1997 = mediumvioletred
- 114 = Stoiber.2001 = maroon3
- 115 = Stolleis.2002 = maroon2
- 116 = Stürmer.2001 = maroon1
- 117 = Tammler.2003 = deeppink3
- 118 = Tammler.2004 = deeppink2
- 119 = Thalmaier.2005 = deeppink1
- 120 = Triebel.2003 = deeppink
- 121 = Tushnet.1999 = hotpink
- 122 = U.S..Diplomatic.Mission.to.Germany = hotpink1
- 123 = U.S..Diplomatic.Mission.to.Germany.2004 = hotpink2
- 124 = Vaubel.2003 = violetred2
- 125 = Vile.1991 = violetred1
- 126 = Volkmann-Schluck.2001 = violetred3
- 127 = Waibel.2001 = hotpink3
- 128 = Wasser.1997 = palevioletred3
- 129 = Wasser.1997b = palevioletred1
- 130 = Weege.2005 = palevioletred2
- 131 = Zehnpfennig.1997 = palevioletred
- 132 = Zippelius.1999 = crimson
- Sonstige.Quelle = red
- ####### END of documentation #######
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement