Index: /proiecte/HadoopA51/docs/a5/a5-1.c
===================================================================
--- /proiecte/HadoopA51/docs/a5/a5-1.c	(revision 166)
+++ /proiecte/HadoopA51/docs/a5/a5-1.c	(revision 166)
@@ -0,0 +1,322 @@
+#include <stdint.h>
+#include <stdlib.h>
+/*
+ * A pedagogical implementation of A5/1.
+ *
+ * Copyright (C) 1998-1999: Marc Briceno, Ian Goldberg, and David Wagner
+ *
+ * The source code below is optimized for instructional value and clarity.
+ * Performance will be terrible, but that's not the point.
+ * The algorithm is written in the C programming language to avoid ambiguities
+ * inherent to the English language. Complain to the 9th Circuit of Appeals
+ * if you have a problem with that.
+ *
+ * This software may be export-controlled by US law.
+ *
+ * This software is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.
+ * Copyright remains the authors' and as such any Copyright notices in
+ * the code are not to be removed.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * 
+ * The license and distribution terms for any publicly available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution license
+ * [including the GNU Public License.]
+ *
+ * Background: The Global System for Mobile communications is the most widely
+ * deployed cellular telephony system in the world. GSM makes use of
+ * four core cryptographic algorithms, neither of which has been published by
+ * the GSM MOU. This failure to subject the algorithms to public review is all  
+ * the more puzzling given that over 100 million GSM
+ * subscribers are expected to rely on the claimed security of the system.
+ *
+ * The four core GSM algorithms are:
+ * A3		authentication algorithm
+ * A5/1		"strong" over-the-air voice-privacy algorithm
+ * A5/2		"weak" over-the-air voice-privacy algorithm
+ * A8		voice-privacy key generation algorithm
+ *
+ * In April of 1998, our group showed that COMP128, the algorithm used by the
+ * overwhelming majority of GSM providers for both A3 and A8
+ * functionality was fatally flawed and allowed for cloning of GSM mobile
+ * phones.
+ * Furthermore, we demonstrated that all A8 implementations we could locate,
+ * including the few that did not use COMP128 for key generation, had been
+ * deliberately weakened by reducing the keyspace from 64 bits to 54 bits.
+ * The remaining 10 bits are simply set to zero!
+ *
+ * See http://www.scard.org/gsm for additional information.
+ *
+ * The question so far unanswered is if A5/1, the "stronger" of the two
+ * widely deployed voice-privacy algorithm is at least as strong as the
+ * key. Meaning: "Does A5/1 have a work factor of at least 54 bits"?
+ * Absent a publicly available A5/1 reference implementation, this question
+ * could not be answered. We hope that our reference implementation below,
+ * which has been verified against official A5/1 test vectors, will provide
+ * the cryptographic community with the base on which to construct the
+ * answer to this important question.
+ *
+ * Initial indications about the strength of A5/1 are not encouraging.
+ * A variant of A5, while not A5/1 itself, has been estimated to have a
+ * work factor of well below 54 bits. See http://jya.com/crack-a5.htm for
+ * background information and references.
+ * 
+ * With COMP128 broken and A5/1 published below, we will now turn our attention
+ * to A5/2. The latter has been acknowledged by the GSM community to have
+ * been specifically designed by intelligence agencies for lack of security.
+ *
+ * We hope to publish A5/2 later this year.
+ *
+ * -- Marc Briceno	<marc@scard.org>
+ *    Voice:		+1 (925) 798-4042
+ *
+ */
+
+
+#include <stdio.h>
+
+/* Masks for the three shift registers */
+#define R1MASK	0x07FFFF /* 19 bits, numbered 0..18 */
+#define R2MASK	0x3FFFFF /* 22 bits, numbered 0..21 */
+#define R3MASK	0x7FFFFF /* 23 bits, numbered 0..22 */
+
+/* Middle bit of each of the three shift registers, for clock control */
+#define R1MID	0x000100 /* bit 8 */
+#define R2MID	0x000400 /* bit 10 */
+#define R3MID	0x000400 /* bit 10 */
+
+/* Feedback taps, for clocking the shift registers.
+ * These correspond to the primitive polynomials
+ * x^19 + x^5 + x^2 + x + 1, x^22 + x + 1,
+ * and x^23 + x^15 + x^2 + x + 1. */
+#define R1TAPS	0x072000 /* bits 18,17,16,13 */
+#define R2TAPS	0x300000 /* bits 21,20 */
+#define R3TAPS	0x700080 /* bits 22,21,20,7 */
+
+/* Output taps, for output generation */
+#define R1OUT	0x040000 /* bit 18 (the high bit) */
+#define R2OUT	0x200000 /* bit 21 (the high bit) */
+#define R3OUT	0x400000 /* bit 22 (the high bit) */
+
+typedef unsigned char byte;
+typedef unsigned long word;
+typedef word bit;
+
+/* Calculate the parity of a 32-bit word, i.e. the sum of its bits modulo 2 */
+bit parity(word x) {
+	x ^= x>>16;
+	x ^= x>>8;
+	x ^= x>>4;
+	x ^= x>>2;
+	x ^= x>>1;
+	return x&1;
+}
+
+/* Clock one shift register */
+word clockone(word reg, word mask, word taps) {
+	word t = reg & taps;
+	reg = (reg << 1) & mask;
+	reg |= parity(t);
+	return reg;
+}
+
+/* The three shift registers.  They're in global variables to make the code
+ * easier to understand.
+ * A better implementation would not use global variables. */
+word R1, R2, R3;
+
+/* Look at the middle bits of R1,R2,R3, take a vote, and
+ * return the majority value of those 3 bits. */
+bit majority() {
+	int sum;
+	sum = parity(R1&R1MID) + parity(R2&R2MID) + parity(R3&R3MID);
+	if (sum >= 2)
+		return 1;
+	else
+		return 0;
+}
+
+/* Clock two or three of R1,R2,R3, with clock control
+ * according to their middle bits.
+ * Specifically, we clock Ri whenever Ri's middle bit
+ * agrees with the majority value of the three middle bits.*/
+void clock() {
+	bit maj = majority();
+	if (((R1&R1MID)!=0) == maj)
+		R1 = clockone(R1, R1MASK, R1TAPS);
+	if (((R2&R2MID)!=0) == maj)
+		R2 = clockone(R2, R2MASK, R2TAPS);
+	if (((R3&R3MID)!=0) == maj)
+		R3 = clockone(R3, R3MASK, R3TAPS);
+}
+
+/* Clock all three of R1,R2,R3, ignoring their middle bits.
+ * This is only used for key setup. */
+void clockallthree() {
+	R1 = clockone(R1, R1MASK, R1TAPS);
+	R2 = clockone(R2, R2MASK, R2TAPS);
+	R3 = clockone(R3, R3MASK, R3TAPS);
+}
+
+/* Generate an output bit from the current state.
+ * You grab a bit from each register via the output generation taps;
+ * then you XOR the resulting three bits. */
+bit getbit() {
+	return parity(R1&R1OUT)^parity(R2&R2OUT)^parity(R3&R3OUT);
+}
+
+/* Do the A5/1 key setup.  This routine accepts a 64-bit key and
+ * a 22-bit frame number. */
+void keysetup(byte key[8], word frame) {
+	int i;
+	bit keybit, framebit;
+
+	/* Zero out the shift registers. */
+	R1 = R2 = R3 = 0;
+
+	/* Load the key into the shift registers,
+	 * LSB of first byte of key array first,
+	 * clocking each register once for every
+	 * key bit loaded.  (The usual clock
+	 * control rule is temporarily disabled.) */
+	for (i=0; i<64; i++) {
+		clockallthree(); /* always clock */
+		keybit = (key[i/8] >> (i&7)) & 1; /* The i-th bit of the key */
+		R1 ^= keybit; R2 ^= keybit; R3 ^= keybit;
+	}
+
+	/* Load the frame number into the shift
+	 * registers, LSB first,
+	 * clocking each register once for every
+	 * key bit loaded.  (The usual clock
+	 * control rule is still disabled.) */
+	for (i=0; i<22; i++) {
+		clockallthree(); /* always clock */
+		framebit = (frame >> i) & 1; /* The i-th bit of the frame # */
+		R1 ^= framebit; R2 ^= framebit; R3 ^= framebit;
+	}
+
+	/* Run the shift registers for 100 clocks
+	 * to mix the keying material and frame number
+	 * together with output generation disabled,
+	 * so that there is sufficient avalanche.
+	 * We re-enable the majority-based clock control
+	 * rule from now on. */
+	for (i=0; i<100; i++) {
+		clock();
+	}
+
+	/* Now the key is properly set up. */
+}
+	
+/* Generate output.  We generate 228 bits of
+ * keystream output.  The first 114 bits is for
+ * the A->B frame; the next 114 bits is for the
+ * B->A frame.  You allocate a 15-byte buffer
+ * for each direction, and this function fills
+ * it in. */
+void run(byte AtoBkeystream[], byte BtoAkeystream[]) {
+	int i;
+
+	/* Zero out the output buffers. */
+	for (i=0; i<=113/8; i++)
+		AtoBkeystream[i] = BtoAkeystream[i] = 0;
+	
+	/* Generate 114 bits of keystream for the
+	 * A->B direction.  Store it, MSB first. */
+	for (i=0; i<114; i++) {
+		clock();
+		AtoBkeystream[i/8] |= getbit() << (7-(i&7));
+	}
+
+	/* Generate 114 bits of keystream for the
+	 * B->A direction.  Store it, MSB first. */
+	for (i=0; i<114; i++) {
+		clock();
+		BtoAkeystream[i/8] |= getbit() << (7-(i&7));
+	}
+}
+
+/* Test the code by comparing it against
+ * a known-good test vector. */
+void test() {
+	byte key[8] = {0x12, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF};
+	word frame = 0x134;
+	byte goodAtoB[15] = { 0x53, 0x4E, 0xAA, 0x58, 0x2F, 0xE8, 0x15,
+	                      0x1A, 0xB6, 0xE1, 0x85, 0x5A, 0x72, 0x8C, 0x00 };
+	byte goodBtoA[15] = { 0x24, 0xFD, 0x35, 0xA3, 0x5D, 0x5F, 0xB6,
+	                      0x52, 0x6D, 0x32, 0xF9, 0x06, 0xDF, 0x1A, 0xC0 };
+	byte AtoB[15], BtoA[15];
+	int i, failed=0;
+
+	keysetup(key, frame);
+	uint64_t s = R1 << 23 + 22 | R2 << 23 | R3;
+	printf("%x %x %x 0x%llx\n", R1, R2, R3, s);
+	run(AtoB, BtoA);
+
+	/* Compare against the test vector. */
+	for (i=0; i<15; i++)
+		if (AtoB[i] != goodAtoB[i])
+			failed = 1;
+	for (i=0; i<15; i++)
+		if (BtoA[i] != goodBtoA[i])
+			failed = 1;
+
+	/* Print some debugging output. */
+	printf("key: 0x");
+	for (i=0; i<8; i++)
+		printf("%02X", key[i]);
+	printf("\n");
+	printf("frame number: 0x%06X\n", (unsigned int)frame);
+	printf("known good output:\n");
+	printf(" A->B: 0x");
+	for (i=0; i<15; i++)
+		printf("%02X", goodAtoB[i]);
+	printf("  B->A: 0x");
+	for (i=0; i<15; i++)
+		printf("%02X", goodBtoA[i]);
+	printf("\n");
+	printf("observed output:\n");
+	printf(" A->B: 0x");
+	for (i=0; i<15; i++)
+		printf("%02X", AtoB[i]);
+	printf("  B->A: 0x");
+	for (i=0; i<15; i++)
+		printf("%02X", BtoA[i]);
+	printf("\n");
+	
+	if (!failed) {
+		printf("Self-check succeeded: everything looks ok.\n");
+		return;
+	} else {
+		/* Problems!  The test vectors didn't compare*/
+		printf("\nI don't know why this broke; contact the authors.\n");
+		exit(1);
+	}
+}
+
+int main(void) {
+	test();
+	return 0;
+}
Index: /proiecte/HadoopA51/docs/presentation/Makefile
===================================================================
--- /proiecte/HadoopA51/docs/presentation/Makefile	(revision 166)
+++ /proiecte/HadoopA51/docs/presentation/Makefile	(revision 166)
@@ -0,0 +1,20 @@
+BASENAME = hadoop-rainbow-hashes
+HIGHLIGHT = code
+PDF = $(addsuffix .pdf, $(BASENAME))
+TEX = $(addsuffix .tex, $(BASENAME))
+PDFLATEX = pdflatex
+EXTRA_EXTENSIONS = .pdf .aux .log .nav .out .snm .toc
+CLEAN_FILES = $(addprefix $(BASENAME), $(EXTRA_EXTENSIONS))
+
+.PHONY: clean all
+
+all: $(PDF)
+
+$(PDF): $(TEX) $(HIGHLIGHT)/Makefile
+	make -C $(HIGHLIGHT)
+	$(PDFLATEX) $<
+	$(PDFLATEX) $<	# Twice, so TOC is also updated
+
+clean:
+	-make -C $(HIGHLIGHT) clean
+	-rm -f $(CLEAN_FILES) *~
Index: /proiecte/HadoopA51/docs/presentation/code/Makefile
===================================================================
--- /proiecte/HadoopA51/docs/presentation/code/Makefile	(revision 166)
+++ /proiecte/HadoopA51/docs/presentation/code/Makefile	(revision 166)
@@ -0,0 +1,3 @@
+all:
+
+clean:
Index: /proiecte/HadoopA51/docs/presentation/hadoop-rainbow-hashes.aux
===================================================================
--- /proiecte/HadoopA51/docs/presentation/hadoop-rainbow-hashes.aux	(revision 166)
+++ /proiecte/HadoopA51/docs/presentation/hadoop-rainbow-hashes.aux	(revision 166)
@@ -0,0 +1,102 @@
+\relax 
+\ifx\hyper@anchor\@undefined
+\global \let \oldcontentsline\contentsline
+\gdef \contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
+\global \let \oldnewlabel\newlabel
+\gdef \newlabel#1#2{\newlabelxx{#1}#2}
+\gdef \newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
+\AtEndDocument{\let \contentsline\oldcontentsline
+\let \newlabel\oldnewlabel}
+\else
+\global \let \hyper@last\relax 
+\fi
+
+\@writefile{toc}{\beamer@endinputifotherversion {3.07pt}}
+\@writefile{nav}{\beamer@endinputifotherversion {3.07pt}}
+\select@language{english}
+\@writefile{toc}{\select@language{english}}
+\@writefile{lof}{\select@language{english}}
+\@writefile{lot}{\select@language{english}}
+\@writefile{nav}{\headcommand {\slideentry {0}{0}{1}{1/1}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {1}{1}}}
+\@writefile{nav}{\headcommand {\slideentry {0}{0}{2}{2/2}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {2}{2}}}
+\@writefile{toc}{\beamer@sectionintoc {1}{Introduction}{3}{0}{1}}
+\@writefile{nav}{\headcommand {\sectionentry {1}{Introduction}{3}{Introduction}{0}}}
+\@writefile{nav}{\headcommand {\beamer@sectionpages {1}{2}}}
+\@writefile{nav}{\headcommand {\beamer@subsectionpages {1}{2}}}
+\@writefile{nav}{\headcommand {\slideentry {1}{0}{3}{3/3}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {3}{3}}}
+\@writefile{nav}{\headcommand {\slideentry {1}{0}{4}{4/4}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {4}{4}}}
+\@writefile{nav}{\headcommand {\slideentry {1}{0}{5}{5/5}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {5}{5}}}
+\@writefile{nav}{\headcommand {\slideentry {1}{0}{6}{6/6}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {6}{6}}}
+\@writefile{nav}{\headcommand {\slideentry {1}{0}{7}{7/7}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {7}{7}}}
+\@writefile{toc}{\beamer@sectionintoc {2}{Rainbow tables}{8}{0}{2}}
+\@writefile{nav}{\headcommand {\sectionentry {2}{Rainbow tables}{8}{Rainbow tables}{0}}}
+\@writefile{nav}{\headcommand {\beamer@sectionpages {3}{7}}}
+\@writefile{nav}{\headcommand {\beamer@subsectionpages {3}{7}}}
+\@writefile{nav}{\headcommand {\slideentry {2}{0}{8}{8/8}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {8}{8}}}
+\@writefile{nav}{\headcommand {\slideentry {2}{0}{9}{9/9}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {9}{9}}}
+\@writefile{nav}{\headcommand {\slideentry {2}{0}{10}{10/10}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {10}{10}}}
+\@writefile{nav}{\headcommand {\slideentry {2}{0}{11}{11/11}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {11}{11}}}
+\@writefile{nav}{\headcommand {\slideentry {2}{0}{12}{12/12}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {12}{12}}}
+\@writefile{nav}{\headcommand {\slideentry {2}{0}{13}{13/13}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {13}{13}}}
+\@writefile{nav}{\headcommand {\slideentry {2}{0}{14}{14/14}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {14}{14}}}
+\@writefile{nav}{\headcommand {\slideentry {2}{0}{15}{15/15}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {15}{15}}}
+\@writefile{toc}{\beamer@sectionintoc {3}{Hadoop}{16}{0}{3}}
+\@writefile{nav}{\headcommand {\sectionentry {3}{Hadoop}{16}{Hadoop}{0}}}
+\@writefile{nav}{\headcommand {\beamer@sectionpages {8}{15}}}
+\@writefile{nav}{\headcommand {\beamer@subsectionpages {8}{15}}}
+\@writefile{nav}{\headcommand {\slideentry {3}{0}{16}{16/16}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {16}{16}}}
+\@writefile{nav}{\headcommand {\slideentry {3}{0}{17}{17/17}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {17}{17}}}
+\@writefile{nav}{\headcommand {\slideentry {3}{0}{18}{18/18}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {18}{18}}}
+\@writefile{nav}{\headcommand {\slideentry {3}{0}{19}{19/19}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {19}{19}}}
+\@writefile{toc}{\beamer@sectionintoc {4}{Cracking A5/1 with Hadoop}{20}{0}{4}}
+\@writefile{nav}{\headcommand {\sectionentry {4}{Cracking A5/1 with Hadoop}{20}{Cracking A5/1 with Hadoop}{0}}}
+\@writefile{nav}{\headcommand {\beamer@sectionpages {16}{19}}}
+\@writefile{nav}{\headcommand {\beamer@subsectionpages {16}{19}}}
+\@writefile{nav}{\headcommand {\slideentry {4}{0}{20}{20/20}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {20}{20}}}
+\@writefile{nav}{\headcommand {\slideentry {4}{0}{21}{21/21}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {21}{21}}}
+\@writefile{nav}{\headcommand {\slideentry {4}{0}{22}{22/22}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {22}{22}}}
+\@writefile{nav}{\headcommand {\slideentry {4}{0}{23}{23/23}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {23}{23}}}
+\@writefile{nav}{\headcommand {\slideentry {4}{0}{24}{24/24}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {24}{24}}}
+\@writefile{nav}{\headcommand {\slideentry {4}{0}{25}{25/25}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {25}{25}}}
+\@writefile{toc}{\beamer@sectionintoc {5}{Conclusion}{26}{0}{5}}
+\@writefile{nav}{\headcommand {\sectionentry {5}{Conclusion}{26}{Conclusion}{0}}}
+\@writefile{nav}{\headcommand {\beamer@sectionpages {20}{25}}}
+\@writefile{nav}{\headcommand {\beamer@subsectionpages {20}{25}}}
+\@writefile{nav}{\headcommand {\slideentry {5}{0}{26}{26/26}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {26}{26}}}
+\@writefile{nav}{\headcommand {\slideentry {5}{0}{27}{27/27}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {27}{27}}}
+\@writefile{nav}{\headcommand {\slideentry {5}{0}{28}{28/28}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {28}{28}}}
+\@writefile{nav}{\headcommand {\slideentry {5}{0}{29}{29/29}{}{0}}}
+\@writefile{nav}{\headcommand {\beamer@framepages {29}{29}}}
+\@writefile{nav}{\headcommand {\beamer@partpages {1}{29}}}
+\@writefile{nav}{\headcommand {\beamer@subsectionpages {26}{29}}}
+\@writefile{nav}{\headcommand {\beamer@sectionpages {26}{29}}}
+\@writefile{nav}{\headcommand {\beamer@documentpages {29}}}
+\@writefile{nav}{\headcommand {\def \inserttotalframenumber {29}}}
Index: /proiecte/HadoopA51/docs/presentation/hadoop-rainbow-hashes.log
===================================================================
--- /proiecte/HadoopA51/docs/presentation/hadoop-rainbow-hashes.log	(revision 166)
+++ /proiecte/HadoopA51/docs/presentation/hadoop-rainbow-hashes.log	(revision 166)
@@ -0,0 +1,865 @@
+This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6) (format=pdflatex 2009.11.27)  19 JAN 2010 01:50
+entering extended mode
+ %&-line parsing enabled.
+**hadoop-rainbow-hashes.tex
+(./hadoop-rainbow-hashes.tex
+LaTeX2e <2005/12/01>
+Babel <v3.8h> and hyphenation patterns for english, usenglishmax, dumylang, noh
+yphenation, loaded.
+(/usr/share/texmf/tex/latex/beamer/base/beamer.cls
+(/usr/share/texmf/tex/latex/beamer/base/beamerbasercs.sty
+Package: beamerbasercs 2007/01/28 (rcs-revision 1.4)
+)
+Document Class: beamer 2007/03/11 cvs version 3.07 A class for typesetting pres
+entations (rcs-revision 1.70)
+(/usr/share/texmf/tex/latex/beamer/base/beamerbasemodes.sty
+Package: beamerbasemodes 2007/01/28 (rcs-revision 1.22)
+\beamer@tempbox=\box26
+\beamer@tempcount=\count79
+\c@beamerpauses=\count80
+
+(/usr/share/texmf/tex/latex/beamer/base/beamerbasedecode.sty
+Package: beamerbasedecode 2007/01/28 (rcs-revision 1.20)
+\beamer@slideinframe=\count81
+\beamer@minimum=\count82
+)
+\beamer@commentbox=\box27
+\beamer@modecount=\count83
+)
+\headheight=\dimen102
+\headdp=\dimen103
+\footheight=\dimen104
+\sidebarheight=\dimen105
+\beamer@tempdim=\dimen106
+\beamer@finalheight=\dimen107
+\beamer@animht=\dimen108
+\beamer@animdp=\dimen109
+\beamer@animwd=\dimen110
+\beamer@leftmargin=\dimen111
+\beamer@rightmargin=\dimen112
+\beamer@leftsidebar=\dimen113
+\beamer@rightsidebar=\dimen114
+\beamer@boxsize=\dimen115
+\beamer@vboxoffset=\dimen116
+\beamer@descdefault=\dimen117
+\beamer@descriptionwidth=\dimen118
+\beamer@lastskip=\skip41
+\beamer@areabox=\box28
+\beamer@animcurrent=\box29
+\beamer@animshowbox=\box30
+\beamer@sectionbox=\box31
+\beamer@logobox=\box32
+\beamer@linebox=\box33
+\beamer@sectioncount=\count84
+\beamer@subsubsectionmax=\count85
+\beamer@subsectionmax=\count86
+\beamer@sectionmax=\count87
+\beamer@totalheads=\count88
+\beamer@headcounter=\count89
+\beamer@partstartpage=\count90
+\beamer@sectionstartpage=\count91
+\beamer@subsectionstartpage=\count92
+\beamer@animationtempa=\count93
+\beamer@animationtempb=\count94
+\beamer@xpos=\count95
+\beamer@ypos=\count96
+\beamer@showpartnumber=\count97
+\beamer@currentsubsection=\count98
+\beamer@coveringdepth=\count99
+\beamer@sectionadjust=\count100
+\beamer@tocsectionnumber=\count101
+
+(/usr/share/texmf/tex/latex/beamer/base/beamerbaseoptions.sty
+Package: beamerbaseoptions 2007/01/28 (rcs-revision 1.8)
+
+(/usr/share/texmf-texlive/tex/latex/graphics/keyval.sty
+Package: keyval 1999/03/16 v1.13 key=value parser (DPC)
+\KV@toks@=\toks14
+))
+(/usr/share/texmf/tex/latex/pgf/basiclayer/pgfcore.sty
+(/usr/share/texmf-texlive/tex/latex/graphics/graphicx.sty
+Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR)
+
+(/usr/share/texmf-texlive/tex/latex/graphics/graphics.sty
+Package: graphics 2006/02/20 v1.0o Standard LaTeX Graphics (DPC,SPQR)
+
+(/usr/share/texmf-texlive/tex/latex/graphics/trig.sty
+Package: trig 1999/03/16 v1.09 sin cos tan (DPC)
+)
+(/etc/texmf/tex/latex/config/graphics.cfg
+File: graphics.cfg 2007/01/18 v1.5 graphics configuration of teTeX/TeXLive
+)
+Package graphics Info: Driver file: pdftex.def on input line 90.
+
+(/usr/share/texmf-texlive/tex/latex/pdftex-def/pdftex.def
+File: pdftex.def 2007/01/08 v0.04d Graphics/color for pdfTeX
+\Gread@gobject=\count102
+))
+\Gin@req@height=\dimen119
+\Gin@req@width=\dimen120
+)
+(/usr/share/texmf/tex/latex/pgf/systemlayer/pgfsys.sty
+(/usr/share/texmf/tex/latex/pgf/utilities/pgfrcs.sty
+(/usr/share/texmf/tex/generic/pgf/utilities/pgfutil-common.tex
+\pgfutil@everybye=\toks15
+)
+(/usr/share/texmf/tex/generic/pgf/utilities/pgfutil-latex.def)
+(/usr/share/texmf/tex/generic/pgf/utilities/pgfrcs.code.tex
+Package: pgfrcs 2008/02/20 v2.00 (rcs-revision 1.21)
+))
+(/usr/share/texmf/tex/generic/pgf/systemlayer/pgfsys.code.tex
+Package: pgfsys 2008/02/07 v2.00 (rcs-revision 1.31)
+
+(/usr/share/texmf/tex/generic/pgf/utilities/pgfkeys.code.tex
+\pgfkeys@pathtoks=\toks16
+\pgfkeys@temptoks=\toks17
+)
+\pgf@x=\dimen121
+\pgf@y=\dimen122
+\pgf@xa=\dimen123
+\pgf@ya=\dimen124
+\pgf@xb=\dimen125
+\pgf@yb=\dimen126
+\pgf@xc=\dimen127
+\pgf@yc=\dimen128
+\c@pgf@counta=\count103
+\c@pgf@countb=\count104
+\c@pgf@countc=\count105
+\c@pgf@countd=\count106
+
+(/usr/share/texmf/tex/generic/pgf/systemlayer/pgf.cfg
+File: pgf.cfg 2008/01/13  (rcs-revision 1.6)
+)
+Package pgfsys Info: Driver file for pgf: pgfsys-pdftex.def on input line 885.
+
+(/usr/share/texmf/tex/generic/pgf/systemlayer/pgfsys-pdftex.def
+File: pgfsys-pdftex.def 2007/12/20  (rcs-revision 1.20)
+
+(/usr/share/texmf/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def
+File: pgfsys-common-pdf.def 2007/12/17  (rcs-revision 1.8)
+)))
+(/usr/share/texmf/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex
+File: pgfsyssoftpath.code.tex 2008/01/23  (rcs-revision 1.6)
+\pgfsyssoftpath@smallbuffer@items=\count107
+\pgfsyssoftpath@bigbuffer@items=\count108
+)
+(/usr/share/texmf/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex
+File: pgfsysprotocol.code.tex 2006/10/16  (rcs-revision 1.4)
+))
+(/usr/share/texmf/tex/latex/xcolor/xcolor.sty
+Package: xcolor 2007/01/21 v2.11 LaTeX color extensions (UK)
+
+(/etc/texmf/tex/latex/config/color.cfg
+File: color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive
+)
+Package xcolor Info: Driver file: pdftex.def on input line 225.
+Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1337.
+Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1341.
+Package xcolor Info: Model `RGB' extended on input line 1353.
+Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1355.
+Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1356.
+Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1357.
+Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1358.
+Package xcolor Info: Model `Gray' substituted by `gray' on input line 1359.
+Package xcolor Info: Model `wave' substituted by `hsb' on input line 1360.
+)
+(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcore.code.tex
+Package: pgfcore 2008/01/15 v2.00 (rcs-revision 1.6)
+
+(/usr/share/texmf/tex/generic/pgf/math/pgfmath.code.tex
+(/usr/share/texmf/tex/generic/pgf/math/pgfmathcalc.code.tex
+(/usr/share/texmf/tex/generic/pgf/math/pgfmathutil.code.tex
+\pgfmath@box=\box34
+)
+(/usr/share/texmf/tex/generic/pgf/math/pgfmathparser.code.tex
+\pgfmath@stack=\toks18
+\c@pgfmath@parsecounta=\count109
+\c@pgfmath@parsecountb=\count110
+\c@pgfmath@parsecountc=\count111
+\pgfmath@parsex=\dimen129
+)
+(/usr/share/texmf/tex/generic/pgf/math/pgfmathoperations.code.tex
+(/usr/share/texmf/tex/generic/pgf/math/pgfmathtrig.code.tex)
+(/usr/share/texmf/tex/generic/pgf/math/pgfmathrnd.code.tex))
+(/usr/share/texmf/tex/generic/pgf/math/pgfmathbase.code.tex)))
+(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex
+File: pgfcorepoints.code.tex 2008/02/03  (rcs-revision 1.13)
+\pgf@picminx=\dimen130
+\pgf@picmaxx=\dimen131
+\pgf@picminy=\dimen132
+\pgf@picmaxy=\dimen133
+\pgf@pathminx=\dimen134
+\pgf@pathmaxx=\dimen135
+\pgf@pathminy=\dimen136
+\pgf@pathmaxy=\dimen137
+\pgf@xx=\dimen138
+\pgf@xy=\dimen139
+\pgf@yx=\dimen140
+\pgf@yy=\dimen141
+\pgf@zx=\dimen142
+\pgf@zy=\dimen143
+)
+(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex
+File: pgfcorepathconstruct.code.tex 2008/02/13  (rcs-revision 1.14)
+\pgf@path@lastx=\dimen144
+\pgf@path@lasty=\dimen145
+)
+(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex
+File: pgfcorepathusage.code.tex 2008/01/23  (rcs-revision 1.11)
+\pgf@shorten@end@additional=\dimen146
+\pgf@shorten@start@additional=\dimen147
+)
+(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex
+File: pgfcorescopes.code.tex 2008/01/15  (rcs-revision 1.26)
+\pgfpic=\box35
+\pgf@hbox=\box36
+\pgf@layerbox@main=\box37
+\pgf@picture@serial@count=\count112
+)
+(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex
+File: pgfcoregraphicstate.code.tex 2007/12/12  (rcs-revision 1.8)
+\pgflinewidth=\dimen148
+)
+(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex
+File: pgfcoretransformations.code.tex 2008/02/04  (rcs-revision 1.10)
+\pgf@pt@x=\dimen149
+\pgf@pt@y=\dimen150
+\pgf@pt@temp=\dimen151
+)
+(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorequick.code.tex
+File: pgfcorequick.code.tex 2006/10/11  (rcs-revision 1.2)
+)
+(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex
+File: pgfcoreobjects.code.tex 2006/10/11  (rcs-revision 1.2)
+)
+(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex
+File: pgfcorepathprocessing.code.tex 2008/01/23  (rcs-revision 1.7)
+)
+(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex
+File: pgfcorearrows.code.tex 2007/06/07  (rcs-revision 1.8)
+)
+(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex
+File: pgfcoreshade.code.tex 2007/12/10  (rcs-revision 1.9)
+\pgf@max=\dimen152
+\pgf@sys@shading@range@num=\count113
+)
+(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex
+File: pgfcoreimage.code.tex 2008/01/15  (rcs-revision 1.1)
+\pgfexternal@startupbox=\box38
+)
+(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex
+File: pgfcorelayers.code.tex 2008/01/15  (rcs-revision 1.1)
+)
+(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex
+File: pgfcoretransparency.code.tex 2008/01/17  (rcs-revision 1.2)
+)
+(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex
+File: pgfcorepatterns.code.tex 2008/01/15  (rcs-revision 1.1)
+)))
+(/usr/share/texmf/tex/latex/pgf/basiclayer/pgfbaseimage.sty
+
+Package pgf Warning: This package is obsolete and no longer needed on input lin
+e 13.
+
+) (/usr/share/texmf/tex/latex/pgf/utilities/xxcolor.sty
+Package: xxcolor 2003/10/24 ver 0.1
+\XC@nummixins=\count114
+\XC@countmixins=\count115
+)
+(/usr/share/texmf-texlive/tex/latex/amsfonts/amssymb.sty
+Package: amssymb 2002/01/22 v2.2d
+
+(/usr/share/texmf-texlive/tex/latex/amsfonts/amsfonts.sty
+Package: amsfonts 2001/10/25 v2.2f
+\@emptytoks=\toks19
+\symAMSa=\mathgroup4
+\symAMSb=\mathgroup5
+LaTeX Font Info:    Overwriting math alphabet `\mathfrak' in version `bold'
+(Font)                  U/euf/m/n --> U/euf/b/n on input line 132.
+))
+(/usr/share/texmf-texlive/tex/latex/geometry/geometry.sty
+Package: geometry 2002/07/08 v3.2 Page Geometry
+\Gm@cnth=\count116
+\Gm@cntv=\count117
+\c@Gm@tempcnt=\count118
+\Gm@bindingoffset=\dimen153
+\Gm@wd@mp=\dimen154
+\Gm@odd@mp=\dimen155
+\Gm@even@mp=\dimen156
+\Gm@dimlist=\toks20
+)
+(/usr/share/texmf-texlive/tex/latex/hyperref/hyperref.sty
+Package: hyperref 2007/02/07 v6.75r Hypertext links for LaTeX
+\@linkdim=\dimen157
+\Hy@linkcounter=\count119
+\Hy@pagecounter=\count120
+
+(/usr/share/texmf-texlive/tex/latex/hyperref/pd1enc.def
+File: pd1enc.def 2007/02/07 v6.75r Hyperref: PDFDocEncoding definition (HO)
+)
+(/etc/texmf/tex/latex/config/hyperref.cfg
+File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive
+)
+(/usr/share/texmf-texlive/tex/latex/oberdiek/kvoptions.sty
+Package: kvoptions 2006/08/22 v2.4 Connects package keyval with LaTeX options (
+HO)
+)
+Package hyperref Info: Option `bookmarks' set `true' on input line 2238.
+Package hyperref Info: Option `bookmarksopen' set `true' on input line 2238.
+Package hyperref Info: Option `implicit' set `false' on input line 2238.
+Package hyperref Info: Hyper figures OFF on input line 2288.
+Package hyperref Info: Link nesting OFF on input line 2293.
+Package hyperref Info: Hyper index ON on input line 2296.
+Package hyperref Info: Plain pages OFF on input line 2303.
+Package hyperref Info: Backreferencing OFF on input line 2308.
+
+Implicit mode OFF; no redefinition of LaTeX internals
+Package hyperref Info: Bookmarks ON on input line 2444.
+(/usr/share/texmf-texlive/tex/latex/ltxmisc/url.sty
+\Urlmuskip=\muskip10
+Package: url 2005/06/27  ver 3.2  Verb mode for urls, etc.
+)
+LaTeX Info: Redefining \url on input line 2599.
+\Fld@menulength=\count121
+\Field@Width=\dimen158
+\Fld@charsize=\dimen159
+\Choice@toks=\toks21
+\Field@toks=\toks22
+Package hyperref Info: Hyper figures OFF on input line 3102.
+Package hyperref Info: Link nesting OFF on input line 3107.
+Package hyperref Info: Hyper index ON on input line 3110.
+Package hyperref Info: backreferencing OFF on input line 3117.
+Package hyperref Info: Link coloring OFF on input line 3122.
+
+
+Package hyperref Warning: Option `pdfpagelabels' is turned off
+(hyperref)                because \thepage is undefined.
+
+Hyperref stopped early
+)
+*hyperref using default driver hpdftex*
+(/usr/share/texmf-texlive/tex/latex/hyperref/hpdftex.def
+File: hpdftex.def 2007/02/07 v6.75r Hyperref driver for pdfTeX
+\Fld@listcount=\count122
+)
+(/usr/share/texmf-texlive/tex/latex/base/size11.clo
+File: size11.clo 2005/09/16 v1.4f Standard LaTeX file (size option)
+)
+(/usr/share/texmf/tex/latex/beamer/base/beamerbasecompatibility.sty
+Package: beamerbasecompatibility 2007/01/28  (rcs-revision 1.63)
+)
+(/usr/share/texmf/tex/latex/beamer/base/beamerbasefont.sty
+Package: beamerbasefont 2007/01/28  (rcs-revision 1.16)
+)
+(/usr/share/texmf/tex/latex/beamer/base/beamerbasemisc.sty
+Package: beamerbasemisc 2007/01/28  (rcs-revision 1.24)
+)
+(/usr/share/texmf/tex/latex/beamer/base/beamerbasetwoscreens.sty
+Package: beamerbasetwoscreens 2007/01/28  (rcs-revision 1.7)
+)
+(/usr/share/texmf/tex/latex/beamer/base/beamerbaseoverlay.sty
+Package: beamerbaseoverlay 2007/01/28  (rcs-revision 1.50)
+\beamer@argscount=\count123
+\beamer@lastskipcover=\skip42
+\beamer@trivlistdepth=\count124
+)
+(/usr/share/texmf/tex/latex/beamer/base/beamerbasetitle.sty
+Package: beamerbasetitle 2007/01/28  (rcs-revision 1.25)
+)
+(/usr/share/texmf/tex/latex/beamer/base/beamerbasesection.sty
+Package: beamerbasesection 2007/01/28  (rcs-revision 1.21)
+\c@lecture=\count125
+\c@part=\count126
+\c@section=\count127
+\c@subsection=\count128
+\c@subsubsection=\count129
+)
+(/usr/share/texmf/tex/latex/beamer/base/beamerbaseframe.sty
+Package: beamerbaseframe 2007/01/28  (rcs-revision 1.60)
+\beamer@framebox=\box39
+\beamer@frametitlebox=\box40
+\beamer@zoombox=\box41
+\beamer@zoomcount=\count130
+\beamer@zoomframecount=\count131
+\beamer@frametextheight=\dimen160
+\c@subsectionslide=\count132
+\beamer@frametopskip=\skip43
+\beamer@framebottomskip=\skip44
+\beamer@frametopskipautobreak=\skip45
+\beamer@framebottomskipautobreak=\skip46
+\beamer@envbody=\toks23
+\c@framenumber=\count133
+)
+(/usr/share/texmf/tex/latex/beamer/base/beamerbaseverbatim.sty
+Package: beamerbaseverbatim 2007/01/28  (rcs-revision 1.8)
+\beamer@verbatimfileout=\write3
+)
+(/usr/share/texmf/tex/latex/beamer/base/beamerbaseframesize.sty
+Package: beamerbaseframesize 2007/01/28  (rcs-revision 1.18)
+\beamer@splitbox=\box42
+\beamer@autobreakcount=\count134
+\beamer@autobreaklastheight=\dimen161
+\beamer@frametitletoks=\toks24
+\beamer@framesubtitletoks=\toks25
+)
+(/usr/share/texmf/tex/latex/beamer/base/beamerbaseframecomponents.sty
+Package: beamerbaseframecomponents 2007/01/28  (rcs-revision 1.41)
+\beamer@footins=\box43
+)
+(/usr/share/texmf/tex/latex/beamer/base/beamerbasecolor.sty
+Package: beamerbasecolor 2007/01/28  (rcs-revision 1.42)
+)
+(/usr/share/texmf/tex/latex/beamer/base/beamerbasenotes.sty
+Package: beamerbasenotes 2007/01/28  (rcs-revision 1.23)
+\beamer@frameboxcopy=\box44
+)
+(/usr/share/texmf/tex/latex/beamer/base/beamerbasetoc.sty
+Package: beamerbasetoc 2007/01/28  (rcs-revision 1.21)
+)
+(/usr/share/texmf/tex/latex/beamer/base/beamerbasetemplates.sty
+Package: beamerbasetemplates 2007/01/28  (rcs-revision 1.51)
+\beamer@sbttoks=\toks26
+
+(/usr/share/texmf/tex/latex/beamer/base/beamerbaseauxtemplates.sty
+Package: beamerbaseauxtemplates 2007/01/28  (rcs-revision 1.28)
+
+(/usr/share/texmf/tex/latex/beamer/base/beamerbaseboxes.sty
+Package: beamerbaseboxes 2007/03/11  (rcs-revision 1.32)
+\bmb@box=\box45
+\bmb@colorbox=\box46
+\bmb@boxshadow=\box47
+\bmb@boxshadowball=\box48
+\bmb@boxshadowballlarge=\box49
+\bmb@temp=\dimen162
+\bmb@dima=\dimen163
+\bmb@dimb=\dimen164
+\bmb@prevheight=\dimen165
+)
+\beamer@blockheadheight=\dimen166
+))
+(/usr/share/texmf/tex/latex/beamer/base/beamerbaselocalstructure.sty
+Package: beamerbaselocalstructure 2007/01/28  (rcs-revision 1.53)
+
+(/usr/share/texmf-texlive/tex/latex/tools/enumerate.sty
+Package: enumerate 1999/03/05 v3.00 enumerate extensions (DPC)
+\@enLab=\toks27
+)
+\c@figure=\count135
+\c@table=\count136
+\abovecaptionskip=\skip47
+\belowcaptionskip=\skip48
+)
+(/usr/share/texmf/tex/latex/beamer/base/beamerbasenavigation.sty
+Package: beamerbasenavigation 2007/01/28  (rcs-revision 1.36)
+)
+(/usr/share/texmf/tex/latex/beamer/base/beamerbasetheorems.sty
+Package: beamerbasetheorems 2007/01/28  (rcs-revision 1.10)
+
+(/usr/share/texmf-texlive/tex/latex/amsmath/amsmath.sty
+Package: amsmath 2000/07/18 v2.13 AMS math features
+\@mathmargin=\skip49
+
+For additional information on amsmath, use the `?' option.
+(/usr/share/texmf-texlive/tex/latex/amsmath/amstext.sty
+Package: amstext 2000/06/29 v2.01
+
+(/usr/share/texmf-texlive/tex/latex/amsmath/amsgen.sty
+File: amsgen.sty 1999/11/30 v2.0
+\@emptytoks=\toks28
+\ex@=\dimen167
+))
+(/usr/share/texmf-texlive/tex/latex/amsmath/amsbsy.sty
+Package: amsbsy 1999/11/29 v1.2d
+\pmbraise@=\dimen168
+)
+(/usr/share/texmf-texlive/tex/latex/amsmath/amsopn.sty
+Package: amsopn 1999/12/14 v2.01 operator names
+)
+\inf@bad=\count137
+LaTeX Info: Redefining \frac on input line 211.
+\uproot@=\count138
+\leftroot@=\count139
+LaTeX Info: Redefining \overline on input line 307.
+\classnum@=\count140
+\DOTSCASE@=\count141
+LaTeX Info: Redefining \ldots on input line 379.
+LaTeX Info: Redefining \dots on input line 382.
+LaTeX Info: Redefining \cdots on input line 467.
+\Mathstrutbox@=\box50
+\strutbox@=\box51
+\big@size=\dimen169
+LaTeX Font Info:    Redeclaring font encoding OML on input line 567.
+LaTeX Font Info:    Redeclaring font encoding OMS on input line 568.
+\macc@depth=\count142
+\c@MaxMatrixCols=\count143
+\dotsspace@=\muskip11
+\c@parentequation=\count144
+\dspbrk@lvl=\count145
+\tag@help=\toks29
+\row@=\count146
+\column@=\count147
+\maxfields@=\count148
+\andhelp@=\toks30
+\eqnshift@=\dimen170
+\alignsep@=\dimen171
+\tagshift@=\dimen172
+\tagwidth@=\dimen173
+\totwidth@=\dimen174
+\lineht@=\dimen175
+\@envbody=\toks31
+\multlinegap=\skip50
+\multlinetaggap=\skip51
+\mathdisplay@stack=\toks32
+LaTeX Info: Redefining \[ on input line 2666.
+LaTeX Info: Redefining \] on input line 2667.
+)
+(/usr/share/texmf-texlive/tex/latex/amscls/amsthm.sty
+Package: amsthm 2004/08/06 v2.20
+\thm@style=\toks33
+\thm@bodyfont=\toks34
+\thm@headfont=\toks35
+\thm@notefont=\toks36
+\thm@headpunct=\toks37
+\thm@preskip=\skip52
+\thm@postskip=\skip53
+\thm@headsep=\skip54
+\dth@everypar=\toks38
+)
+\c@theorem=\count149
+)
+(/usr/share/texmf/tex/latex/beamer/base/beamerbasethemes.sty
+Package: beamerbasethemes 2007/01/28  (rcs-revision 1.10)
+)
+(/usr/share/texmf/tex/latex/beamer/themes/theme/beamerthemedefault.sty
+Package: beamerthemedefault 2007/01/28  (rcs-revision 1.7)
+
+(/usr/share/texmf/tex/latex/beamer/themes/font/beamerfontthemedefault.sty
+Package: beamerfontthemedefault 2007/01/28  (rcs-revision 1.13)
+)
+(/usr/share/texmf/tex/latex/beamer/themes/color/beamercolorthemedefault.sty
+Package: beamercolorthemedefault 2007/01/28  (rcs-revision 1.28)
+)
+(/usr/share/texmf/tex/latex/beamer/themes/inner/beamerinnerthemedefault.sty
+Package: beamerinnerthemedefault 2007/01/28  (rcs-revision 1.20)
+\beamer@dima=\dimen176
+\beamer@dimb=\dimen177
+)
+(/usr/share/texmf/tex/latex/beamer/themes/outer/beamerouterthemedefault.sty
+Package: beamerouterthemedefault 2007/01/28  (rcs-revision 1.14)
+)))
+(/usr/share/texmf-texlive/tex/latex/base/inputenc.sty
+Package: inputenc 2006/05/05 v1.1b Input encoding file
+\inpenc@prehook=\toks39
+\inpenc@posthook=\toks40
+
+(/usr/share/texmf-texlive/tex/latex/ucs/utf8x.def
+File: utf8x.def 2004/10/17 UCS: Input encoding UTF-8
+))
+(/usr/share/texmf-texlive/tex/latex/ucs/ucs.sty
+Package: ucs 2004/10/17 UCS: Unicode input support
+
+(/usr/share/texmf-texlive/tex/latex/ucs/data/uni-global.def
+File: uni-global.def 2004/10/17 UCS: Unicode global data
+)
+\uc@secondtry=\count150
+\uc@combtoks=\toks41
+\uc@combtoksb=\toks42
+\uc@temptokena=\toks43
+)
+(/usr/share/texmf-texlive/tex/generic/babel/babel.sty
+Package: babel 2005/11/23 v3.8h The Babel package
+
+(/usr/share/texmf-texlive/tex/generic/babel/english.ldf
+Language: english 2005/03/30 v3.3o English support from the babel system
+
+(/usr/share/texmf-texlive/tex/generic/babel/babel.def
+File: babel.def 2005/11/23 v3.8h Babel common definitions
+LaTeX Info: Redefining \textlatin on input line 82.
+\babel@savecnt=\count151
+\U@D=\dimen178
+)
+\l@british = a dialect from \language\l@english 
+\l@UKenglish = a dialect from \language\l@english 
+\l@canadian = a dialect from \language\l@american 
+\l@australian = a dialect from \language\l@british 
+\l@newzealand = a dialect from \language\l@british 
+))
+(/usr/share/texmf-texlive/tex/latex/base/alltt.sty
+Package: alltt 1997/06/16 v2.0g defines alltt environment
+)
+(/usr/share/texmf/tex/latex/beamer/themes/theme/beamerthemeRochester.sty
+Package: beamerthemeRochester 2007/01/28  (rcs-revision 1.8)
+
+(/usr/share/texmf/tex/latex/beamer/themes/outer/beamerouterthemesidebar.sty
+Package: beamerouterthemesidebar 2007/01/28  (rcs-revision 1.9)
+\beamer@sidebarwidth=\dimen179
+\beamer@headheight=\dimen180
+)
+(/usr/share/texmf/tex/latex/beamer/themes/inner/beamerinnerthemerectangles.sty
+Package: beamerinnerthemerectangles 2007/01/28  (rcs-revision 1.4)
+) (/usr/share/texmf/tex/latex/beamer/themes/color/beamercolorthemewhale.sty
+Package: beamercolorthemewhale 2007/01/28  (rcs-revision 1.4)
+)
+(/usr/share/texmf/tex/latex/beamer/themes/color/beamercolorthemeorchid.sty
+Package: beamercolorthemeorchid 2007/01/28  (rcs-revision 1.3)
+))
+
+Package hyperref Warning: Token not allowed in a PDFDocEncoded string,
+(hyperref)                removing `\\' on input line 18.
+
+(./hadoop-rainbow-hashes.aux)
+\openout1 = `hadoop-rainbow-hashes.aux'.
+
+LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 21.
+LaTeX Font Info:    ... okay on input line 21.
+LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 21.
+LaTeX Font Info:    ... okay on input line 21.
+LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 21.
+LaTeX Font Info:    ... okay on input line 21.
+LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 21.
+LaTeX Font Info:    ... okay on input line 21.
+LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 21.
+LaTeX Font Info:    ... okay on input line 21.
+LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 21.
+LaTeX Font Info:    ... okay on input line 21.
+LaTeX Font Info:    Checking defaults for PD1/pdf/m/n on input line 21.
+LaTeX Font Info:    ... okay on input line 21.
+-------------------- Geometry parameters
+paper: user defined
+landscape: --
+twocolumn: --
+twoside: --
+asymmetric: --
+h-parts: 28.45274pt, 307.28987pt, 28.45274pt
+v-parts: 0.0pt, 273.14662pt, 0.0pt
+hmarginratio: --
+vmarginratio: --
+lines: --
+heightrounded: --
+bindingoffset: 0.0pt
+truedimen: --
+includehead: true
+includefoot: true
+includemp: --
+driver: pdftex
+-------------------- Page layout dimensions and switches
+\paperwidth  364.19536pt
+\paperheight 273.14662pt
+\textwidth  307.28987pt
+\textheight 244.6939pt
+\oddsidemargin  -43.81725pt
+\evensidemargin -43.81725pt
+\topmargin  -72.26999pt
+\headheight 14.22636pt
+\headsep    0.0pt
+\footskip   14.22636pt
+\marginparwidth 4.0pt
+\marginparsep   10.0pt
+\columnsep  10.0pt
+\skip\footins  10.0pt plus 4.0pt minus 2.0pt
+\hoffset 0.0pt
+\voffset 0.0pt
+\mag 1000
+
+(1in=72.27pt, 1cm=28.45pt)
+-----------------------
+Package hyperref Info: Link coloring OFF on input line 21.
+
+(/usr/share/texmf-texlive/tex/latex/hyperref/nameref.sty
+Package: nameref 2006/12/27 v2.28 Cross-referencing by name of section
+
+(/usr/share/texmf-texlive/tex/latex/oberdiek/refcount.sty
+Package: refcount 2006/02/20 v3.0 Data extraction from references (HO)
+)
+\c@section@level=\count152
+)
+LaTeX Info: Redefining \ref on input line 21.
+LaTeX Info: Redefining \pageref on input line 21.
+
+(./hadoop-rainbow-hashes.out) (./hadoop-rainbow-hashes.out)
+\@outlinefile=\write4
+\openout4 = `hadoop-rainbow-hashes.out'.
+
+LaTeX Font Info:    Overwriting symbol font `operators' in version `normal'
+(Font)                  OT1/cmr/m/n --> OT1/cmss/m/n on input line 21.
+LaTeX Font Info:    Overwriting symbol font `operators' in version `bold'
+(Font)                  OT1/cmr/bx/n --> OT1/cmss/bx/n on input line 21.
+\symnumbers=\mathgroup6
+\sympureletters=\mathgroup7
+LaTeX Font Info:    Overwriting math alphabet `\mathrm' in version `normal'
+(Font)                  OT1/cmss/m/n --> OT1/cmr/m/n on input line 21.
+LaTeX Font Info:    Redeclaring math alphabet \mathbf on input line 21.
+LaTeX Font Info:    Overwriting math alphabet `\mathbf' in version `normal'
+(Font)                  OT1/cmr/bx/n --> OT1/cmss/bx/n on input line 21.
+LaTeX Font Info:    Overwriting math alphabet `\mathbf' in version `bold'
+(Font)                  OT1/cmr/bx/n --> OT1/cmss/bx/n on input line 21.
+LaTeX Font Info:    Redeclaring math alphabet \mathsf on input line 21.
+LaTeX Font Info:    Overwriting math alphabet `\mathsf' in version `normal'
+(Font)                  OT1/cmss/m/n --> OT1/cmss/m/n on input line 21.
+LaTeX Font Info:    Overwriting math alphabet `\mathsf' in version `bold'
+(Font)                  OT1/cmss/bx/n --> OT1/cmss/m/n on input line 21.
+LaTeX Font Info:    Redeclaring math alphabet \mathit on input line 21.
+LaTeX Font Info:    Overwriting math alphabet `\mathit' in version `normal'
+(Font)                  OT1/cmr/m/it --> OT1/cmss/m/it on input line 21.
+LaTeX Font Info:    Overwriting math alphabet `\mathit' in version `bold'
+(Font)                  OT1/cmr/bx/it --> OT1/cmss/m/it on input line 21.
+LaTeX Font Info:    Redeclaring math alphabet \mathtt on input line 21.
+LaTeX Font Info:    Overwriting math alphabet `\mathtt' in version `normal'
+(Font)                  OT1/cmtt/m/n --> OT1/cmtt/m/n on input line 21.
+LaTeX Font Info:    Overwriting math alphabet `\mathtt' in version `bold'
+(Font)                  OT1/cmtt/m/n --> OT1/cmtt/m/n on input line 21.
+LaTeX Font Info:    Overwriting symbol font `numbers' in version `bold'
+(Font)                  OT1/cmss/m/n --> OT1/cmss/bx/n on input line 21.
+LaTeX Font Info:    Overwriting symbol font `pureletters' in version `bold'
+(Font)                  OT1/cmss/m/it --> OT1/cmss/bx/it on input line 21.
+LaTeX Font Info:    Overwriting math alphabet `\mathrm' in version `bold'
+(Font)                  OT1/cmss/bx/n --> OT1/cmr/bx/n on input line 21.
+LaTeX Font Info:    Overwriting math alphabet `\mathbf' in version `bold'
+(Font)                  OT1/cmss/bx/n --> OT1/cmss/bx/n on input line 21.
+LaTeX Font Info:    Overwriting math alphabet `\mathsf' in version `bold'
+(Font)                  OT1/cmss/m/n --> OT1/cmss/bx/n on input line 21.
+LaTeX Font Info:    Overwriting math alphabet `\mathit' in version `bold'
+(Font)                  OT1/cmss/m/it --> OT1/cmss/bx/it on input line 21.
+LaTeX Font Info:    Overwriting math alphabet `\mathtt' in version `bold'
+(Font)                  OT1/cmtt/m/n --> OT1/cmtt/bx/n on input line 21.
+
+(/usr/share/texmf-texlive/tex/latex/ucs/ucsencs.def
+File: ucsencs.def 2003/11/29 Fixes to fontencodings LGR, T3
+)
+(./hadoop-rainbow-hashes.nav)
+
+LaTeX Font Warning: Font shape `OT1/cmss/m/n' in size <4> not available
+(Font)              size <5> substituted on input line 28.
+
+[1
+
+{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}]
+(./hadoop-rainbow-hashes.toc) [2
+
+] (./hadoop-rainbow-hashes.toc) [3
+
+] [4
+
+]
+[5
+
+] [6
+
+] (/usr/share/texmf-texlive/tex/latex/ucs/data/uni-32.def
+File: uni-32.def 2004/10/17 UCS: Unicode data U+2000..U+20FF
+) [7
+
+]
+(./hadoop-rainbow-hashes.toc) [8
+
+] [9
+
+] [10
+
+] [11
+
+] [12
+
+]
+<pics/rainbow.png, id=363, 562.1pt x 216.81pt>
+File: pics/rainbow.png Graphic file (type png)
+ <use pics/rainbow.png>
+Overfull \hbox (29.97273pt too wide) in paragraph at lines 142--142
+[][]  
+ []
+
+[13
+
+ <./pics/rainbow.png>] <pics/r-lookup.png, id=391, 566.115pt x 232.87pt>
+File: pics/r-lookup.png Graphic file (type png)
+
+<use pics/r-lookup.png>
+Overfull \hbox (32.38174pt too wide) in paragraph at lines 146--146
+[][]  
+ []
+
+[14
+
+ <./pics/r-lookup.png>]
+LaTeX Font Info:    Try loading font information for U+msa on input line 155.
+ (/usr/share/texmf-texlive/tex/latex/amsfonts/umsa.fd
+File: umsa.fd 2002/01/19 v2.2g AMS font definitions
+)
+LaTeX Font Info:    Try loading font information for U+msb on input line 155.
+ (/usr/share/texmf-texlive/tex/latex/amsfonts/umsb.fd
+File: umsb.fd 2002/01/19 v2.2g AMS font definitions
+) [15
+
+]
+(./hadoop-rainbow-hashes.toc) [16
+
+] [17
+
+] [18
+
+] [19
+
+] (./hadoop-rainbow-hashes.toc) [20
+
+] [21
+
+] [22
+
+] [23
+
+] [24
+
+]
+File: pics/r-lookup.png Graphic file (type png)
+ <use pics/r-lookup.png>
+Overfull \hbox (32.38174pt too wide) in paragraph at lines 230--230
+[][]  
+ []
+
+[25
+
+] [26
+
+] [27
+
+] [28
+
+] [29
+
+]
+\tf@nav=\write5
+\openout5 = `hadoop-rainbow-hashes.nav'.
+
+\tf@toc=\write6
+\openout6 = `hadoop-rainbow-hashes.toc'.
+
+\tf@snm=\write7
+\openout7 = `hadoop-rainbow-hashes.snm'.
+
+ (./hadoop-rainbow-hashes.aux)
+
+LaTeX Font Warning: Size substitutions with differences
+(Font)              up to 1.0pt have occurred.
+
+ ) 
+Here is how much of TeX's memory you used:
+ 11876 strings out of 95086
+ 211877 string characters out of 1183254
+ 290468 words of memory out of 1500000
+ 14654 multiletter control sequences out of 10000+50000
+ 14691 words of font info for 55 fonts, out of 1200000 for 2000
+ 28 hyphenation exceptions out of 8191
+ 41i,14n,55p,348b,533s stack positions out of 5000i,500n,6000p,200000b,5000s
+</usr/share/texmf-texlive/fonts/type1/bluesky/cm/cmmi10.pfb></usr/share/texmf
+-texlive/fonts/type1/bluesky/cm/cmss10.pfb></usr/share/texmf-texlive/fonts/type
+1/bluesky/cm/cmss12.pfb></usr/share/texmf-texlive/fonts/type1/bluesky/cm/cmss8.
+pfb></usr/share/texmf-texlive/fonts/type1/bluesky/cm/cmss9.pfb></usr/share/texm
+f-texlive/fonts/type1/bluesky/cm/cmssbx10.pfb></usr/share/texmf-texlive/fonts/t
+ype1/bluesky/cm/cmssi10.pfb></usr/share/texmf-texlive/fonts/type1/bluesky/cm/cm
+tt10.pfb>
+Output written on hadoop-rainbow-hashes.pdf (29 pages, 258914 bytes).
+PDF statistics:
+ 843 PDF objects out of 1000 (max. 8388607)
+ 64 named destinations out of 1000 (max. 131072)
+ 99 words of extra memory for PDF output out of 10000 (max. 10000000)
+
Index: /proiecte/HadoopA51/docs/presentation/hadoop-rainbow-hashes.nav
===================================================================
--- /proiecte/HadoopA51/docs/presentation/hadoop-rainbow-hashes.nav	(revision 166)
+++ /proiecte/HadoopA51/docs/presentation/hadoop-rainbow-hashes.nav	(revision 166)
@@ -0,0 +1,79 @@
+\beamer@endinputifotherversion {3.07pt}
+\headcommand {\slideentry {0}{0}{1}{1/1}{}{0}}
+\headcommand {\beamer@framepages {1}{1}}
+\headcommand {\slideentry {0}{0}{2}{2/2}{}{0}}
+\headcommand {\beamer@framepages {2}{2}}
+\headcommand {\sectionentry {1}{Introduction}{3}{Introduction}{0}}
+\headcommand {\beamer@sectionpages {1}{2}}
+\headcommand {\beamer@subsectionpages {1}{2}}
+\headcommand {\slideentry {1}{0}{3}{3/3}{}{0}}
+\headcommand {\beamer@framepages {3}{3}}
+\headcommand {\slideentry {1}{0}{4}{4/4}{}{0}}
+\headcommand {\beamer@framepages {4}{4}}
+\headcommand {\slideentry {1}{0}{5}{5/5}{}{0}}
+\headcommand {\beamer@framepages {5}{5}}
+\headcommand {\slideentry {1}{0}{6}{6/6}{}{0}}
+\headcommand {\beamer@framepages {6}{6}}
+\headcommand {\slideentry {1}{0}{7}{7/7}{}{0}}
+\headcommand {\beamer@framepages {7}{7}}
+\headcommand {\sectionentry {2}{Rainbow tables}{8}{Rainbow tables}{0}}
+\headcommand {\beamer@sectionpages {3}{7}}
+\headcommand {\beamer@subsectionpages {3}{7}}
+\headcommand {\slideentry {2}{0}{8}{8/8}{}{0}}
+\headcommand {\beamer@framepages {8}{8}}
+\headcommand {\slideentry {2}{0}{9}{9/9}{}{0}}
+\headcommand {\beamer@framepages {9}{9}}
+\headcommand {\slideentry {2}{0}{10}{10/10}{}{0}}
+\headcommand {\beamer@framepages {10}{10}}
+\headcommand {\slideentry {2}{0}{11}{11/11}{}{0}}
+\headcommand {\beamer@framepages {11}{11}}
+\headcommand {\slideentry {2}{0}{12}{12/12}{}{0}}
+\headcommand {\beamer@framepages {12}{12}}
+\headcommand {\slideentry {2}{0}{13}{13/13}{}{0}}
+\headcommand {\beamer@framepages {13}{13}}
+\headcommand {\slideentry {2}{0}{14}{14/14}{}{0}}
+\headcommand {\beamer@framepages {14}{14}}
+\headcommand {\slideentry {2}{0}{15}{15/15}{}{0}}
+\headcommand {\beamer@framepages {15}{15}}
+\headcommand {\sectionentry {3}{Hadoop}{16}{Hadoop}{0}}
+\headcommand {\beamer@sectionpages {8}{15}}
+\headcommand {\beamer@subsectionpages {8}{15}}
+\headcommand {\slideentry {3}{0}{16}{16/16}{}{0}}
+\headcommand {\beamer@framepages {16}{16}}
+\headcommand {\slideentry {3}{0}{17}{17/17}{}{0}}
+\headcommand {\beamer@framepages {17}{17}}
+\headcommand {\slideentry {3}{0}{18}{18/18}{}{0}}
+\headcommand {\beamer@framepages {18}{18}}
+\headcommand {\slideentry {3}{0}{19}{19/19}{}{0}}
+\headcommand {\beamer@framepages {19}{19}}
+\headcommand {\sectionentry {4}{Cracking A5/1 with Hadoop}{20}{Cracking A5/1 with Hadoop}{0}}
+\headcommand {\beamer@sectionpages {16}{19}}
+\headcommand {\beamer@subsectionpages {16}{19}}
+\headcommand {\slideentry {4}{0}{20}{20/20}{}{0}}
+\headcommand {\beamer@framepages {20}{20}}
+\headcommand {\slideentry {4}{0}{21}{21/21}{}{0}}
+\headcommand {\beamer@framepages {21}{21}}
+\headcommand {\slideentry {4}{0}{22}{22/22}{}{0}}
+\headcommand {\beamer@framepages {22}{22}}
+\headcommand {\slideentry {4}{0}{23}{23/23}{}{0}}
+\headcommand {\beamer@framepages {23}{23}}
+\headcommand {\slideentry {4}{0}{24}{24/24}{}{0}}
+\headcommand {\beamer@framepages {24}{24}}
+\headcommand {\slideentry {4}{0}{25}{25/25}{}{0}}
+\headcommand {\beamer@framepages {25}{25}}
+\headcommand {\sectionentry {5}{Conclusion}{26}{Conclusion}{0}}
+\headcommand {\beamer@sectionpages {20}{25}}
+\headcommand {\beamer@subsectionpages {20}{25}}
+\headcommand {\slideentry {5}{0}{26}{26/26}{}{0}}
+\headcommand {\beamer@framepages {26}{26}}
+\headcommand {\slideentry {5}{0}{27}{27/27}{}{0}}
+\headcommand {\beamer@framepages {27}{27}}
+\headcommand {\slideentry {5}{0}{28}{28/28}{}{0}}
+\headcommand {\beamer@framepages {28}{28}}
+\headcommand {\slideentry {5}{0}{29}{29/29}{}{0}}
+\headcommand {\beamer@framepages {29}{29}}
+\headcommand {\beamer@partpages {1}{29}}
+\headcommand {\beamer@subsectionpages {26}{29}}
+\headcommand {\beamer@sectionpages {26}{29}}
+\headcommand {\beamer@documentpages {29}}
+\headcommand {\def \inserttotalframenumber {29}}
Index: /proiecte/HadoopA51/docs/presentation/hadoop-rainbow-hashes.out
===================================================================
--- /proiecte/HadoopA51/docs/presentation/hadoop-rainbow-hashes.out	(revision 166)
+++ /proiecte/HadoopA51/docs/presentation/hadoop-rainbow-hashes.out	(revision 166)
@@ -0,0 +1,5 @@
+\BOOKMARK [2][]{Outline0.1}{Introduction}{}
+\BOOKMARK [2][]{Outline0.2}{Rainbow tables}{}
+\BOOKMARK [2][]{Outline0.3}{Hadoop}{}
+\BOOKMARK [2][]{Outline0.4}{Cracking A5/1 with Hadoop}{}
+\BOOKMARK [2][]{Outline0.5}{Conclusion}{}
Index: /proiecte/HadoopA51/docs/presentation/hadoop-rainbow-hashes.tex
===================================================================
--- /proiecte/HadoopA51/docs/presentation/hadoop-rainbow-hashes.tex	(revision 166)
+++ /proiecte/HadoopA51/docs/presentation/hadoop-rainbow-hashes.tex	(revision 166)
@@ -0,0 +1,269 @@
+% vim: set tw=78 aw:
+\documentclass{beamer}
+
+\usepackage[utf8x]{inputenc} % diacritice
+\usepackage[english]{babel}
+\usepackage{color}			 % highlight
+\usepackage{alltt}			 % highlight
+\usepackage{hyperref}        % folositi \url{http://...}
+\usepackage{graphicx}
+\mode<presentation>
+{ \usetheme{Rochester} }		% TODO: settle this
+
+% Titlul nu foloseÅte Unicode pentru cÄ e o problemÄ cÄreia nu i-am dat de
+% cap.
+\title[Cracking A5/1]{Cracking A5/1}
+%\subtitle{}
+\institute{OSP}
+\author{Lucian Adrian Grijincu \\ \texttt{lucian.grijincu@gmail.com}}
+
+
+\begin{document}
+
+% Slide-urile cu mai multe pÄrÅ£i sunt marcate cu textul (cont.)
+\setbeamertemplate{frametitle continuation}[from second]
+% ArÄtÄm numÄrul frame-ului
+\setbeamertemplate{footline}[frame number]
+
+\frame{\titlepage}
+\frame{\tableofcontents}
+
+\section{Introduction}
+\frame{\tableofcontents[currentsection]}
+
+\begin{frame}{A5/what?}
+  \begin{itemize}
+    \item A5/1 - stream cipher used for OTA privacy in GSM networks
+    \item A5/2 - a weaker version of A5/1
+    \item A5/3 - (aka KASUMI) newer version, other kind of algorithm
+  \end{itemize}
+\end{frame}
+
+
+\begin{frame}{A5/1}
+  \begin{itemize}
+    \item designed from the start to be easy to break:
+    \item 1994 - first disclosure of the algorithm
+    \item 1997 - A5/1 shown academically broken
+    \item 2000 - more proof ...
+    \item 2003 - more proof ...
+    \item 2005 - and then some more ...
+    \item 2008 - rainbow tables computed (but never released publicly)
+    \item 2009 - A5/1 Security Project announce project to build public rainbow table
+    \item 2010 - rainbow tables released on bittorrent (2TB)
+  \end{itemize}
+\end{frame}
+
+\begin{frame}{A5/1 used in GSM}
+  \begin{itemize}
+    \item first plain-text frames of a GSM call have a distinct
+      pattern:
+      \begin{itemize}
+      \item some bits are always zero
+      \item ACK bits
+      \item state encoding bits
+      \end{itemize}
+    \item this limmits the search space significantly
+  \end{itemize}
+\end{frame}
+
+\begin{frame}{History lesson}
+  similar technique used to break the German cypher in WW2:
+  \begin{itemize}
+    \item messages longer than a page began with
+    \item FORT (\textit{Fortsetzung})
+    \item the time of the previous message between \texttt{Y}s
+    \item the time of the previous message between \texttt{Y}s, again!
+    \item ``continuation of message sent at 2330'' â ``FORTYWEEPYYWEEPY''
+  \end{itemize}
+\end{frame}
+
+
+\section{Rainbow tables}
+\frame{\tableofcontents[currentsection]}
+
+\begin{frame}{Cypher tables}
+  \begin{itemize}
+  \item for each plain text
+    \begin{itemize}
+    \item for each password
+      \begin{itemize}
+        \item compute crypto(text, password)
+      \end{itemize}
+    \end{itemize}
+  \end{itemize}
+\end{frame}
+
+\begin{frame}{Cypher tables}
+  \begin{itemize}
+  \item pass=0000
+    \begin{itemize}
+    \item 0000 - A7B7
+    \item 0001 - HJ89
+    \item ...
+    \item 9999 - 21J3
+    \end{itemize}
+  \item pass=0001
+    \begin{itemize}
+    \item 0000 - 32H4
+    \item 0001 - 5JL3
+    \item ...
+    \item 9999 - HJ89
+    \end{itemize}
+  \end{itemize}
+\end{frame}
+
+\begin{frame}{Cypher tables}
+  \begin{itemize}
+  \item size grows exponentially with
+    \begin{itemize}
+      \item plain text length
+      \item password length
+    \end{itemize}
+  \item duplicates in the table. HJ89 bellongs to:
+    \begin{itemize}
+    \item text=0001 and pass=0000
+    \item text=9999 and pass=0001
+    \item etc.
+    \end{itemize}
+  \end{itemize}
+\end{frame}
+
+\begin{frame}{Rainbow tables}
+  \begin{itemize}
+  \item select a random set of input secret values
+  \item reduce the size of the table
+  \item increase the lookup time
+  \end{itemize}
+\end{frame}
+
+\begin{frame}{Rainbow tables}
+  \includegraphics[scale=0.6]{pics/rainbow.png}
+\end{frame}
+
+\begin{frame}{Rainbow tables}
+  \includegraphics[scale=0.6]{pics/r-lookup.png}
+\end{frame}
+
+\begin{frame}{Rainbow tables}
+  \begin{itemize}
+  \item R functions are not inverses of H!
+  \item chains of $2^{15}$ R functions per table
+  \item posibility of overlapping last entries:
+  \item use many tables with other sets of R functions
+  \end{itemize}
+\end{frame}
+
+\section{Hadoop}
+\frame{\tableofcontents[currentsection]}
+
+\begin{frame}{Hadoop}
+  \begin{itemize}
+  \item open source map-reduce
+  \item highly scalable (thousand of nodes)
+  \end{itemize}
+\end{frame}
+
+\begin{frame}{Hadoop}
+  \textbf{Map}
+  \begin{itemize}
+  \item read input
+  \item create basic $<key, value>$ pairs
+  \end{itemize}
+\end{frame}
+
+\begin{frame}{Hadoop}
+  \textbf{Reduce}
+  \begin{itemize}
+  \item combine $<key, value>$ pairs with same $key$
+  \item write output
+  \end{itemize}
+\end{frame}
+
+
+
+
+\section{Cracking A5/1 with Hadoop}
+\frame{\tableofcontents[currentsection]}
+\begin{frame}{Cracking steps}
+  precalculate tables - done once
+  \begin{enumerate}
+  \item create a set of random initial secret values
+  \item map-reduce the creation of the tables
+  \end{enumerate}
+  search for a secret based on hashes
+\end{frame}
+
+
+\begin{frame}{Table calculation - \textbf{Map}}
+  \begin{itemize}
+  \item break input set of secrets
+  \item each mapper computes a chain
+  \item results are sent with
+    \begin{itemize}
+    \item $key$=last secret in chain
+    \item $value$=first secret in chain
+    \end{itemize}
+  \end{itemize}
+\end{frame}
+
+
+\begin{frame}{Table calculation - \textbf{Reduce}}
+  \begin{itemize}
+  \item reduce multiple $<key, value>$ pairs:
+  \item group entries in tables
+  \item group all start secrets that generate the same end secret
+  \end{itemize}
+\end{frame}
+
+\begin{frame}{Lookup}
+  in each table:
+  \begin{itemize}
+  \item \textbf{Map} - find all secrets that might generate the searched $hash$
+  \item \textbf{Reduce} - from all secrets, only select the most
+    frequent appearing secret
+  \end{itemize}
+\end{frame}
+
+\begin{frame}{Lookup algorithm}
+  \includegraphics[scale=0.6]{pics/r-lookup.png}
+\end{frame}
+
+
+\section{Conclusion}
+\begin{frame}{Conclusion}
+  \begin{itemize}
+  \item depending on the size of the chains: 1TB - 32TB tables
+  \item this permits near real-time lookup
+  \end{itemize}
+\end{frame}
+
+\begin{frame}{Other GSM bad news}
+  \begin{itemize}
+  \item A5/2 - is weaker than A5/1
+  \item key sizes less than 64 bits make cracking possible
+  \item hardware and software (open source) for GSM radio
+    transmissions is already avaliable
+  \item A5/3 - has 64 and 128 bit key sizes
+  \item devices that support A5/3 use 64 bits because it consumes less power
+  \end{itemize}
+\end{frame}
+
+\begin{frame}{Why weak algorithms?}
+  \begin{itemize}
+  \item they don't protect the user privacy
+  \item only protect network operator's pockets
+  \item crippled from the start to permit eavesdropping
+  \end{itemize}
+\end{frame}
+
+\begin{frame}{Other results}
+  \begin{itemize}
+  \item The C3 group used 40 NVIDIA CUDA machines for three months
+  \item rainbow table size: 2TB
+  \item efficient distribuition of this table permits real-time
+    cracking if the call is intercepted from the start
+  \end{itemize}
+\end{frame}
+
+\end{document}
Index: /proiecte/HadoopA51/docs/presentation/hadoop-rainbow-hashes.toc
===================================================================
--- /proiecte/HadoopA51/docs/presentation/hadoop-rainbow-hashes.toc	(revision 166)
+++ /proiecte/HadoopA51/docs/presentation/hadoop-rainbow-hashes.toc	(revision 166)
@@ -0,0 +1,7 @@
+\beamer@endinputifotherversion {3.07pt}
+\select@language {english}
+\beamer@sectionintoc {1}{Introduction}{3}{0}{1}
+\beamer@sectionintoc {2}{Rainbow tables}{8}{0}{2}
+\beamer@sectionintoc {3}{Hadoop}{16}{0}{3}
+\beamer@sectionintoc {4}{Cracking A5/1 with Hadoop}{20}{0}{4}
+\beamer@sectionintoc {5}{Conclusion}{26}{0}{5}
Index: /proiecte/HadoopA51/docs/presentation/pics/r-lookup.svg
===================================================================
--- /proiecte/HadoopA51/docs/presentation/pics/r-lookup.svg	(revision 166)
+++ /proiecte/HadoopA51/docs/presentation/pics/r-lookup.svg	(revision 166)
@@ -0,0 +1,624 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="705"
+   height="290"
+   id="svg4754"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   version="1.0"
+   sodipodi:docbase="C:\Documents and Settings\Nom\Bureau"
+   sodipodi:docname="rainbow_table2.svg">
+  <defs
+     id="defs4756" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="386.51406"
+     inkscape:cy="30.490172"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="1280"
+     inkscape:window-height="753"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     width="705px"
+     height="290px" />
+  <metadata
+     id="metadata4759">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Calque 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-272.1093,-601.6227)">
+    <rect
+       style="fill:#ececec;stroke:black;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect4172"
+       width="189.90868"
+       height="277.79196"
+       x="281.19049"
+       y="607.67352"
+       ry="11.428572" />
+    <rect
+       y="626.21814"
+       x="299.07166"
+       height="28.411825"
+       width="71.350029"
+       id="rect3899"
+       style="fill:#5f5;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:2.83432632, 2.83432632;stroke-dashoffset:0;stroke-opacity:1" />
+    <text
+       transform="scale(1.005423,0.994607)"
+       id="text3901"
+       y="647.59247"
+       x="307.49243"
+       style="font-size:12.05833912px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="647.59247"
+         x="307.49243"
+         id="tspan3903"
+         sodipodi:role="line">wikipedia</tspan></text>
+    <rect
+       y="626.21814"
+       x="382.70819"
+       height="28.411825"
+       width="71.350029"
+       id="rect3971"
+       style="fill:#5f5;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:2.83432632, 2.83432632;stroke-dashoffset:0;stroke-opacity:1" />
+    <text
+       transform="scale(1.005423,0.994607)"
+       id="text3973"
+       y="647.59534"
+       x="393.44144"
+       style="font-size:12.05844879px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="647.59534"
+         x="393.44144"
+         id="tspan3975"
+         sodipodi:role="line">rootroot</tspan></text>
+    <rect
+       style="fill:#2ad4ff;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:2.83432632, 2.83432632;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3983"
+       width="71.350029"
+       height="28.411825"
+       x="299.07166"
+       y="697.33997" />
+    <text
+       xml:space="preserve"
+       style="font-size:12.05846786px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="307.49493"
+       y="719.10388"
+       id="text3985"
+       transform="scale(1.005423,0.994607)"><tspan
+         sodipodi:role="line"
+         id="tspan3987"
+         x="307.49493"
+         y="719.10388">abcdefgh</tspan></text>
+    <rect
+       style="fill:#2ad4ff;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:2.83432632, 2.83432632;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4055"
+       width="71.350029"
+       height="28.411825"
+       x="382.70819"
+       y="697.33997" />
+    <text
+       xml:space="preserve"
+       style="font-size:12.058568px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="393.4494"
+       y="719.10626"
+       id="text4057"
+       transform="scale(1.005423,0.994607)"><tspan
+         sodipodi:role="line"
+         id="tspan4059"
+         x="393.4494"
+         y="719.10626">myname</tspan></text>
+    <rect
+       y="837.15216"
+       x="301.09198"
+       height="28.411825"
+       width="71.350029"
+       id="rect4067"
+       style="fill:#fac;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:2.83432632, 2.83432632;stroke-dashoffset:0;stroke-opacity:1" />
+    <text
+       transform="scale(1.005423,0.994607)"
+       id="text4069"
+       y="859.68097"
+       x="313.48596"
+       style="font-size:12.05863476px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="859.68097"
+         x="313.48596"
+         id="tspan4071"
+         sodipodi:role="line">passwd</tspan></text>
+    <rect
+       y="837.15216"
+       x="384.72852"
+       height="28.411825"
+       width="71.350029"
+       id="rect4139"
+       style="fill:#fac;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:2.83432632, 2.83432632;stroke-dashoffset:0;stroke-opacity:1" />
+    <text
+       transform="scale(1.005423,0.994607)"
+       id="text4141"
+       y="859.68353"
+       x="397.45865"
+       style="font-size:12.05873966px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="859.68353"
+         x="397.45865"
+         id="tspan4143"
+         sodipodi:role="line">linux23</tspan></text>
+    <path
+       sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+       id="path4151"
+       d="M 335.19454,729.78017 L 335.19454,731.33929 L 333.70625,731.33929 L 333.70625,729.78017 L 335.19454,729.78017 z M 335.19454,734.59795 L 335.19454,736.15707 L 333.70625,736.15707 L 333.70625,734.59795 L 335.19454,734.59795 z M 335.19454,739.41572 L 335.19454,740.97485 L 333.70625,740.97485 L 333.70625,739.41572 L 335.19454,739.41572 z M 335.19454,744.2335 L 335.19454,745.79262 L 333.70625,745.79262 L 333.70625,744.2335 L 335.19454,744.2335 z M 335.19454,749.05129 L 335.19454,750.6104 L 333.70625,750.6104 L 333.70625,749.05129 L 335.19454,749.05129 z M 335.19454,753.86906 L 335.19454,755.42819 L 333.70625,755.42819 L 333.70625,753.86906 L 335.19454,753.86906 z M 335.19454,758.68684 L 335.19454,760.24596 L 333.70625,760.24596 L 333.70625,758.68684 L 335.19454,758.68684 z M 335.19454,763.50462 L 335.19454,765.06374 L 333.70625,765.06374 L 333.70625,763.50462 L 335.19454,763.50462 z M 335.19454,768.32241 L 335.19454,769.88152 L 333.70625,769.88152 L 333.70625,768.32241 L 335.19454,768.32241 z M 335.19454,773.14018 L 335.19454,774.69931 L 333.70625,774.69931 L 333.70625,773.14018 L 335.19454,773.14018 z M 335.19454,777.95796 L 335.19454,779.51708 L 333.70625,779.51708 L 333.70625,777.95796 L 335.19454,777.95796 z M 335.19454,782.77574 L 335.19454,784.33486 L 333.70625,784.33486 L 333.70625,782.77574 L 335.19454,782.77574 z M 335.19454,787.59353 L 335.19454,789.15264 L 333.70625,789.15264 L 333.70625,787.59353 L 335.19454,787.59353 z M 335.19454,792.4113 L 335.19454,793.97043 L 333.70625,793.97043 L 333.70625,792.4113 L 335.19454,792.4113 z M 335.19454,797.22908 L 335.19454,798.7882 L 333.70625,798.7882 L 333.70625,797.22908 L 335.19454,797.22908 z M 335.19454,802.04685 L 335.19454,803.60598 L 333.70625,803.60598 L 333.70625,802.04685 L 335.19454,802.04685 z M 335.19454,806.86463 L 335.19454,808.42375 L 333.70625,808.42375 L 333.70625,806.86463 L 335.19454,806.86463 z M 335.19454,811.68242 L 335.19454,813.24155 L 333.70625,813.24155 L 333.70625,811.68242 L 335.19454,811.68242 z M 335.19454,816.5002 L 335.19454,818.05932 L 333.70625,818.05932 L 333.70625,816.5002 L 335.19454,816.5002 z M 335.19454,821.31797 L 335.19454,822.8771 L 333.70625,822.8771 L 333.70625,821.31797 L 335.19454,821.31797 z M 335.19454,826.13575 L 335.19454,827.69487 L 333.70625,827.69487 L 333.70625,826.13575 L 335.19454,826.13575 z M 335.19454,830.95353 L 335.19454,832.51267 L 333.70625,832.51267 L 333.70625,830.95353 L 335.19454,830.95353 z "
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" />
+    <path
+       sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+       id="path4163"
+       d="M 420.00675,729.78017 L 420.00675,731.33929 L 418.51846,731.33929 L 418.51846,729.78017 L 420.00675,729.78017 z M 420.00675,734.59795 L 420.00675,736.15707 L 418.51846,736.15707 L 418.51846,734.59795 L 420.00675,734.59795 z M 420.00675,739.41572 L 420.00675,740.97485 L 418.51846,740.97485 L 418.51846,739.41572 L 420.00675,739.41572 z M 420.00675,744.2335 L 420.00675,745.79262 L 418.51846,745.79262 L 418.51846,744.2335 L 420.00675,744.2335 z M 420.00675,749.05129 L 420.00675,750.6104 L 418.51846,750.6104 L 418.51846,749.05129 L 420.00675,749.05129 z M 420.00675,753.86906 L 420.00675,755.42819 L 418.51846,755.42819 L 418.51846,753.86906 L 420.00675,753.86906 z M 420.00675,758.68684 L 420.00675,760.24596 L 418.51846,760.24596 L 418.51846,758.68684 L 420.00675,758.68684 z M 420.00675,763.50462 L 420.00675,765.06374 L 418.51846,765.06374 L 418.51846,763.50462 L 420.00675,763.50462 z M 420.00675,768.32241 L 420.00675,769.88152 L 418.51846,769.88152 L 418.51846,768.32241 L 420.00675,768.32241 z M 420.00675,773.14018 L 420.00675,774.69931 L 418.51846,774.69931 L 418.51846,773.14018 L 420.00675,773.14018 z M 420.00675,777.95796 L 420.00675,779.51708 L 418.51846,779.51708 L 418.51846,777.95796 L 420.00675,777.95796 z M 420.00675,782.77574 L 420.00675,784.33486 L 418.51846,784.33486 L 418.51846,782.77574 L 420.00675,782.77574 z M 420.00675,787.59353 L 420.00675,789.15264 L 418.51846,789.15264 L 418.51846,787.59353 L 420.00675,787.59353 z M 420.00675,792.4113 L 420.00675,793.97043 L 418.51846,793.97043 L 418.51846,792.4113 L 420.00675,792.4113 z M 420.00675,797.22908 L 420.00675,798.7882 L 418.51846,798.7882 L 418.51846,797.22908 L 420.00675,797.22908 z M 420.00675,802.04685 L 420.00675,803.60598 L 418.51846,803.60598 L 418.51846,802.04685 L 420.00675,802.04685 z M 420.00675,806.86463 L 420.00675,808.42375 L 418.51846,808.42375 L 418.51846,806.86463 L 420.00675,806.86463 z M 420.00675,811.68242 L 420.00675,813.24155 L 418.51846,813.24155 L 418.51846,811.68242 L 420.00675,811.68242 z M 420.00675,816.5002 L 420.00675,818.05932 L 418.51846,818.05932 L 418.51846,816.5002 L 420.00675,816.5002 z M 420.00675,821.31797 L 420.00675,822.8771 L 418.51846,822.8771 L 418.51846,821.31797 L 420.00675,821.31797 z M 420.00675,826.13575 L 420.00675,827.69487 L 418.51846,827.69487 L 418.51846,826.13575 L 420.00675,826.13575 z M 420.00675,830.95353 L 420.00675,832.51267 L 418.51846,832.51267 L 418.51846,830.95353 L 420.00675,830.95353 z "
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" />
+    <rect
+       y="624.89764"
+       x="644.85321"
+       height="28.411825"
+       width="53.135723"
+       id="rect4176"
+       style="fill:#f55;stroke:black;stroke-width:1.4171629;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       ry="11.428572" />
+    <text
+       id="text4178"
+       y="646.27911"
+       x="649.73907"
+       style="font-size:12.05873489px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"
+       transform="scale(1.005423,0.994607)"><tspan
+         id="tspan4180"
+         y="646.27911"
+         x="649.73907"
+         sodipodi:role="line">re3xes</tspan></text>
+    <path
+       id="path5067"
+       d="M 621.81683,633.41818 L 621.81683,636.84814 L 638.88591,636.84814 L 638.88591,642.43481 L 621.81683,642.43481 L 621.81683,645.86476 L 616.93658,642.74662 L 612.03277,639.62848 L 616.93658,636.53632 L 621.81683,633.41818 z "
+       style="fill:yellow;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <text
+       xml:space="preserve"
+       style="font-size:18.50235748px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="618.11578"
+       y="621.75745"
+       id="text5069"
+       transform="scale(0.992441,1.007616)"><tspan
+         sodipodi:role="line"
+         id="tspan5071"
+         x="618.11578"
+         y="621.75745">R<tspan
+   id="tspan5073"
+   style="font-size:10.9997654px">3</tspan></tspan></text>
+    <rect
+       y="626.5354"
+       x="535.69153"
+       height="28.411825"
+       width="71.350029"
+       id="rect5075"
+       style="fill:#ccc;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <text
+       transform="scale(1.005423,0.994607)"
+       id="text5077"
+       y="647.92456"
+       x="549.58411"
+       style="font-size:12.05873013px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="647.92456"
+         x="549.58411"
+         id="tspan5079"
+         sodipodi:role="line">rambo</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:28.51909065px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="502.94171"
+       y="628.06757"
+       id="text5091"><tspan
+         sodipodi:role="line"
+         id="tspan5093"
+         x="502.94171"
+         y="628.06757">?</tspan></text>
+    <path
+       style="fill:#ccc;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 503.95969,633.41818 L 503.95969,636.84814 L 521.02877,636.84814 L 521.02877,642.43481 L 503.95969,642.43481 L 503.95969,645.86476 L 499.07944,642.74662 L 494.17563,639.62848 L 499.07944,636.53632 L 503.95969,633.41818 z "
+       id="path5095" />
+    <rect
+       ry="11.428572"
+       style="fill:#f55;stroke:black;stroke-width:1.4171629;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5097"
+       width="53.135723"
+       height="28.411825"
+       x="848.15277"
+       y="695.91034" />
+    <text
+       transform="scale(1.005423,0.994607)"
+       xml:space="preserve"
+       style="font-size:12.05915928px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="851.9834"
+       y="717.70013"
+       id="text5099"><tspan
+         sodipodi:role="line"
+         x="851.9834"
+         y="717.70013"
+         id="tspan5101">re3xes</tspan></text>
+    <path
+       style="fill:yellow;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 825.11639,704.43088 L 825.11639,707.86084 L 842.18539,707.86084 L 842.18539,713.44751 L 825.11639,713.44751 L 825.11639,716.87746 L 820.23609,713.75932 L 815.33229,710.64118 L 820.23609,707.54902 L 825.11639,704.43088 z "
+       id="path5103" />
+    <rect
+       style="fill:#ccc;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5111"
+       width="71.350029"
+       height="28.411825"
+       x="738.99103"
+       y="697.5481" />
+    <text
+       xml:space="preserve"
+       style="font-size:12.05915928px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="753.81042"
+       y="719.34583"
+       id="text5113"
+       transform="scale(1.005423,0.994607)"><tspan
+         sodipodi:role="line"
+         id="tspan5115"
+         x="753.81042"
+         y="719.34583">crypto</tspan></text>
+    <path
+       id="path5121"
+       d="M 503.95969,704.43088 L 503.95969,707.86084 L 521.02877,707.86084 L 521.02877,713.44751 L 503.95969,713.44751 L 503.95969,716.87746 L 499.07944,713.75932 L 494.17563,710.64118 L 499.07944,707.54902 L 503.95969,704.43088 z "
+       style="fill:#ccc;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       id="path5123"
+       d="M 713.68779,704.43088 L 713.68779,707.86084 L 730.75679,707.86084 L 730.75679,713.44751 L 713.68779,713.44751 L 713.68779,716.87746 L 708.80749,713.75932 L 703.90369,710.64118 L 708.80749,707.54902 L 713.68779,704.43088 z "
+       style="fill:aqua;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <text
+       transform="scale(0.992441,1.007616)"
+       id="text5131"
+       y="691.94965"
+       x="826.11377"
+       style="font-size:18.50141907px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="691.94965"
+         x="826.11377"
+         id="tspan5133"
+         sodipodi:role="line">R<tspan
+   id="tspan5135"
+   style="font-size:10.99923325px">2</tspan></tspan></text>
+    <rect
+       ry="11.428572"
+       style="fill:#ececec;stroke:black;stroke-width:1.4171629;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5137"
+       width="53.135723"
+       height="28.411825"
+       x="645.2818"
+       y="695.61194" />
+    <text
+       transform="scale(1.005423,0.994607)"
+       xml:space="preserve"
+       style="font-size:12.05916405px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="652.18719"
+       y="717.40033"
+       id="text5139"><tspan
+         sodipodi:role="line"
+         x="652.18719"
+         y="717.40033"
+         id="tspan5141">1tik0</tspan></text>
+    <path
+       style="fill:yellow;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 621.81683,703.41818 L 621.81683,706.84814 L 638.88591,706.84814 L 638.88591,712.43481 L 621.81683,712.43481 L 621.81683,715.86476 L 616.93658,712.74662 L 612.03277,709.62848 L 616.93658,706.53632 L 621.81683,703.41818 z "
+       id="path5143" />
+    <text
+       transform="scale(0.992441,1.007616)"
+       id="text5145"
+       y="691.2179"
+       x="618.10382"
+       style="font-size:18.5020771px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="691.2179"
+         x="618.10382"
+         id="tspan5147"
+         sodipodi:role="line">R<tspan
+   style="font-size:10.99962521px"
+   id="tspan5149">3</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:18.50232887px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="716.16418"
+       y="690.69904"
+       id="text5151"
+       transform="scale(0.992441,1.007616)"><tspan
+         sodipodi:role="line"
+         id="tspan5153"
+         x="716.16418"
+         y="690.69904">H</tspan></text>
+    <rect
+       style="fill:#f55;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5155"
+       width="71.350029"
+       height="28.411825"
+       x="535.69153"
+       y="695.82111" />
+    <text
+       xml:space="preserve"
+       style="font-size:12.05898285px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="549.60022"
+       y="717.60046"
+       id="text5157"
+       transform="scale(1.005423,0.994607)"><tspan
+         sodipodi:role="line"
+         id="tspan5159"
+         x="549.60022"
+         y="717.60046">linux23</tspan></text>
+    <text
+       id="text5161"
+       y="693.80896"
+       x="489.23932"
+       style="font-size:18.13082123px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="693.80896"
+         x="489.23932"
+         id="tspan5163"
+         sodipodi:role="line">OK !</tspan></text>
+    <rect
+       y="835.11804"
+       x="546.94043"
+       height="28.411825"
+       width="71.350029"
+       id="rect7822"
+       style="fill:#fac;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:2.83432632, 2.83432632;stroke-dashoffset:0;stroke-opacity:1" />
+    <text
+       transform="scale(1.005423,0.994607)"
+       id="text7824"
+       y="857.64453"
+       x="558.01184"
+       style="font-size:12.05875874px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="857.64453"
+         x="558.01184"
+         id="tspan7826"
+         sodipodi:role="line">passwd</tspan></text>
+    <path
+       style="fill:aqua;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 641.11628,843.10808 L 641.11628,846.53804 L 624.0472,846.53804 L 624.0472,852.12471 L 641.11628,852.12471 L 641.11628,855.55466 L 645.99653,852.43652 L 650.90034,849.31838 L 645.99653,846.22622 L 641.11628,843.10808 z "
+       id="path7828" />
+    <text
+       transform="scale(0.992441,1.007616)"
+       id="text7830"
+       y="829.85907"
+       x="632.8728"
+       style="font-size:18.50231552px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="829.85907"
+         x="632.8728"
+         id="tspan7832"
+         sodipodi:role="line">H</tspan></text>
+    <rect
+       ry="11.428572"
+       style="fill:#ffd5f6;stroke:black;stroke-width:1.4171629;stroke-miterlimit:4;stroke-dasharray:2.83432576, 2.83432576;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect7834"
+       width="53.135723"
+       height="28.411825"
+       x="656.24738"
+       y="835.11804" />
+    <text
+       transform="scale(1.005423,0.994607)"
+       xml:space="preserve"
+       style="font-size:12.05877781px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="663.05664"
+       y="857.64484"
+       id="text7836"><tspan
+         sodipodi:role="line"
+         id="tspan7838"
+         x="663.05664"
+         y="857.64484">dlcm4</tspan></text>
+    <path
+       id="path7840"
+       d="M 731.80699,843.10808 L 731.80699,846.53804 L 714.7379,846.53804 L 714.7379,852.12471 L 731.80699,852.12471 L 731.80699,855.55466 L 736.68724,852.43652 L 741.59105,849.31838 L 736.68724,846.22622 L 731.80699,843.10808 z "
+       style="fill:yellow;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <text
+       xml:space="preserve"
+       style="font-size:18.5023632px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="721.61475"
+       y="829.85901"
+       id="text7842"
+       transform="scale(0.992441,1.007616)"><tspan
+         sodipodi:role="line"
+         id="tspan7844"
+         x="721.61475"
+         y="829.85901">R<tspan
+   id="tspan7846"
+   style="font-size:10.99970245px">1</tspan></tspan></text>
+    <rect
+       y="835.11804"
+       x="746.93817"
+       height="28.411825"
+       width="71.350029"
+       id="rect7848"
+       style="fill:#fac;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:2.83432632, 2.83432632;stroke-dashoffset:0;stroke-opacity:1" />
+    <text
+       transform="scale(1.005423,0.994607)"
+       id="text7850"
+       y="857.64587"
+       x="759.69403"
+       style="font-size:12.05881596px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="857.64587"
+         x="759.69403"
+         id="tspan7852"
+         sodipodi:role="line">culture</tspan></text>
+    <path
+       style="fill:aqua;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 842.49768,843.10808 L 842.49768,846.53804 L 825.4286,846.53804 L 825.4286,852.12471 L 842.49768,852.12471 L 842.49768,855.55466 L 847.37793,852.43652 L 852.28174,849.31838 L 847.37793,846.22622 L 842.49768,843.10808 z "
+       id="path7854" />
+    <text
+       transform="scale(0.992441,1.007616)"
+       id="text7856"
+       y="829.85999"
+       x="837.17651"
+       style="font-size:18.50248337px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="829.85999"
+         x="837.17651"
+         id="tspan7858"
+         sodipodi:role="line">H</tspan></text>
+    <rect
+       y="835.11804"
+       x="857.67603"
+       height="28.411825"
+       width="53.135723"
+       id="rect7860"
+       style="fill:#ff2a2a;stroke:black;stroke-width:1.4171629;stroke-miterlimit:4;stroke-dasharray:2.83432576, 2.83432576;stroke-dashoffset:0;stroke-opacity:1"
+       ry="11.428572" />
+    <text
+       id="text7862"
+       y="857.64502"
+       x="861.41608"
+       style="font-size:12.05878735px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"
+       transform="scale(1.005423,0.994607)"><tspan
+         id="tspan7864"
+         y="857.64502"
+         x="861.41608"
+         sodipodi:role="line">re3xes</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:18.13082123px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="864.09509"
+       y="822.08459"
+       id="text7866"><tspan
+         sodipodi:role="line"
+         id="tspan7868"
+         x="864.09509"
+         y="822.08459">STOP !</tspan></text>
+    <path
+       style="fill:#ccc;fill-rule:evenodd;stroke:black;stroke-width:1.80902779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 515.02417,860.75871 L 515.02417,854.88121 L 486.60428,854.88121 L 486.60428,845.30805 L 515.02417,845.30805 L 515.02417,839.43059 L 523.14976,844.77374 L 531.31456,850.11691 L 523.14976,855.41555 L 515.02417,860.75871 z "
+       id="path7870" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#ffd42a;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path7897"
+       sodipodi:cx="-32.829956"
+       sodipodi:cy="354.09064"
+       sodipodi:rx="10.606602"
+       sodipodi:ry="10.606602"
+       d="M -22.223354 354.09064 A 10.606602 10.606602 0 1 1  -43.436558,354.09064 A 10.606602 10.606602 0 1 1  -22.223354 354.09064 z"
+       transform="matrix(1.089275,0,0,1.089275,761.3883,236.6191)" />
+    <text
+       xml:space="preserve"
+       style="font-size:16.65611267px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="720.59888"
+       y="628.05505"
+       id="text7899"><tspan
+         sodipodi:role="line"
+         id="tspan7901"
+         x="720.59888"
+         y="628.05505">1</tspan></text>
+    <path
+       transform="matrix(1.089275,0,0,1.089275,951.297,296.2181)"
+       d="M -22.223354 354.09064 A 10.606602 10.606602 0 1 1  -43.436558,354.09064 A 10.606602 10.606602 0 1 1  -22.223354 354.09064 z"
+       sodipodi:ry="10.606602"
+       sodipodi:rx="10.606602"
+       sodipodi:cy="354.09064"
+       sodipodi:cx="-32.829956"
+       id="path7903"
+       style="fill:#ffd42a;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+       sodipodi:type="arc" />
+    <text
+       id="text7905"
+       y="687.65405"
+       x="910.50757"
+       style="font-size:16.65611267px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="687.65405"
+         x="910.50757"
+         id="tspan7907"
+         sodipodi:role="line">2</tspan></text>
+    <path
+       sodipodi:type="arc"
+       style="fill:#ffd42a;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path7909"
+       sodipodi:cx="-32.829956"
+       sodipodi:cy="354.09064"
+       sodipodi:rx="10.606602"
+       sodipodi:ry="10.606602"
+       d="M -22.223354 354.09064 A 10.606602 10.606602 0 1 1  -43.436558,354.09064 A 10.606602 10.606602 0 1 1  -22.223354 354.09064 z"
+       transform="matrix(1.089275,0,0,1.089275,543.1954,434.609)" />
+    <text
+       xml:space="preserve"
+       style="font-size:16.65611267px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="501.41608"
+       y="826.04492"
+       id="text7911"><tspan
+         sodipodi:role="line"
+         id="tspan7913"
+         x="501.41608"
+         y="826.04492">4</tspan></text>
+    <path
+       transform="matrix(1.089275,0,0,1.089275,972.5102,462.8933)"
+       d="M -22.223354 354.09064 A 10.606602 10.606602 0 1 1  -43.436558,354.09064 A 10.606602 10.606602 0 1 1  -22.223354 354.09064 z"
+       sodipodi:ry="10.606602"
+       sodipodi:rx="10.606602"
+       sodipodi:cy="354.09064"
+       sodipodi:cx="-32.829956"
+       id="path7915"
+       style="fill:#ffd42a;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+       sodipodi:type="arc" />
+    <text
+       id="text7917"
+       y="854.32922"
+       x="931.72076"
+       style="font-size:16.65611267px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="854.32922"
+         x="931.72076"
+         id="tspan7919"
+         sodipodi:role="line">5</tspan></text>
+    <path
+       sodipodi:type="arc"
+       style="fill:#ffd42a;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path7921"
+       sodipodi:cx="-32.829956"
+       sodipodi:cy="354.09064"
+       sodipodi:rx="10.606602"
+       sodipodi:ry="10.606602"
+       d="M -22.223354 354.09064 A 10.606602 10.606602 0 1 1  -43.436558,354.09064 A 10.606602 10.606602 0 1 1  -22.223354 354.09064 z"
+       transform="matrix(1.089275,0,0,1.089275,544.2055,352.7866)" />
+    <text
+       xml:space="preserve"
+       style="font-size:16.65611267px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="503.41608"
+       y="744.2226"
+       id="text7923"><tspan
+         sodipodi:role="line"
+         id="tspan7925"
+         x="503.41608"
+         y="744.2226">3</tspan></text>
+  </g>
+</svg>
Index: /proiecte/HadoopA51/docs/presentation/pics/rainbow.svg
===================================================================
--- /proiecte/HadoopA51/docs/presentation/pics/rainbow.svg	(revision 166)
+++ /proiecte/HadoopA51/docs/presentation/pics/rainbow.svg	(revision 166)
@@ -0,0 +1,769 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="700"
+   height="270"
+   id="svg4754"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   version="1.0"
+   sodipodi:docbase="C:\Documents and Settings\Nom\Bureau"
+   sodipodi:docname="rainbow_table1.svg">
+  <defs
+     id="defs4756" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="319.56502"
+     inkscape:cy="150.2968"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="1280"
+     inkscape:window-height="753"
+     inkscape:window-x="34"
+     inkscape:window-y="58"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     width="700px"
+     height="270px" />
+  <metadata
+     id="metadata4759">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Calque 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-220.0461,-327.8291)">
+    <rect
+       style="fill:#5f5;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:2.83432632, 2.83432632;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect1872"
+       width="71.350029"
+       height="28.411825"
+       x="234.75468"
+       y="346.34497" />
+    <text
+       xml:space="preserve"
+       style="font-size:12.05837727px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="243.52271"
+       y="366.2019"
+       id="text1872"
+       transform="scale(1.005423,0.994607)"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan1874"
+         x="243.52271"
+         y="366.2019">wikipedia</tspan></text>
+    <path
+       id="path3449"
+       d="M 328.93054,354.33496 L 328.93054,357.76492 L 311.86146,357.76492 L 311.86146,363.35159 L 328.93054,363.35159 L 328.93054,366.78154 L 333.81079,363.6634 L 338.7146,360.54526 L 333.81079,357.4531 L 328.93054,354.33496 z "
+       style="fill:aqua;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <text
+       xml:space="preserve"
+       style="font-size:18.50276184px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="318.3179"
+       y="344.79422"
+       id="text2416"
+       transform="scale(0.992441,1.007616)"><tspan
+         sodipodi:role="line"
+         id="tspan2418"
+         x="318.3179"
+         y="344.79422">H</tspan></text>
+    <rect
+       y="346.34497"
+       x="344.06165"
+       height="28.411825"
+       width="53.135723"
+       id="rect2420"
+       style="fill:#d5ffd5;stroke:black;stroke-width:1.4171629;stroke-miterlimit:4;stroke-dasharray:2.83432576, 2.83432576;stroke-dashoffset:0;stroke-opacity:1"
+       ry="11.428572" />
+    <text
+       id="text2422"
+       y="366.20239"
+       x="348.56451"
+       style="font-size:12.05839634px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"
+       transform="scale(1.005423,0.994607)"><tspan
+         y="366.20239"
+         x="348.56451"
+         id="tspan2424"
+         sodipodi:role="line">ao4kd</tspan></text>
+    <path
+       style="fill:yellow;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 419.62124,354.33496 L 419.62124,357.76492 L 402.55215,357.76492 L 402.55215,363.35159 L 419.62124,363.35159 L 419.62124,366.78154 L 424.50149,363.6634 L 429.4053,360.54526 L 424.50149,357.4531 L 419.62124,354.33496 z "
+       id="path2426" />
+    <text
+       transform="scale(0.992441,1.007616)"
+       id="text2428"
+       y="344.79416"
+       x="407.06143"
+       style="font-size:18.50280952px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="344.79416"
+         x="407.06143"
+         id="tspan2430"
+         sodipodi:role="line">R<tspan
+   style="font-size:10.99992561px"
+   id="tspan2518">1</tspan></tspan></text>
+    <rect
+       style="fill:#5f5;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:2.83432632, 2.83432632;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2432"
+       width="71.350029"
+       height="28.411825"
+       x="434.75244"
+       y="346.34497" />
+    <text
+       xml:space="preserve"
+       style="font-size:12.05844402px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="449.1785"
+       y="366.20352"
+       id="text2434"
+       transform="scale(1.005423,0.994607)"><tspan
+         sodipodi:role="line"
+         id="tspan2436"
+         x="449.1785"
+         y="366.20352">secret</tspan></text>
+    <path
+       id="path2438"
+       d="M 530.31193,354.33496 L 530.31193,357.76492 L 513.24285,357.76492 L 513.24285,363.35159 L 530.31193,363.35159 L 530.31193,366.78154 L 535.19218,363.6634 L 540.09599,360.54526 L 535.19218,357.4531 L 530.31193,354.33496 z "
+       style="fill:aqua;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <text
+       xml:space="preserve"
+       style="font-size:18.50292969px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="522.62579"
+       y="344.7951"
+       id="text2440"
+       transform="scale(0.992441,1.007616)"><tspan
+         sodipodi:role="line"
+         id="tspan2442"
+         x="522.62579"
+         y="344.7951">H</tspan></text>
+    <path
+       id="path2450"
+       d="M 621.04981,354.33496 L 621.04981,357.76492 L 603.98072,357.76492 L 603.98072,363.35159 L 621.04981,363.35159 L 621.04981,366.78154 L 625.93006,363.6634 L 630.83387,360.54526 L 625.93006,357.4531 L 621.04981,354.33496 z "
+       style="fill:yellow;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <text
+       xml:space="preserve"
+       style="font-size:18.50274658px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="610.01923"
+       y="344.79318"
+       id="text2452"
+       transform="scale(0.992441,1.007616)"><tspan
+         sodipodi:role="line"
+         id="tspan2454"
+         x="610.01923"
+         y="344.79318">R<tspan
+   style="font-size:10.999897px"
+   id="tspan2520">2</tspan></tspan></text>
+    <rect
+       y="346.34497"
+       x="636.18103"
+       height="28.411825"
+       width="71.350029"
+       id="rect2456"
+       style="fill:#5f5;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:2.83432632, 2.83432632;stroke-dashoffset:0;stroke-opacity:1" />
+    <text
+       transform="scale(1.005423,0.994607)"
+       id="text2458"
+       y="366.2052"
+       x="653.50726"
+       style="font-size:12.05850601px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="366.2052"
+         x="653.50726"
+         id="tspan2460"
+         sodipodi:role="line">jimbo</tspan></text>
+    <rect
+       ry="11.428572"
+       style="fill:#d5ffd5;stroke:black;stroke-width:1.4171629;stroke-miterlimit:4;stroke-dasharray:2.83432576, 2.83432576;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect1987"
+       width="53.135723"
+       height="28.411825"
+       x="545.49023"
+       y="346.34497" />
+    <text
+       transform="scale(1.005423,0.994607)"
+       xml:space="preserve"
+       style="font-size:12.05841541px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="550.89801"
+       y="366.20294"
+       id="text1989"><tspan
+         sodipodi:role="line"
+         x="550.89801"
+         y="366.20294"
+         id="tspan1993">9kpmw</tspan></text>
+    <path
+       style="fill:aqua;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 731.7405,354.33496 L 731.7405,357.76492 L 714.67142,357.76492 L 714.67142,363.35159 L 731.7405,363.35159 L 731.7405,366.78154 L 736.62075,363.6634 L 741.52456,360.54526 L 736.62075,357.4531 L 731.7405,354.33496 z "
+       id="path1997" />
+    <text
+       transform="scale(0.992441,1.007616)"
+       id="text1999"
+       y="344.79501"
+       x="725.58752"
+       style="font-size:18.50292397px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="344.79501"
+         x="725.58752"
+         id="tspan2001"
+         sodipodi:role="line">H</tspan></text>
+    <path
+       style="fill:yellow;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 822.47838,354.33496 L 822.47838,357.76492 L 805.40929,357.76492 L 805.40929,363.35159 L 822.47838,363.35159 L 822.47838,366.78154 L 827.35863,363.6634 L 832.26244,360.54526 L 827.35863,357.4531 L 822.47838,354.33496 z "
+       id="path2003" />
+    <text
+       transform="scale(0.992441,1.007616)"
+       id="text2005"
+       y="344.79309"
+       x="812.98083"
+       style="font-size:18.50274086px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="344.79309"
+         x="812.98083"
+         id="tspan2007"
+         sodipodi:role="line">R<tspan
+   style="font-size:10.99995708px"
+   id="tspan2024">3</tspan></tspan></text>
+    <rect
+       style="fill:#5f5;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:2.83432632, 2.83432632;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2011"
+       width="71.350029"
+       height="28.411825"
+       x="837.60962"
+       y="346.34497" />
+    <text
+       xml:space="preserve"
+       style="font-size:12.05848217px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="845.89246"
+       y="366.20459"
+       id="text2013"
+       transform="scale(1.005423,0.994607)"><tspan
+         sodipodi:role="line"
+         id="tspan2015"
+         x="845.89246"
+         y="366.20459">rootroot</tspan></text>
+    <rect
+       y="346.34497"
+       x="746.91882"
+       height="28.411825"
+       width="53.135723"
+       id="rect2017"
+       style="fill:#d5ffd5;stroke:black;stroke-width:1.4171629;stroke-miterlimit:4;stroke-dasharray:2.83432576, 2.83432576;stroke-dashoffset:0;stroke-opacity:1"
+       ry="11.428572" />
+    <text
+       id="text2019"
+       y="366.20319"
+       x="753.23145"
+       style="font-size:12.05842495px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"
+       transform="scale(1.005423,0.994607)"><tspan
+         id="tspan2021"
+         y="366.20319"
+         x="753.23145"
+         sodipodi:role="line">v0d$x</tspan></text>
+    <rect
+       y="417.4668"
+       x="234.75468"
+       height="28.411825"
+       width="71.350029"
+       id="rect2194"
+       style="fill:#2ad4ff;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:2.83432632, 2.83432632;stroke-dashoffset:0;stroke-opacity:1" />
+    <text
+       transform="scale(1.005423,0.994607)"
+       id="text2196"
+       y="437.71371"
+       x="243.52518"
+       style="font-size:12.05850601px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="437.71371"
+         x="243.52518"
+         id="tspan2198"
+         sodipodi:role="line">abcdefgh</tspan></text>
+    <path
+       style="fill:aqua;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 328.93054,425.45678 L 328.93054,428.88674 L 311.86146,428.88674 L 311.86146,434.47341 L 328.93054,434.47341 L 328.93054,437.90336 L 333.81079,434.78522 L 338.7146,431.66708 L 333.81079,428.57492 L 328.93054,425.45678 z "
+       id="path2200" />
+    <text
+       transform="scale(0.992441,1.007616)"
+       id="text2202"
+       y="415.37521"
+       x="318.31543"
+       style="font-size:18.50260735px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="415.37521"
+         x="318.31543"
+         id="tspan2204"
+         sodipodi:role="line">H</tspan></text>
+    <rect
+       ry="11.428572"
+       style="fill:#d5f6ff;stroke:black;stroke-width:1.4171629;stroke-miterlimit:4;stroke-dasharray:2.83432576, 2.83432576;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2206"
+       width="53.135723"
+       height="28.411825"
+       x="344.06165"
+       y="417.4668" />
+    <text
+       transform="scale(1.005423,0.994607)"
+       xml:space="preserve"
+       style="font-size:12.05852509px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="348.56781"
+       y="437.71414"
+       id="text2208"><tspan
+         sodipodi:role="line"
+         id="tspan2210"
+         x="348.56781"
+         y="437.71414">1vn6s</tspan></text>
+    <path
+       id="path2212"
+       d="M 419.62124,425.45678 L 419.62124,428.88674 L 402.55215,428.88674 L 402.55215,434.47341 L 419.62124,434.47341 L 419.62124,437.90336 L 424.50149,434.78522 L 429.4053,431.66708 L 424.50149,428.57492 L 419.62124,425.45678 z "
+       style="fill:yellow;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <text
+       xml:space="preserve"
+       style="font-size:18.50265503px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="407.05814"
+       y="415.37515"
+       id="text2214"
+       transform="scale(0.992441,1.007616)"><tspan
+         sodipodi:role="line"
+         id="tspan2216"
+         x="407.05814"
+         y="415.37515">R<tspan
+   id="tspan2218"
+   style="font-size:10.99984837px">1</tspan></tspan></text>
+    <rect
+       y="417.4668"
+       x="434.75244"
+       height="28.411825"
+       width="71.350029"
+       id="rect2220"
+       style="fill:#2ad4ff;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:2.83432632, 2.83432632;stroke-dashoffset:0;stroke-opacity:1" />
+    <text
+       transform="scale(1.005423,0.994607)"
+       id="text2222"
+       y="437.71512"
+       x="451.17166"
+       style="font-size:12.058568px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="437.71512"
+         x="451.17166"
+         id="tspan2224"
+         sodipodi:role="line">bernie</tspan></text>
+    <path
+       style="fill:aqua;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 530.31193,425.45678 L 530.31193,428.88674 L 513.24285,428.88674 L 513.24285,434.47341 L 530.31193,434.47341 L 530.31193,437.90336 L 535.19218,434.78522 L 540.09599,431.66708 L 535.19218,428.57492 L 530.31193,425.45678 z "
+       id="path2226" />
+    <text
+       transform="scale(0.992441,1.007616)"
+       id="text2228"
+       y="415.3761"
+       x="522.6217"
+       style="font-size:18.50277519px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="415.3761"
+         x="522.6217"
+         id="tspan2230"
+         sodipodi:role="line">H</tspan></text>
+    <path
+       style="fill:yellow;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 621.04981,425.45678 L 621.04981,428.88674 L 603.98072,428.88674 L 603.98072,434.47341 L 621.04981,434.47341 L 621.04981,437.90336 L 625.93006,434.78522 L 630.83387,431.66708 L 625.93006,428.57492 L 621.04981,425.45678 z "
+       id="path2232" />
+    <text
+       transform="scale(0.992441,1.007616)"
+       id="text2234"
+       y="415.37418"
+       x="610.01428"
+       style="font-size:18.50259209px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="415.37418"
+         x="610.01428"
+         id="tspan2236"
+         sodipodi:role="line">R<tspan
+   id="tspan2238"
+   style="font-size:10.99981976px">2</tspan></tspan></text>
+    <rect
+       style="fill:#2ad4ff;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:2.83432632, 2.83432632;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2240"
+       width="71.350029"
+       height="28.411825"
+       x="636.18103"
+       y="417.4668" />
+    <text
+       xml:space="preserve"
+       style="font-size:12.05865383px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="652.80444"
+       y="437.71774"
+       id="text2242"
+       transform="scale(1.005423,0.994607)"><tspan
+         sodipodi:role="line"
+         id="tspan2244"
+         x="652.80444"
+         y="437.71774">zurich</tspan></text>
+    <rect
+       y="417.4668"
+       x="545.49023"
+       height="28.411825"
+       width="53.135723"
+       id="rect2246"
+       style="fill:#d5f6ff;stroke:black;stroke-width:1.4171629;stroke-miterlimit:4;stroke-dasharray:2.83432576, 2.83432576;stroke-dashoffset:0;stroke-opacity:1"
+       ry="11.428572" />
+    <text
+       id="text2248"
+       y="437.71469"
+       x="550.90295"
+       style="font-size:12.05854416px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"
+       transform="scale(1.005423,0.994607)"><tspan
+         id="tspan2250"
+         y="437.71469"
+         x="550.90295"
+         sodipodi:role="line">kolscx</tspan></text>
+    <path
+       id="path2252"
+       d="M 731.7405,425.45678 L 731.7405,428.88674 L 714.67142,428.88674 L 714.67142,434.47341 L 731.7405,434.47341 L 731.7405,437.90336 L 736.62075,434.78522 L 741.52456,431.66708 L 736.62075,428.57492 L 731.7405,425.45678 z "
+       style="fill:aqua;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <text
+       xml:space="preserve"
+       style="font-size:18.50276947px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="725.58258"
+       y="415.37601"
+       id="text2254"
+       transform="scale(0.992441,1.007616)"><tspan
+         sodipodi:role="line"
+         id="tspan2256"
+         x="725.58258"
+         y="415.37601">H</tspan></text>
+    <path
+       id="path2258"
+       d="M 822.47838,425.45678 L 822.47838,428.88674 L 805.40929,428.88674 L 805.40929,434.47341 L 822.47838,434.47341 L 822.47838,437.90336 L 827.35863,434.78522 L 832.26244,431.66708 L 827.35863,428.57492 L 822.47838,425.45678 z "
+       style="fill:yellow;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <text
+       xml:space="preserve"
+       style="font-size:18.50258636px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="812.97424"
+       y="415.37408"
+       id="text2260"
+       transform="scale(0.992441,1.007616)"><tspan
+         sodipodi:role="line"
+         id="tspan2262"
+         x="812.97424"
+         y="415.37408">R<tspan
+   id="tspan2264"
+   style="font-size:10.99987984px">3</tspan></tspan></text>
+    <rect
+       y="417.4668"
+       x="837.60962"
+       height="28.411825"
+       width="71.350029"
+       id="rect2266"
+       style="fill:#2ad4ff;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:2.83432632, 2.83432632;stroke-dashoffset:0;stroke-opacity:1" />
+    <text
+       transform="scale(1.005423,0.994607)"
+       id="text2268"
+       y="437.71634"
+       x="845.9007"
+       style="font-size:12.05861092px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="437.71634"
+         x="845.9007"
+         id="tspan2270"
+         sodipodi:role="line">myname</tspan></text>
+    <rect
+       ry="11.428572"
+       style="fill:#d5f6ff;stroke:black;stroke-width:1.4171629;stroke-miterlimit:4;stroke-dasharray:2.83432576, 2.83432576;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2272"
+       width="53.135723"
+       height="28.411825"
+       x="746.91882"
+       y="417.4668" />
+    <text
+       transform="scale(1.005423,0.994607)"
+       xml:space="preserve"
+       style="font-size:12.0585537px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="753.23969"
+       y="437.71494"
+       id="text2274"><tspan
+         sodipodi:role="line"
+         x="753.23969"
+         y="437.71494"
+         id="tspan2276">8ntpy</tspan></text>
+    <rect
+       style="fill:#fac;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:2.83432632, 2.83432632;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2278"
+       width="71.350029"
+       height="28.411825"
+       x="236.77499"
+       y="557.27899" />
+    <text
+       xml:space="preserve"
+       style="font-size:12.05866814px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="247.5269"
+       y="578.29108"
+       id="text2280"
+       transform="scale(1.005423,0.994607)"><tspan
+         sodipodi:role="line"
+         id="tspan2282"
+         x="247.5269"
+         y="578.29108">passwd</tspan></text>
+    <path
+       id="path2284"
+       d="M 330.95085,565.26898 L 330.95085,568.69894 L 313.88177,568.69894 L 313.88177,574.28561 L 330.95085,574.28561 L 330.95085,577.71556 L 335.8311,574.59742 L 340.73491,571.47928 L 335.8311,568.38712 L 330.95085,565.26898 z "
+       style="fill:aqua;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <text
+       xml:space="preserve"
+       style="font-size:18.50241852px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="320.34811"
+       y="554.12604"
+       id="text2286"
+       transform="scale(0.992441,1.007616)"><tspan
+         sodipodi:role="line"
+         id="tspan2288"
+         x="320.34811"
+         y="554.12604">H</tspan></text>
+    <rect
+       y="557.27899"
+       x="346.08194"
+       height="28.411825"
+       width="53.135723"
+       id="rect2290"
+       style="fill:#ffd5f6;stroke:black;stroke-width:1.4171629;stroke-miterlimit:4;stroke-dasharray:2.83432576, 2.83432576;stroke-dashoffset:0;stroke-opacity:1"
+       ry="11.428572" />
+    <text
+       id="text2292"
+       y="578.29156"
+       x="354.55994"
+       style="font-size:12.05869198px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"
+       transform="scale(1.005423,0.994607)"><tspan
+         y="578.29156"
+         x="354.55994"
+         id="tspan2294"
+         sodipodi:role="line">dlcm4</tspan></text>
+    <path
+       style="fill:yellow;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 421.64155,565.26898 L 421.64155,568.69894 L 404.57246,568.69894 L 404.57246,574.28561 L 421.64155,574.28561 L 421.64155,577.71556 L 426.5218,574.59742 L 431.42561,571.47928 L 426.5218,568.38712 L 421.64155,565.26898 z "
+       id="path2296" />
+    <text
+       transform="scale(0.992441,1.007616)"
+       id="text2298"
+       y="554.12598"
+       x="409.08981"
+       style="font-size:18.5024662px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="554.12598"
+         x="409.08981"
+         id="tspan2300"
+         sodipodi:role="line">R<tspan
+   style="font-size:10.99975395px"
+   id="tspan2302">1</tspan></tspan></text>
+    <rect
+       style="fill:#fac;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:2.83432632, 2.83432632;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2304"
+       width="71.350029"
+       height="28.411825"
+       x="436.77274"
+       y="557.27899" />
+    <text
+       xml:space="preserve"
+       style="font-size:12.05872059px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="451.19678"
+       y="578.29199"
+       id="text2306"
+       transform="scale(1.005423,0.994607)"><tspan
+         sodipodi:role="line"
+         id="tspan2308"
+         x="451.19678"
+         y="578.29199">culture</tspan></text>
+    <path
+       id="path2310"
+       d="M 532.33224,565.26898 L 532.33224,568.69894 L 515.26316,568.69894 L 515.26316,574.28561 L 532.33224,574.28561 L 532.33224,577.71556 L 537.21249,574.59742 L 542.1163,571.47928 L 537.21249,568.38712 L 532.33224,565.26898 z "
+       style="fill:aqua;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <text
+       xml:space="preserve"
+       style="font-size:18.50258636px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="524.65234"
+       y="554.12695"
+       id="text2312"
+       transform="scale(0.992441,1.007616)"><tspan
+         sodipodi:role="line"
+         id="tspan2314"
+         x="524.65234"
+         y="554.12695">H</tspan></text>
+    <path
+       id="path2316"
+       d="M 623.07012,565.26898 L 623.07012,568.69894 L 606.00103,568.69894 L 606.00103,574.28561 L 623.07012,574.28561 L 623.07012,577.71556 L 627.95037,574.59742 L 632.85418,571.47928 L 627.95037,568.38712 L 623.07012,565.26898 z "
+       style="fill:yellow;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <text
+       xml:space="preserve"
+       style="font-size:18.50240326px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="612.04395"
+       y="554.125"
+       id="text2318"
+       transform="scale(0.992441,1.007616)"><tspan
+         sodipodi:role="line"
+         id="tspan2320"
+         x="612.04395"
+         y="554.125">R<tspan
+   style="font-size:10.99972534px"
+   id="tspan2322">2</tspan></tspan></text>
+    <rect
+       y="557.27899"
+       x="638.20135"
+       height="28.411825"
+       width="71.350029"
+       id="rect2324"
+       style="fill:#fac;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:2.83432632, 2.83432632;stroke-dashoffset:0;stroke-opacity:1" />
+    <text
+       transform="scale(1.005423,0.994607)"
+       id="text2326"
+       y="578.29382"
+       x="651.55194"
+       style="font-size:12.05877304px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="578.29382"
+         x="651.55194"
+         id="tspan2328"
+         sodipodi:role="line">crypto</tspan></text>
+    <rect
+       ry="11.428572"
+       style="fill:#ffd5f6;stroke:black;stroke-width:1.4171629;stroke-miterlimit:4;stroke-dasharray:2.83432576, 2.83432576;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2330"
+       width="53.135723"
+       height="28.411825"
+       x="547.51056"
+       y="557.27899" />
+    <text
+       transform="scale(1.005423,0.994607)"
+       xml:space="preserve"
+       style="font-size:12.05870152px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="552.9184"
+       y="578.29181"
+       id="text2332"><tspan
+         sodipodi:role="line"
+         x="552.9184"
+         y="578.29181"
+         id="tspan2334">re3xes</tspan></text>
+    <path
+       style="fill:aqua;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 733.76081,565.26898 L 733.76081,568.69894 L 716.69173,568.69894 L 716.69173,574.28561 L 733.76081,574.28561 L 733.76081,577.71556 L 738.64106,574.59742 L 743.54487,571.47928 L 738.64106,568.38712 L 733.76081,565.26898 z "
+       id="path2336" />
+    <text
+       transform="scale(0.992441,1.007616)"
+       id="text2338"
+       y="554.12683"
+       x="727.61218"
+       style="font-size:18.50258064px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="554.12683"
+         x="727.61218"
+         id="tspan2340"
+         sodipodi:role="line">H</tspan></text>
+    <path
+       style="fill:yellow;fill-rule:evenodd;stroke:black;stroke-width:1.80902791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 824.49869,565.26898 L 824.49869,568.69894 L 807.4296,568.69894 L 807.4296,574.28561 L 824.49869,574.28561 L 824.49869,577.71556 L 829.37894,574.59742 L 834.28275,571.47928 L 829.37894,568.38712 L 824.49869,565.26898 z "
+       id="path2342" />
+    <text
+       transform="scale(0.992441,1.007616)"
+       id="text2344"
+       y="554.12494"
+       x="815.00189"
+       style="font-size:18.50239754px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"><tspan
+         y="554.12494"
+         x="815.00189"
+         id="tspan2346"
+         sodipodi:role="line">R<tspan
+   style="font-size:10.99978542px"
+   id="tspan2348">3</tspan></tspan></text>
+    <rect
+       style="fill:#fac;stroke:black;stroke-width:1.41716313;stroke-miterlimit:4;stroke-dasharray:2.83432632, 2.83432632;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2350"
+       width="71.350029"
+       height="28.411825"
+       x="839.62994"
+       y="557.27899" />
+    <text
+       xml:space="preserve"
+       style="font-size:12.05877781px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       x="851.89929"
+       y="578.29395"
+       id="text2352"
+       transform="scale(1.005423,0.994607)"><tspan
+         sodipodi:role="line"
+         id="tspan2354"
+         x="851.89929"
+         y="578.29395">linux23</tspan></text>
+    <rect
+       y="557.27899"
+       x="748.93915"
+       height="28.411825"
+       width="53.135723"
+       id="rect2356"
+       style="fill:#ffd5f6;stroke:black;stroke-width:1.4171629;stroke-miterlimit:4;stroke-dasharray:2.83432576, 2.83432576;stroke-dashoffset:0;stroke-opacity:1"
+       ry="11.428572" />
+    <text
+       id="text2358"
+       y="578.29205"
+       x="755.25916"
+       style="font-size:12.05871105px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       xml:space="preserve"
+       transform="scale(1.005423,0.994607)"><tspan
+         id="tspan2360"
+         y="578.29205"
+         x="755.25916"
+         sodipodi:role="line">1tik0</tspan></text>
+    <path
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       d="M 270.87755,449.907 L 270.87755,451.46612 L 269.38926,451.46612 L 269.38926,449.907 L 270.87755,449.907 z M 270.87755,454.72478 L 270.87755,456.2839 L 269.38926,456.2839 L 269.38926,454.72478 L 270.87755,454.72478 z M 270.87755,459.54255 L 270.87755,461.10168 L 269.38926,461.10168 L 269.38926,459.54255 L 270.87755,459.54255 z M 270.87755,464.36033 L 270.87755,465.91945 L 269.38926,465.91945 L 269.38926,464.36033 L 270.87755,464.36033 z M 270.87755,469.17812 L 270.87755,470.73723 L 269.38926,470.73723 L 269.38926,469.17812 L 270.87755,469.17812 z M 270.87755,473.99589 L 270.87755,475.55502 L 269.38926,475.55502 L 269.38926,473.99589 L 270.87755,473.99589 z M 270.87755,478.81367 L 270.87755,480.37279 L 269.38926,480.37279 L 269.38926,478.81367 L 270.87755,478.81367 z M 270.87755,483.63145 L 270.87755,485.19057 L 269.38926,485.19057 L 269.38926,483.63145 L 270.87755,483.63145 z M 270.87755,488.44924 L 270.87755,490.00835 L 269.38926,490.00835 L 269.38926,488.44924 L 270.87755,488.44924 z M 270.87755,493.26701 L 270.87755,494.82614 L 269.38926,494.82614 L 269.38926,493.26701 L 270.87755,493.26701 z M 270.87755,498.08479 L 270.87755,499.64391 L 269.38926,499.64391 L 269.38926,498.08479 L 270.87755,498.08479 z M 270.87755,502.90257 L 270.87755,504.46169 L 269.38926,504.46169 L 269.38926,502.90257 L 270.87755,502.90257 z M 270.87755,507.72036 L 270.87755,509.27947 L 269.38926,509.27947 L 269.38926,507.72036 L 270.87755,507.72036 z M 270.87755,512.53813 L 270.87755,514.09726 L 269.38926,514.09726 L 269.38926,512.53813 L 270.87755,512.53813 z M 270.87755,517.35591 L 270.87755,518.91503 L 269.38926,518.91503 L 269.38926,517.35591 L 270.87755,517.35591 z M 270.87755,522.17368 L 270.87755,523.73281 L 269.38926,523.73281 L 269.38926,522.17368 L 270.87755,522.17368 z M 270.87755,526.99146 L 270.87755,528.55058 L 269.38926,528.55058 L 269.38926,526.99146 L 270.87755,526.99146 z M 270.87755,531.80925 L 270.87755,533.36838 L 269.38926,533.36838 L 269.38926,531.80925 L 270.87755,531.80925 z M 270.87755,536.62703 L 270.87755,538.18615 L 269.38926,538.18615 L 269.38926,536.62703 L 270.87755,536.62703 z M 270.87755,541.4448 L 270.87755,543.00393 L 269.38926,543.00393 L 269.38926,541.4448 L 270.87755,541.4448 z M 270.87755,546.26258 L 270.87755,547.8217 L 269.38926,547.8217 L 269.38926,546.26258 L 270.87755,546.26258 z M 270.87755,551.08036 L 270.87755,552.6395 L 269.38926,552.6395 L 269.38926,551.08036 L 270.87755,551.08036 z "
+       id="text2507"
+       sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" />
+    <path
+       sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+       id="path2512"
+       d="M 371.38773,449.907 L 371.38773,451.46612 L 369.89944,451.46612 L 369.89944,449.907 L 371.38773,449.907 z M 371.38773,454.72478 L 371.38773,456.2839 L 369.89944,456.2839 L 369.89944,454.72478 L 371.38773,454.72478 z M 371.38773,459.54255 L 371.38773,461.10168 L 369.89944,461.10168 L 369.89944,459.54255 L 371.38773,459.54255 z M 371.38773,464.36033 L 371.38773,465.91945 L 369.89944,465.91945 L 369.89944,464.36033 L 371.38773,464.36033 z M 371.38773,469.17812 L 371.38773,470.73723 L 369.89944,470.73723 L 369.89944,469.17812 L 371.38773,469.17812 z M 371.38773,473.99589 L 371.38773,475.55502 L 369.89944,475.55502 L 369.89944,473.99589 L 371.38773,473.99589 z M 371.38773,478.81367 L 371.38773,480.37279 L 369.89944,480.37279 L 369.89944,478.81367 L 371.38773,478.81367 z M 371.38773,483.63145 L 371.38773,485.19057 L 369.89944,485.19057 L 369.89944,483.63145 L 371.38773,483.63145 z M 371.38773,488.44924 L 371.38773,490.00835 L 369.89944,490.00835 L 369.89944,488.44924 L 371.38773,488.44924 z M 371.38773,493.26701 L 371.38773,494.82614 L 369.89944,494.82614 L 369.89944,493.26701 L 371.38773,493.26701 z M 371.38773,498.08479 L 371.38773,499.64391 L 369.89944,499.64391 L 369.89944,498.08479 L 371.38773,498.08479 z M 371.38773,502.90257 L 371.38773,504.46169 L 369.89944,504.46169 L 369.89944,502.90257 L 371.38773,502.90257 z M 371.38773,507.72036 L 371.38773,509.27947 L 369.89944,509.27947 L 369.89944,507.72036 L 371.38773,507.72036 z M 371.38773,512.53813 L 371.38773,514.09726 L 369.89944,514.09726 L 369.89944,512.53813 L 371.38773,512.53813 z M 371.38773,517.35591 L 371.38773,518.91503 L 369.89944,518.91503 L 369.89944,517.35591 L 371.38773,517.35591 z M 371.38773,522.17368 L 371.38773,523.73281 L 369.89944,523.73281 L 369.89944,522.17368 L 371.38773,522.17368 z M 371.38773,526.99146 L 371.38773,528.55058 L 369.89944,528.55058 L 369.89944,526.99146 L 371.38773,526.99146 z M 371.38773,531.80925 L 371.38773,533.36838 L 369.89944,533.36838 L 369.89944,531.80925 L 371.38773,531.80925 z M 371.38773,536.62703 L 371.38773,538.18615 L 369.89944,538.18615 L 369.89944,536.62703 L 371.38773,536.62703 z M 371.38773,541.4448 L 371.38773,543.00393 L 369.89944,543.00393 L 369.89944,541.4448 L 371.38773,541.4448 z M 371.38773,546.26258 L 371.38773,547.8217 L 369.89944,547.8217 L 369.89944,546.26258 L 371.38773,546.26258 z M 371.38773,551.08036 L 371.38773,552.6395 L 369.89944,552.6395 L 369.89944,551.08036 L 371.38773,551.08036 z "
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" />
+    <path
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       d="M 471.89791,449.907 L 471.89791,451.46612 L 470.40962,451.46612 L 470.40962,449.907 L 471.89791,449.907 z M 471.89791,454.72478 L 471.89791,456.2839 L 470.40962,456.2839 L 470.40962,454.72478 L 471.89791,454.72478 z M 471.89791,459.54255 L 471.89791,461.10168 L 470.40962,461.10168 L 470.40962,459.54255 L 471.89791,459.54255 z M 471.89791,464.36033 L 471.89791,465.91945 L 470.40962,465.91945 L 470.40962,464.36033 L 471.89791,464.36033 z M 471.89791,469.17812 L 471.89791,470.73723 L 470.40962,470.73723 L 470.40962,469.17812 L 471.89791,469.17812 z M 471.89791,473.99589 L 471.89791,475.55502 L 470.40962,475.55502 L 470.40962,473.99589 L 471.89791,473.99589 z M 471.89791,478.81367 L 471.89791,480.37279 L 470.40962,480.37279 L 470.40962,478.81367 L 471.89791,478.81367 z M 471.89791,483.63145 L 471.89791,485.19057 L 470.40962,485.19057 L 470.40962,483.63145 L 471.89791,483.63145 z M 471.89791,488.44924 L 471.89791,490.00835 L 470.40962,490.00835 L 470.40962,488.44924 L 471.89791,488.44924 z M 471.89791,493.26701 L 471.89791,494.82614 L 470.40962,494.82614 L 470.40962,493.26701 L 471.89791,493.26701 z M 471.89791,498.08479 L 471.89791,499.64391 L 470.40962,499.64391 L 470.40962,498.08479 L 471.89791,498.08479 z M 471.89791,502.90257 L 471.89791,504.46169 L 470.40962,504.46169 L 470.40962,502.90257 L 471.89791,502.90257 z M 471.89791,507.72036 L 471.89791,509.27947 L 470.40962,509.27947 L 470.40962,507.72036 L 471.89791,507.72036 z M 471.89791,512.53813 L 471.89791,514.09726 L 470.40962,514.09726 L 470.40962,512.53813 L 471.89791,512.53813 z M 471.89791,517.35591 L 471.89791,518.91503 L 470.40962,518.91503 L 470.40962,517.35591 L 471.89791,517.35591 z M 471.89791,522.17368 L 471.89791,523.73281 L 470.40962,523.73281 L 470.40962,522.17368 L 471.89791,522.17368 z M 471.89791,526.99146 L 471.89791,528.55058 L 470.40962,528.55058 L 470.40962,526.99146 L 471.89791,526.99146 z M 471.89791,531.80925 L 471.89791,533.36838 L 470.40962,533.36838 L 470.40962,531.80925 L 471.89791,531.80925 z M 471.89791,536.62703 L 471.89791,538.18615 L 470.40962,538.18615 L 470.40962,536.62703 L 471.89791,536.62703 z M 471.89791,541.4448 L 471.89791,543.00393 L 470.40962,543.00393 L 470.40962,541.4448 L 471.89791,541.4448 z M 471.89791,546.26258 L 471.89791,547.8217 L 470.40962,547.8217 L 470.40962,546.26258 L 471.89791,546.26258 z M 471.89791,551.08036 L 471.89791,552.6395 L 470.40962,552.6395 L 470.40962,551.08036 L 471.89791,551.08036 z "
+       id="path2514"
+       sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" />
+    <path
+       sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+       id="path2516"
+       d="M 573.92332,449.907 L 573.92332,451.46612 L 572.43503,451.46612 L 572.43503,449.907 L 573.92332,449.907 z M 573.92332,454.72478 L 573.92332,456.2839 L 572.43503,456.2839 L 572.43503,454.72478 L 573.92332,454.72478 z M 573.92332,459.54255 L 573.92332,461.10168 L 572.43503,461.10168 L 572.43503,459.54255 L 573.92332,459.54255 z M 573.92332,464.36033 L 573.92332,465.91945 L 572.43503,465.91945 L 572.43503,464.36033 L 573.92332,464.36033 z M 573.92332,469.17812 L 573.92332,470.73723 L 572.43503,470.73723 L 572.43503,469.17812 L 573.92332,469.17812 z M 573.92332,473.99589 L 573.92332,475.55502 L 572.43503,475.55502 L 572.43503,473.99589 L 573.92332,473.99589 z M 573.92332,478.81367 L 573.92332,480.37279 L 572.43503,480.37279 L 572.43503,478.81367 L 573.92332,478.81367 z M 573.92332,483.63145 L 573.92332,485.19057 L 572.43503,485.19057 L 572.43503,483.63145 L 573.92332,483.63145 z M 573.92332,488.44924 L 573.92332,490.00835 L 572.43503,490.00835 L 572.43503,488.44924 L 573.92332,488.44924 z M 573.92332,493.26701 L 573.92332,494.82614 L 572.43503,494.82614 L 572.43503,493.26701 L 573.92332,493.26701 z M 573.92332,498.08479 L 573.92332,499.64391 L 572.43503,499.64391 L 572.43503,498.08479 L 573.92332,498.08479 z M 573.92332,502.90257 L 573.92332,504.46169 L 572.43503,504.46169 L 572.43503,502.90257 L 573.92332,502.90257 z M 573.92332,507.72036 L 573.92332,509.27947 L 572.43503,509.27947 L 572.43503,507.72036 L 573.92332,507.72036 z M 573.92332,512.53813 L 573.92332,514.09726 L 572.43503,514.09726 L 572.43503,512.53813 L 573.92332,512.53813 z M 573.92332,517.35591 L 573.92332,518.91503 L 572.43503,518.91503 L 572.43503,517.35591 L 573.92332,517.35591 z M 573.92332,522.17368 L 573.92332,523.73281 L 572.43503,523.73281 L 572.43503,522.17368 L 573.92332,522.17368 z M 573.92332,526.99146 L 573.92332,528.55058 L 572.43503,528.55058 L 572.43503,526.99146 L 573.92332,526.99146 z M 573.92332,531.80925 L 573.92332,533.36838 L 572.43503,533.36838 L 572.43503,531.80925 L 573.92332,531.80925 z M 573.92332,536.62703 L 573.92332,538.18615 L 572.43503,538.18615 L 572.43503,536.62703 L 573.92332,536.62703 z M 573.92332,541.4448 L 573.92332,543.00393 L 572.43503,543.00393 L 572.43503,541.4448 L 573.92332,541.4448 z M 573.92332,546.26258 L 573.92332,547.8217 L 572.43503,547.8217 L 572.43503,546.26258 L 573.92332,546.26258 z M 573.92332,551.08036 L 573.92332,552.6395 L 572.43503,552.6395 L 572.43503,551.08036 L 573.92332,551.08036 z "
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" />
+    <path
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       d="M 671.90812,449.907 L 671.90812,451.46612 L 670.41983,451.46612 L 670.41983,449.907 L 671.90812,449.907 z M 671.90812,454.72478 L 671.90812,456.2839 L 670.41983,456.2839 L 670.41983,454.72478 L 671.90812,454.72478 z M 671.90812,459.54255 L 671.90812,461.10168 L 670.41983,461.10168 L 670.41983,459.54255 L 671.90812,459.54255 z M 671.90812,464.36033 L 671.90812,465.91945 L 670.41983,465.91945 L 670.41983,464.36033 L 671.90812,464.36033 z M 671.90812,469.17812 L 671.90812,470.73723 L 670.41983,470.73723 L 670.41983,469.17812 L 671.90812,469.17812 z M 671.90812,473.99589 L 671.90812,475.55502 L 670.41983,475.55502 L 670.41983,473.99589 L 671.90812,473.99589 z M 671.90812,478.81367 L 671.90812,480.37279 L 670.41983,480.37279 L 670.41983,478.81367 L 671.90812,478.81367 z M 671.90812,483.63145 L 671.90812,485.19057 L 670.41983,485.19057 L 670.41983,483.63145 L 671.90812,483.63145 z M 671.90812,488.44924 L 671.90812,490.00835 L 670.41983,490.00835 L 670.41983,488.44924 L 671.90812,488.44924 z M 671.90812,493.26701 L 671.90812,494.82614 L 670.41983,494.82614 L 670.41983,493.26701 L 671.90812,493.26701 z M 671.90812,498.08479 L 671.90812,499.64391 L 670.41983,499.64391 L 670.41983,498.08479 L 671.90812,498.08479 z M 671.90812,502.90257 L 671.90812,504.46169 L 670.41983,504.46169 L 670.41983,502.90257 L 671.90812,502.90257 z M 671.90812,507.72036 L 671.90812,509.27947 L 670.41983,509.27947 L 670.41983,507.72036 L 671.90812,507.72036 z M 671.90812,512.53813 L 671.90812,514.09726 L 670.41983,514.09726 L 670.41983,512.53813 L 671.90812,512.53813 z M 671.90812,517.35591 L 671.90812,518.91503 L 670.41983,518.91503 L 670.41983,517.35591 L 671.90812,517.35591 z M 671.90812,522.17368 L 671.90812,523.73281 L 670.41983,523.73281 L 670.41983,522.17368 L 671.90812,522.17368 z M 671.90812,526.99146 L 671.90812,528.55058 L 670.41983,528.55058 L 670.41983,526.99146 L 671.90812,526.99146 z M 671.90812,531.80925 L 671.90812,533.36838 L 670.41983,533.36838 L 670.41983,531.80925 L 671.90812,531.80925 z M 671.90812,536.62703 L 671.90812,538.18615 L 670.41983,538.18615 L 670.41983,536.62703 L 671.90812,536.62703 z M 671.90812,541.4448 L 671.90812,543.00393 L 670.41983,543.00393 L 670.41983,541.4448 L 671.90812,541.4448 z M 671.90812,546.26258 L 671.90812,547.8217 L 670.41983,547.8217 L 670.41983,546.26258 L 671.90812,546.26258 z M 671.90812,551.08036 L 671.90812,552.6395 L 670.41983,552.6395 L 670.41983,551.08036 L 671.90812,551.08036 z "
+       id="path2518"
+       sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" />
+    <path
+       sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+       id="path2520"
+       d="M 774.94368,449.907 L 774.94368,451.46612 L 773.45539,451.46612 L 773.45539,449.907 L 774.94368,449.907 z M 774.94368,454.72478 L 774.94368,456.2839 L 773.45539,456.2839 L 773.45539,454.72478 L 774.94368,454.72478 z M 774.94368,459.54255 L 774.94368,461.10168 L 773.45539,461.10168 L 773.45539,459.54255 L 774.94368,459.54255 z M 774.94368,464.36033 L 774.94368,465.91945 L 773.45539,465.91945 L 773.45539,464.36033 L 774.94368,464.36033 z M 774.94368,469.17812 L 774.94368,470.73723 L 773.45539,470.73723 L 773.45539,469.17812 L 774.94368,469.17812 z M 774.94368,473.99589 L 774.94368,475.55502 L 773.45539,475.55502 L 773.45539,473.99589 L 774.94368,473.99589 z M 774.94368,478.81367 L 774.94368,480.37279 L 773.45539,480.37279 L 773.45539,478.81367 L 774.94368,478.81367 z M 774.94368,483.63145 L 774.94368,485.19057 L 773.45539,485.19057 L 773.45539,483.63145 L 774.94368,483.63145 z M 774.94368,488.44924 L 774.94368,490.00835 L 773.45539,490.00835 L 773.45539,488.44924 L 774.94368,488.44924 z M 774.94368,493.26701 L 774.94368,494.82614 L 773.45539,494.82614 L 773.45539,493.26701 L 774.94368,493.26701 z M 774.94368,498.08479 L 774.94368,499.64391 L 773.45539,499.64391 L 773.45539,498.08479 L 774.94368,498.08479 z M 774.94368,502.90257 L 774.94368,504.46169 L 773.45539,504.46169 L 773.45539,502.90257 L 774.94368,502.90257 z M 774.94368,507.72036 L 774.94368,509.27947 L 773.45539,509.27947 L 773.45539,507.72036 L 774.94368,507.72036 z M 774.94368,512.53813 L 774.94368,514.09726 L 773.45539,514.09726 L 773.45539,512.53813 L 774.94368,512.53813 z M 774.94368,517.35591 L 774.94368,518.91503 L 773.45539,518.91503 L 773.45539,517.35591 L 774.94368,517.35591 z M 774.94368,522.17368 L 774.94368,523.73281 L 773.45539,523.73281 L 773.45539,522.17368 L 774.94368,522.17368 z M 774.94368,526.99146 L 774.94368,528.55058 L 773.45539,528.55058 L 773.45539,526.99146 L 774.94368,526.99146 z M 774.94368,531.80925 L 774.94368,533.36838 L 773.45539,533.36838 L 773.45539,531.80925 L 774.94368,531.80925 z M 774.94368,536.62703 L 774.94368,538.18615 L 773.45539,538.18615 L 773.45539,536.62703 L 774.94368,536.62703 z M 774.94368,541.4448 L 774.94368,543.00393 L 773.45539,543.00393 L 773.45539,541.4448 L 774.94368,541.4448 z M 774.94368,546.26258 L 774.94368,547.8217 L 773.45539,547.8217 L 773.45539,546.26258 L 774.94368,546.26258 z M 774.94368,551.08036 L 774.94368,552.6395 L 773.45539,552.6395 L 773.45539,551.08036 L 774.94368,551.08036 z "
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" />
+    <path
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial"
+       d="M 874.90817,449.907 L 874.90817,451.46612 L 873.41988,451.46612 L 873.41988,449.907 L 874.90817,449.907 z M 874.90817,454.72478 L 874.90817,456.2839 L 873.41988,456.2839 L 873.41988,454.72478 L 874.90817,454.72478 z M 874.90817,459.54255 L 874.90817,461.10168 L 873.41988,461.10168 L 873.41988,459.54255 L 874.90817,459.54255 z M 874.90817,464.36033 L 874.90817,465.91945 L 873.41988,465.91945 L 873.41988,464.36033 L 874.90817,464.36033 z M 874.90817,469.17812 L 874.90817,470.73723 L 873.41988,470.73723 L 873.41988,469.17812 L 874.90817,469.17812 z M 874.90817,473.99589 L 874.90817,475.55502 L 873.41988,475.55502 L 873.41988,473.99589 L 874.90817,473.99589 z M 874.90817,478.81367 L 874.90817,480.37279 L 873.41988,480.37279 L 873.41988,478.81367 L 874.90817,478.81367 z M 874.90817,483.63145 L 874.90817,485.19057 L 873.41988,485.19057 L 873.41988,483.63145 L 874.90817,483.63145 z M 874.90817,488.44924 L 874.90817,490.00835 L 873.41988,490.00835 L 873.41988,488.44924 L 874.90817,488.44924 z M 874.90817,493.26701 L 874.90817,494.82614 L 873.41988,494.82614 L 873.41988,493.26701 L 874.90817,493.26701 z M 874.90817,498.08479 L 874.90817,499.64391 L 873.41988,499.64391 L 873.41988,498.08479 L 874.90817,498.08479 z M 874.90817,502.90257 L 874.90817,504.46169 L 873.41988,504.46169 L 873.41988,502.90257 L 874.90817,502.90257 z M 874.90817,507.72036 L 874.90817,509.27947 L 873.41988,509.27947 L 873.41988,507.72036 L 874.90817,507.72036 z M 874.90817,512.53813 L 874.90817,514.09726 L 873.41988,514.09726 L 873.41988,512.53813 L 874.90817,512.53813 z M 874.90817,517.35591 L 874.90817,518.91503 L 873.41988,518.91503 L 873.41988,517.35591 L 874.90817,517.35591 z M 874.90817,522.17368 L 874.90817,523.73281 L 873.41988,523.73281 L 873.41988,522.17368 L 874.90817,522.17368 z M 874.90817,526.99146 L 874.90817,528.55058 L 873.41988,528.55058 L 873.41988,526.99146 L 874.90817,526.99146 z M 874.90817,531.80925 L 874.90817,533.36838 L 873.41988,533.36838 L 873.41988,531.80925 L 874.90817,531.80925 z M 874.90817,536.62703 L 874.90817,538.18615 L 873.41988,538.18615 L 873.41988,536.62703 L 874.90817,536.62703 z M 874.90817,541.4448 L 874.90817,543.00393 L 873.41988,543.00393 L 873.41988,541.4448 L 874.90817,541.4448 z M 874.90817,546.26258 L 874.90817,547.8217 L 873.41988,547.8217 L 873.41988,546.26258 L 874.90817,546.26258 z M 874.90817,551.08036 L 874.90817,552.6395 L 873.41988,552.6395 L 873.41988,551.08036 L 874.90817,551.08036 z "
+       id="path2522"
+       sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" />
+  </g>
+</svg>
Index: /proiecte/HadoopA51/src/WordCount.java
===================================================================
--- /proiecte/HadoopA51/src/WordCount.java	(revision 166)
+++ /proiecte/HadoopA51/src/WordCount.java	(revision 166)
@@ -0,0 +1,69 @@
+package org.apache.hadoop.examples;
+
+import java.io.IOException;
+import java.util.StringTokenizer;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.io.IntWritable;
+import org.apache.hadoop.io.Text;
+import org.apache.hadoop.mapreduce.Job;
+import org.apache.hadoop.mapreduce.Mapper;
+import org.apache.hadoop.mapreduce.Reducer;
+import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
+import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
+import org.apache.hadoop.util.GenericOptionsParser;
+
+public class WordCount {
+
+  public static class TokenizerMapper 
+       extends Mapper<Object, Text, Text, IntWritable>{
+    
+    private final static IntWritable one = new IntWritable(1);
+    private Text word = new Text();
+      
+    public void map(Object key, Text value, Context context
+                    ) throws IOException, InterruptedException {
+      StringTokenizer itr = new StringTokenizer(value.toString());
+      while (itr.hasMoreTokens()) {
+        word.set(itr.nextToken());
+        context.write(word, one);
+      }
+    }
+  }
+  
+  public static class IntSumReducer 
+       extends Reducer<Text,IntWritable,Text,IntWritable> {
+    private IntWritable result = new IntWritable();
+
+    public void reduce(Text key, Iterable<IntWritable> values, 
+                       Context context
+                       ) throws IOException, InterruptedException {
+      int sum = 0;
+      for (IntWritable val : values) {
+        sum += val.get();
+      }
+      result.set(sum);
+      context.write(key, result);
+    }
+  }
+
+  public static void main(String[] args) throws Exception {
+    Configuration conf = new Configuration();
+    String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
+    if (otherArgs.length != 2) {
+      System.err.println("Usage: wordcount <in> <out>");
+      System.exit(2);
+    }
+    Job job = new Job(conf, "word count");
+    job.setJarByClass(WordCount.class);
+    job.setMapperClass(TokenizerMapper.class);
+    job.setCombinerClass(IntSumReducer.class);
+    job.setReducerClass(IntSumReducer.class);
+    job.setOutputKeyClass(Text.class);
+    job.setOutputValueClass(IntWritable.class);
+    FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
+    FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
+    System.exit(job.waitForCompletion(true) ? 0 : 1);
+  }
+}
Index: /proiecte/HadoopA51/src/java/Makefile
===================================================================
--- /proiecte/HadoopA51/src/java/Makefile	(revision 166)
+++ /proiecte/HadoopA51/src/java/Makefile	(revision 166)
@@ -0,0 +1,14 @@
+src=`find -name "*.java"`
+
+test_a5:build
+	java -classpath /usr/lib/hadoop-0.20/hadoop-0.20.1+152-core.jar:bin/TableGen.jar ro.pub.cs.pp.a51hadoop.algorithm.a51.A51Hashfn
+
+all:build
+	hadoop jar bin/TableGen.jar ro.pub.cs.pp.a51hadoop.table.TableGen /strinput /tables
+
+build:
+	javac -classpath /usr/lib/hadoop-0.20/hadoop-0.20.1+152-core.jar -d bin $(src)
+	jar -cvf bin/TableGen.jar -C bin/ .
+
+clean:
+	rm -rf bin/*
Index: /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/HashReducer.java
===================================================================
--- /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/HashReducer.java	(revision 166)
+++ /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/HashReducer.java	(revision 166)
@@ -0,0 +1,20 @@
+package ro.pub.cs.pp.a51hadoop.algorithm;
+/*
+ * A reduction function R that maps hash values back into secret values.
+ *
+ * There are many possible implementations for this function, and it's only
+ * important that it behaves pseudorandomly.
+ *
+ * By alternating the hash function with the reduction function,
+ * chains of alternating passwords and hash values are formed.
+ */
+public interface HashReducer
+{
+	/*
+	 * Apply the current Reducer on the given hash.
+	 *
+	 * @return a new secret value
+	 */
+	public String apply(String txt);
+}
+
Index: /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/Hashfn.java
===================================================================
--- /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/Hashfn.java	(revision 166)
+++ /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/Hashfn.java	(revision 166)
@@ -0,0 +1,9 @@
+package ro.pub.cs.pp.a51hadoop.algorithm;
+
+/*
+ * Apply a hash function on a given string.
+ */
+public interface Hashfn
+{
+	public String hashfn(String txt);
+}
Index: /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/ReducerGenerator.java
===================================================================
--- /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/ReducerGenerator.java	(revision 166)
+++ /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/ReducerGenerator.java	(revision 166)
@@ -0,0 +1,23 @@
+package ro.pub.cs.pp.a51hadoop.algorithm;
+
+
+/*
+ * A generator for Reducer functors that map hash values
+ * back to secret values.
+ *
+ * The actual implementations for the Reducer object may be
+ * different.
+ */
+public interface ReducerGenerator
+{
+
+	/*
+	 * Generate @length distinct Reducer functors
+	 * @length - the number of Reducers to generate
+	 * @param  - a parameter to be sent to the reducers
+	 *
+	 * @return an array of all Reducer objects created
+	 */
+	public HashReducer[] generate(int length, int param);
+}
+
Index: /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/a51/A51Bitops.java
===================================================================
--- /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/a51/A51Bitops.java	(revision 166)
+++ /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/a51/A51Bitops.java	(revision 166)
@@ -0,0 +1,58 @@
+package ro.pub.cs.pp.a51hadoop.algorithm.a51;
+
+public class A51Bitops
+{
+
+	public static int reverse_bits_int(int x)
+	{
+		int nr_bits = 32;
+		int ret = 0;
+		for (int i = 0; i < nr_bits; i++)
+			if ((x & 1 << i) != 0)
+				ret |= 1 << (nr_bits - 1 - i);
+		return ret;
+	}
+
+	public static long reverse_bits_long(long x)
+	{
+		int nr_bits = 64;
+		long ret = 0;
+		long one = 1;
+		for (int i = 0; i < nr_bits; i++)
+			if ((x & one << i) != 0)
+				ret |= one << (nr_bits - 1 - i);
+		return ret;
+	}
+
+	public static int parity(int x)
+	{
+		x ^= x >> 16;
+		x ^= x >> 8;
+		x ^= x >> 4;
+		x ^= x >> 2;
+		x ^= x >> 1;
+		return x & 1;
+	}
+
+
+	/* Clock one shift register */
+	public static int clockone(int reg, int mask, int taps)
+	{
+		int t = reg & taps;
+		reg = (reg << 1) & mask;
+		reg |= parity(t);
+		return reg;
+	}
+
+
+
+	/*
+	 * @return 1 or 0 as the i-th bit of x is 1 or 0
+	 */
+	public static int get_ith_bit(int x, int i)
+	{
+		return (x & (1 << i)) >> i;
+	}
+
+}
+
Index: /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/a51/A51Constants.java
===================================================================
--- /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/a51/A51Constants.java	(revision 166)
+++ /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/a51/A51Constants.java	(revision 166)
@@ -0,0 +1,44 @@
+package ro.pub.cs.pp.a51hadoop.algorithm.a51;
+
+public class A51Constants
+{
+	/*
+	 * which bits of a 32bit variable actually play a role
+	 */
+	public final static int R_mask[] =
+	{
+		/* 19 bits, numbered 0..18 */
+		0x07FFFF,
+		/* 22 bits, numbered 0..21 */
+		0x3FFFFF,
+		/* 23 bits, numbered 0..22 */
+		0x7FFFFF,
+	};
+
+
+	/* Middle bit of each of the shift registers */
+	public final static int R_middle_pos[] =
+	{
+		8,
+		10,
+		10,
+	};
+
+
+	/* Feedback taps. */
+	public final static int R_feedback_taps[] =
+	{
+		(1 << 13) | ( 1 << 16) | (1 << 17) | ( 1 << 18),
+		(1 << 20) | ( 1 << 21),
+		(1 <<  7) | ( 1 << 20) | (1 << 21) | ( 1 << 22),
+	};
+
+
+	/* Output taps. */
+	public final static int R_output_taps[] =
+	{
+		18,
+		21,
+		22,
+	};
+}
Index: /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/a51/A51Hashfn.java
===================================================================
--- /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/a51/A51Hashfn.java	(revision 166)
+++ /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/a51/A51Hashfn.java	(revision 166)
@@ -0,0 +1,209 @@
+package ro.pub.cs.pp.a51hadoop.algorithm.a51;
+
+import ro.pub.cs.pp.a51hadoop.algorithm.Hashfn;
+import ro.pub.cs.pp.a51hadoop.algorithm.a51.A51Bitops;
+import ro.pub.cs.pp.a51hadoop.algorithm.a51.A51Constants;
+import ro.pub.cs.pp.a51hadoop.algorithm.a51.A51KeySetup;
+
+/*
+ * Apply a hash function on a given string.
+ */
+public class A51Hashfn implements Hashfn
+{
+
+
+
+	/* do we have a majority of set bits in the middle of the
+	 * registers? */
+	public static boolean middle_bit_majority(final int[] R)
+	{
+		int sum = 0;
+		for (int i = 0; i < R.length; i++)
+			sum += A51Bitops.get_ith_bit(R[i], A51Constants.R_middle_pos[i]);
+		return sum >= 2;
+	}
+
+
+	/* Clock two or three of R1, R2, R3, with clock control
+	 * according to their middle bits.
+	 *
+	 * Specifically, we clock Ri whenever Ri's middle bit agrees
+	 * with the majority value of the three middle bits.
+	 */
+	public static int[] clock(final int[] R)
+	{
+		boolean non_zero_majority = middle_bit_majority(R);
+		int ret[] = new int[3];
+		for (int i = 0; i < R.length; i++)
+		{
+			int middle_bit = R[i] & (1 << A51Constants.R_middle_pos[i]);
+			boolean middle_bit_non_zero = (middle_bit != 0);
+			boolean middle_bit_is_majoritar = middle_bit_non_zero == non_zero_majority;
+
+			/*
+			 * Only clock Ri when it is the same as the
+			 * majority of middle bits
+			 */
+			if (middle_bit_is_majoritar)
+				ret[i] = A51Bitops.clockone(R[i], A51Constants.R_mask[i],
+							    A51Constants.R_feedback_taps[i]);
+			else
+				ret[i] = R[i];
+		}
+		return ret;
+	}
+
+
+
+
+
+	/*
+	 * Generate an output bit from the current state.
+	 *
+	 * You grab a bit from each register via the output generation
+	 * taps; then you XOR the resulting three bits.
+	 */
+	private static int getbit(final int[] R)
+	{
+		int ret = 0;
+		/*
+		 * Original reference implementation XOR-ed
+		 * parity(R[i] & (1 << R_out[i])).
+		 *
+		 * Since R_output_taps[i] only contains single bits,
+		 * the argument passed to parity has one or zero bits.
+		 *
+		 * Moving the given bit with R_output_taps[i] to left
+		 * produces the same result.
+		 */
+		for (int i = 0; i < R.length; i++)
+			ret ^= A51Bitops.get_ith_bit(R[i], A51Constants.R_output_taps[i]);
+		return ret;
+	}
+
+
+
+	/* Generate output.
+	 *
+	 * We generate 228 bits of keystream output.
+	 *
+	 * The first 114 bits is for the A->B frame;
+	 * the next 114 bits is for the B->A frame.
+	 *
+	 * The buffers are allocate elsewhere each direction, and this
+	 * function fills them. */
+	public static int[] run(int AtoBkeystream[], int BtoAkeystream[], int[] R)
+	{
+		int i;
+
+		/* Zero out the output buffers. */
+		for (i = 0; i <= 113/8; i++)
+			AtoBkeystream[i] = BtoAkeystream[i] = 0;
+
+		/* Generate 114 bits of keystream for the
+		 * A->B direction.  Store it, MSB first. */
+		for (i = 0; i < 114; i++)
+		{
+			R = clock(R);
+			AtoBkeystream[i/8] |= getbit(R) << (7 - (i & 7));
+		}
+
+		/* Generate 114 bits of keystream for the
+		 * B->A direction.  Store it, MSB first. */
+		for (i = 0; i < 114; i++)
+		{
+			R = clock(R);
+			BtoAkeystream[i/8] |= getbit(R) << (7 - (i & 7));
+		}
+
+		return R;
+	}
+
+
+	private static void printf(String arg)
+	{
+		System.out.print(arg);
+	}
+
+	public static void test()
+	{
+		int i, failed = 0;
+		int key[] = {0x12, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF};
+		int frame = 0x134;
+		final int goodAtoB[] = { 0x53, 0x4E, 0xAA, 0x58, 0x2F, 0xE8, 0x15,
+				    0x1A, 0xB6, 0xE1, 0x85, 0x5A, 0x72, 0x8C, 0x00 };
+		final int goodBtoA[] = { 0x24, 0xFD, 0x35, 0xA3, 0x5D, 0x5F, 0xB6,
+				    0x52, 0x6D, 0x32, 0xF9, 0x06, 0xDF, 0x1A, 0xC0 };
+		int AtoB[], BtoA[];
+		AtoB = new int[15];
+		BtoA = new int[15];
+
+
+		A51KeySetup keysetup = new A51KeySetup(key, frame);
+		int[] R = keysetup.R;
+
+
+		int s = R[0] << 23 + 22 | R[1] << 23 | R[2];
+		R = run(AtoB, BtoA, R);
+
+		/* Compare against the test vector. */
+		for (i = 0; i < AtoB.length; i++)
+			if (AtoB[i] != goodAtoB[i])
+				failed = 1;
+		for (i = 0; i < BtoA.length; i++)
+			if (BtoA[i] != goodBtoA[i])
+				failed = 1;
+
+
+		printf("key: 0x");
+		for (i=0; i<8; i++)
+			printf(String.format("%02X", key[i]));
+		printf("\n");
+		printf(String.format("frame number: 0x%06X\n", frame));
+		printf("known good output:\n");
+		printf(" A->B: 0x");
+		for (i=0; i<15; i++)
+			printf(String.format("%02X", goodAtoB[i]));
+		printf("  B->A: 0x");
+		for (i=0; i<15; i++)
+			printf(String.format("%02X", goodBtoA[i]));
+		printf("\n");
+		printf("observed output:\n");
+		printf(" A->B: 0x");
+		for (i=0; i<15; i++)
+			printf(String.format("%02X", AtoB[i]));
+		printf("  B->A: 0x");
+		for (i=0; i<15; i++)
+			printf(String.format("%02X", BtoA[i]));
+		printf("\n");
+
+		printf("failed=" + failed + "\n");
+
+		if (failed == 0)
+		{
+			System.out.println("Self-check succeeded: everything looks ok.\n");
+			return;
+		}
+		else
+		{
+			// Problems!  The test vectors didn't compare
+			System.out.println("\nI don't know why this broke; contact the authors.\n");
+		}
+
+
+	}
+
+	public String hashfn(String txt)
+	{
+		/*
+		 * dummy implementation
+		 */
+		return txt;
+	}
+
+
+	public static void main(String[] args)
+	{
+		test();
+	}
+}
Index: /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/a51/A51KeySetup.java
===================================================================
--- /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/a51/A51KeySetup.java	(revision 166)
+++ /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/a51/A51KeySetup.java	(revision 166)
@@ -0,0 +1,84 @@
+package ro.pub.cs.pp.a51hadoop.algorithm.a51;
+
+import ro.pub.cs.pp.a51hadoop.algorithm.Hashfn;
+import ro.pub.cs.pp.a51hadoop.algorithm.a51.A51Bitops;
+import ro.pub.cs.pp.a51hadoop.algorithm.a51.A51Constants;
+
+
+public class A51KeySetup
+{
+	public final int[] R;
+
+
+
+	/*
+	 * Clock all three of R1,R2,R3, ignoring their middle bits.
+	 * This is only used for key setup.
+	 */
+	private static int[] clockallthree(final int[] R)
+	{
+		int ret[] = new int[R.length];
+		for(int i = 0; i < R.length; i++)
+			ret[i] = A51Bitops.clockone(R[i], A51Constants.R_mask[i],
+						    A51Constants.R_feedback_taps[i]);
+		return ret;
+	}
+
+
+	/* Do the A5/1 key setup.  This routine accepts a 64-bit key
+	 * and a 22-bit frame number. */
+	public static int[] keysetup(int[] key, int frame)
+	{
+		int i;
+		int[] R = new int[3];
+		
+		/* Zero out the shift registers. */
+		for(i = 0; i < R.length; i++)
+			R[i] = 0;
+
+		/* Load the key into the shift registers, LSB of first
+		 * byte of key array first, clocking each register
+		 * once for every key bit loaded.  (The usual clock
+		 * control rule is temporarily disabled.) */
+		for (i = 0; i < 64; i++)
+		{
+			R = clockallthree(R); /* always clock */
+			int keybit = (key[i/8] >> (i & 7)) & 1; /* The i-th bit of the key */
+			for(int j = 0; j < R.length; j++)
+				R[j] ^= keybit;
+		}
+
+		/* Load the frame number into the shift
+		 * registers, LSB first,
+		 * clocking each register once for every
+		 * key bit loaded.  (The usual clock
+		 * control rule is still disabled.) */
+		for (i = 0; i < 22; i++)
+		{
+			R = clockallthree(R); /* always clock */
+			int framebit = (frame >> i) & 1; /* The i-th bit of the frame # */
+			for(int j = 0; j < R.length; j++)
+				R[j] ^= framebit;
+		}
+
+		/* Run the shift registers for 100 clocks
+		 * to mix the keying material and frame number
+		 * together with output generation disabled,
+		 * so that there is sufficient avalanche.
+		 * We re-enable the majority-based clock control
+		 * rule from now on. */
+		for (i=0; i<100; i++)
+		{
+			R = A51Hashfn.clock(R);
+		}
+		
+		/* Now the key is properly set up. */
+		return R;
+	}
+
+	public A51KeySetup(int[] key, int frame)
+	{
+		this.R = keysetup(key, frame);
+	}
+}
+
Index: /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/a51/a51.cpp
===================================================================
--- /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/a51/a51.cpp	(revision 166)
+++ /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/a51/a51.cpp	(revision 166)
@@ -0,0 +1,213 @@
+#include <iostream>
+#include <iomanip>
+#include <stdlib.h>
+#include <string.h>
+
+// which bits of a 32bit variable actually play a role
+#define R1MASK	0x07FFFF /* 19 bits, numbered 0..18 */
+#define R2MASK	0x3FFFFF /* 22 bits, numbered 0..21 */
+#define R3MASK	0x7FFFFF /* 23 bits, numbered 0..22 */
+
+struct simple {
+  // reverse the order of bits in a register.
+  // the MSB becomes the new LSB and vice versa
+  template <int N, typename T>
+  static T d_register_reverse_bits(T r) {
+    T res = 0;
+    for (int i = 0; i < N; i++) {
+      if (r & 1ULL << i) {
+	res |= 1ULL << N - 1 - i;
+      }
+    }
+    return res;
+  }
+
+  // majority bit
+  /* Middle bit of each of the three shift registers, for clock control */
+  static const uint32_t R1MID =	0x000100; /* bit 8 */
+  static const uint32_t R2MID =	0x000400; /* bit 10 */
+  static const uint32_t R3MID =	0x000400; /* bit 10 */
+
+  /* Feedback taps, for clocking the shift registers. */
+  static const uint32_t R1TAPS =	0x072000; /* bits 18,17,16,13 */
+  static const uint32_t R2TAPS =	0x300000; /* bits 21,20 */
+  static const uint32_t R3TAPS =	0x700080; /* bits 22,21,20,7 */
+
+  /* Output taps, for output generation */
+  static const uint32_t R1OUT =	0x040000; /* bit 18 (the high bit) */
+  static const uint32_t R2OUT =	0x200000; /* bit 21 (the high bit) */
+  static const uint32_t R3OUT =	0x400000; /* bit 22 (the high bit) */
+
+  static int parity32(uint32_t x) {
+    x ^= x>>16;
+    x ^= x>>8;
+    x ^= x>>4;
+    x ^= x>>2;
+    x ^= x>>1;
+    return x&1;
+  }
+  static int majority(uint32_t R1, uint32_t R2, uint32_t R3) {
+    int sum;
+    sum = ((R1&R1MID) >> 8) + ((R2&R2MID) >> 10) + ((R3&R3MID) >> 10);
+    if (sum >= 2)
+      return 1;
+    else
+      return 0;
+  }
+
+  static int getbit(uint32_t R1, uint32_t R2, uint32_t R3) {
+    return ((R1&R1OUT) >> 18) ^ ((R2&R2OUT) >> 21) ^ ((R3&R3OUT) >> 22);
+  }
+
+  static uint32_t clockone(uint32_t reg, uint32_t mask, uint32_t taps) {
+    uint32_t t = reg & taps;
+    reg = (reg << 1) & mask;
+    reg |= parity32(t);
+    return reg;
+  }
+
+  // calculate the new round function value
+  // based on a 64bit xilinx PRNG
+  // output of the shift operations is discarded.
+  static uint64_t advance_rf_lfsr_buggy(uint64_t v) {
+    for (int i = 0; i < 64; i++) {
+      uint64_t fb =  (
+		      ~(
+			 ((v >> 63) & 1) ^
+			 ((v >> 62) & 1) ^
+			 ((v >> 60) & 1) ^
+			 ((v >> 59) & 1)
+			)
+		      ) & 1;
+      v >>= 1;
+      v |= fb << 63;
+    }
+    return v;
+  }
+
+  // calculate the new round function value
+  // based on a 64bit xilinx PRNG
+  // output of the shift operations is discarded.
+  static uint64_t advance_rf_lfsr(uint64_t v) {
+    for (int i = 0; i < 64; i++) {
+      uint64_t fb =  (
+		      ~(
+			 ((v >> 63) & 1) ^
+			 ((v >> 62) & 1) ^
+			 ((v >> 60) & 1) ^
+			 ((v >> 59) & 1)
+			)
+		      ) & 1;
+      v <<= 1;
+      v |= fb;
+    }
+    return v;
+  }
+
+  // advance the state for the simple increment round function generator
+  static uint64_t advance_rf_inc(uint64_t v) {
+    return v + 1;
+  }
+
+  struct implementation {
+    // input: 64bits of start value
+    // index: ignore
+    // nruns: max chain length
+    // dpbits: number of bits of a distringuished point between round functions
+    // rounds: number of round functions
+    static uint64_t run(uint64_t input, uint32_t index, int nruns, int dpbits, int rounds, int rfgen_advance, bool buggy) {
+      uint64_t result = input;
+      uint64_t rfstate = 0;
+      int i;
+      int rfapplycount = 0;
+
+      for (int i = 0; i < rfgen_advance; i++) {
+	rfstate = advance_rf_lfsr(rfstate);
+	std::cerr << "0x" << std::hex << std::setfill('0') << std::setw(16) << rfstate << "\n";
+      }
+      // std::cerr << std::hex << rfstate << "\n";
+
+      // main loop: for each chain column
+
+      for (int run = nruns; run > 0; --run) {
+	// apply the round function
+	result ^= rfstate;
+
+	// test round function condition
+	if ((result & (1 << dpbits) - 1) == 0) {
+	  // advance round function
+	  if (buggy) {
+	    rfstate = advance_rf_lfsr_buggy(rfstate);
+	  } else {
+	    rfstate = advance_rf_lfsr(rfstate);
+	  }
+	  rfapplycount++;
+	}
+
+	// check chain end condition
+	if (rfapplycount == rounds) {
+	  std::cerr << "round function state: " << rfapplycount << " after " << nruns - run << " rounds\n";
+	  return result;
+	}
+
+	// apply A5/1 to result, store in result
+	// goes on till the end of the main loop
+
+	// fill the registers with the keystream from the last round
+	uint32_t R3 = result            & R3MASK;
+	uint32_t R2 = result >> 23      & R2MASK;
+	uint32_t R1 = result >> 23 + 22 & R1MASK;
+
+	// reverse the bit order to account for
+	// the fpga and cuda optimizations
+	R1 = d_register_reverse_bits<19>(R1);
+	R2 = d_register_reverse_bits<22>(R2);
+	R3 = d_register_reverse_bits<23>(R3);
+
+	// produce result from R1,R2,R3
+	result = uint64_t(getbit(R1, R2, R3)) << 63;
+	for(i=1;i<64;i++) {
+	  int maj = majority(R1, R2, R3);
+	  uint32_t T1 = clockone(R1, R1MASK, R1TAPS);
+	  uint32_t T2 = clockone(R2, R2MASK, R2TAPS);
+	  uint32_t T3 = clockone(R3, R3MASK, R3TAPS);
+
+	  if (((R1&R1MID)!=0) == maj)
+	    R1 = T1;
+	  if (((R2&R2MID)!=0) == maj)
+	    R2 = T2;
+	  if (((R3&R3MID)!=0) == maj)
+	    R3 = T3;
+
+	  result = result >> 1 | uint64_t(getbit(R1, R2, R3)) << 63;
+	}
+	// std::cout << std::hex << result << "\n";
+      }
+      std::cerr << "round function state: " << rfapplycount << "\n";
+      return result;
+    }
+  };
+};
+
+int main(int argc, char ** argv) {
+  uint64_t r1 = 123, r2 = 123, r3 = 123;
+  uint64_t input;
+  sscanf(argv[1], "%llX", &input);
+  bool buggy = false;
+  if (argc > 6 && strcmp(argv[6], "buggy") == 0) {
+    buggy = true;
+  }
+
+  uint64_t startval = input;
+  std::cout << "0x" << std::hex
+	    << std::setfill('0') << std::setw(16)
+	    << startval
+	    << " -> 0x"
+	    << std::setfill('0') << std::setw(16)
+	    << simple::implementation::run(startval,
+					   0,
+					   atoi(argv[2]),
+					   atoi(argv[3]),
+					   atoi(argv[4]),
+					   atoi(argv[5]), buggy) << "\n";
+}
Index: /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/testing/DigitHashfn.java
===================================================================
--- /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/testing/DigitHashfn.java	(revision 166)
+++ /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/testing/DigitHashfn.java	(revision 166)
@@ -0,0 +1,22 @@
+package ro.pub.cs.pp.a51hadoop.algorithm.testing;
+
+import ro.pub.cs.pp.a51hadoop.algorithm.Hashfn;
+
+/*
+ * Apply a hash function on a given string.
+ */
+public class DigitHashfn implements Hashfn
+{
+	public String hashfn(String txt)
+	{
+		/*
+		 * This simple hashfn only exchanges the two halves of
+		 * a string and returns their new combination.
+		 *
+		 * This is used only in the testing phase to check
+		 * whether the rest of the framework works correclty.
+		 */
+		return txt.substring(txt.length() / 2, txt.length()) +
+			txt.substring(0, txt.length() / 2);
+	}
+}
Index: /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/testing/DigitReducer.java
===================================================================
--- /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/testing/DigitReducer.java	(revision 166)
+++ /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/testing/DigitReducer.java	(revision 166)
@@ -0,0 +1,111 @@
+package ro.pub.cs.pp.a51hadoop.algorithm.testing;
+
+import ro.pub.cs.pp.a51hadoop.algorithm.HashReducer;
+
+
+/* A reduction function R that maps hash values back into secret values.
+ *
+ * There are many possible implementations for this function, and it's only
+ * important that it behaves pseudorandomly.
+ *
+ * By alternating the hash function with the reduction function,
+ * chains of alternating passwords and hash values are formed.
+ *
+ *
+ * This reducer only changes one digit of the given string
+ * (represented as a number).
+ */
+public class DigitReducer implements HashReducer
+{
+	private int i;
+	private int k;
+	public DigitReducer(int i, int k)
+	{
+		this.i = i;
+		this.k = k;
+	}
+
+	/*
+	 * Apply the current Reducer on the given hash.
+	 *
+	 * @return a new secret value
+	 */
+	public String apply(String strX)
+	{
+		try
+		{
+			int last_digit = 0;
+			int x = Integer.parseInt(strX);
+
+
+			/*
+			 * This is a limmited implementation.
+			 *
+			 * It will not give us pseudorandom strings,
+			 * but this will do for testing pourposes.
+			 */
+			switch (i)
+			{
+			case 0:
+				last_digit = i % 3;
+				break;
+			case 1:
+				last_digit = i % 3 + 3;
+				break;
+			case 2:
+				last_digit = i % 3 + 6;
+				break;
+			default:
+				last_digit = 9;
+				break;
+			}
+
+			/* 
+			 * Change the last digit
+			 */
+			x = x / 10 * 10 + last_digit;
+
+
+			/*
+			 * This is done to look like we have many
+			 * distinct reducer functions.
+			 *
+			 * This is required to solve the problem of
+			 * collisions with ordinary hash chains by
+			 * replacing the single reduction function R
+			 * with a sequence of related reduction
+			 * functions R1 through Rk.
+			 *
+			 * This way, in order for two chains to
+			 * collide and merge, they must hit the same
+			 * value on the same iteration. Consequently,
+			 * the final values in each chain will be
+			 * identical. A final postprocessing pass can
+			 * sort the chains in the table and remove any
+			 * "duplicate" chains that have the same final
+			 * value as other chains. New chains are then
+			 * generated to fill out the table. These
+			 * chains are not collision-free (they may
+			 * overlap briefly) but they will not merge,
+			 * drastically reducing the overall number of
+			 * collisions
+			 */
+			x = x ^ k;
+
+			String ret = "" + x;
+			while(ret.length() < strX.length())
+				ret = "0" + ret;
+			if (ret.length() > strX.length())
+				ret = ret.substring(0, strX.length());
+			return ret;
+		}
+		catch (Exception e)
+		{
+			/*
+			 * On error return the original unmodified
+			 * string.
+			 */
+			return strX;
+		}
+	}
+}
Index: /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/testing/DigitReducerGenerator.java
===================================================================
--- /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/testing/DigitReducerGenerator.java	(revision 166)
+++ /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/algorithm/testing/DigitReducerGenerator.java	(revision 166)
@@ -0,0 +1,50 @@
+package ro.pub.cs.pp.a51hadoop.algorithm.testing;
+
+import ro.pub.cs.pp.a51hadoop.algorithm.HashReducer;
+import ro.pub.cs.pp.a51hadoop.algorithm.ReducerGenerator;
+
+
+/*
+ * A generator for DigitReducer functors.
+ *
+ */
+public class DigitReducerGenerator implements ReducerGenerator
+{
+
+	/*
+	 * All logic implemented in the generate() method.
+	 *
+	 * This generator can be reused to generate many sets of
+	 * objects as it does not hold any state information.
+	 */
+	public DigitReducerGenerator() { }
+
+	/*
+	 * Generate @length distinct Reducer functors
+	 * @length - the number of Reducers to generate
+	 * @param  - a parameter to be sent to the reducers
+	 *
+	 * @return an array of all Reducer objects created
+	 */
+	public HashReducer[] generate(int length, int param)
+	{
+		try
+		{
+			HashReducer[] r;
+
+			r = new HashReducer[length];
+			for (int i = 0; i < length; i++)
+				r[i] = new DigitReducer(i, param);
+
+			return r;
+		}
+		catch(Exception e)
+		{
+			/*
+			 * Fallback to an empty list of reducers.
+			 */
+			return new HashReducer[0];
+		}
+	}
+}
+
Index: /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/common/TextArrayWritable.java
===================================================================
--- /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/common/TextArrayWritable.java	(revision 166)
+++ /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/common/TextArrayWritable.java	(revision 166)
@@ -0,0 +1,38 @@
+package ro.pub.cs.pp.a51hadoop.common;
+
+import ro.pub.cs.pp.a51hadoop.config.Config;
+import java.io.IOException;
+import java.util.*;
+
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.conf.*;
+import org.apache.hadoop.io.*;
+import org.apache.hadoop.mapred.*;
+import org.apache.hadoop.util.*;
+
+public class TextArrayWritable extends ArrayWritable
+{
+	public TextArrayWritable() 
+	{ 
+		super(Text.class);
+	}
+
+        public TextArrayWritable(String[] s)
+        {
+                super(s);
+        }
+
+        public String toString()
+        {
+                Writable[] w = get();
+                StringBuffer buffer = new StringBuffer();
+                String space = " ";
+
+                for(int i = 0; i< w.length; i++)
+                {
+                        buffer.append(w[i].toString());
+                        buffer.append(space);
+                }
+                return buffer.toString();
+        }
+}
Index: /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/config/Config.java
===================================================================
--- /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/config/Config.java	(revision 166)
+++ /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/config/Config.java	(revision 166)
@@ -0,0 +1,7 @@
+package ro.pub.cs.pp.a51hadoop.config;
+
+public class Config
+{
+	public final static int N_TABLES = 4;
+	public final static int N_R = 4;
+}
Index: /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/search/Search.java
===================================================================
--- /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/search/Search.java	(revision 166)
+++ /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/search/Search.java	(revision 166)
@@ -0,0 +1,173 @@
+package ro.pub.cs.pp.a51hadoop.table;
+
+import ro.pub.cs.pp.a51hadoop.config.Config;
+import ro.pub.cs.pp.a51hadoop.common.*;
+import ro.pub.cs.pp.a51hadoop.algorithm.*;
+import ro.pub.cs.pp.a51hadoop.algorithm.testing.*;
+
+import java.io.IOException;
+import java.util.*;
+
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.conf.*;
+import org.apache.hadoop.io.*;
+import org.apache.hadoop.mapred.*;
+import org.apache.hadoop.util.*;
+
+public class Search
+{
+
+	public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, ArrayWritable>
+	{
+		private HashReducer[] r;
+		private Hashfn hashfn;
+		private String needle;
+		private ArrayList<String> needleGenerators;
+
+		public void create_testing_problem(int nr_reducers, int id)
+		{
+			hashfn = new DigitHashfn();
+			r = new DigitReducerGenerator().generate(nr_reducers, id);
+		}
+
+		public void create_a51_problem(int nr_reducers, int id)
+		{
+			throw new RuntimeException("a51 not implemented");
+		}
+
+		public void configure(JobConf job)
+		{
+			int nr_reducers = Config.N_R;
+			int k = job.getInt("mapred.mapper.table_id", 0);
+			int use_a51 = job.getInt("mapred.mapper.use_a51", 0);
+			this.needle = job.get("mapred.mapper.needle");
+			this.needleGenerators = new ArrayList<String>();
+
+			for(int i = 0; i < Config.N_R; i++)
+			{
+				String gen = applyLast(needle, i);
+				this.needleGenerators.add(gen);
+			}
+
+
+			if (use_a51 != 0)
+				create_a51_problem(nr_reducers, k);
+			else
+				create_testing_problem(nr_reducers, k);
+		}
+
+		public String applyAll(String txt)
+		{
+			for (int i = 0; i < Config.N_R; i++)
+			{
+				txt = r[i].apply(hashfn.hashfn(txt));
+			}
+			return txt;
+		}
+
+		public String applyLast(String hashstr, int n)
+		{
+			for (int i = Config.N_R - n; i < Config.N_R - 1; i++)
+			{
+				hashstr = hashfn.hashfn(r[i].apply(hashstr));
+			}
+			return r[r.length - 1].apply(hashstr);
+		}
+
+
+		public String applyFirst(String txt, int n)
+		{
+			for (int i = 0; i < n; i++)
+			{
+				txt = hashfn.hashfn(r[i].apply(txt));
+			}
+			return txt;
+		}
+
+
+		public void map(LongWritable key, Text value, OutputCollector<Text, ArrayWritable> output, Reporter reporter) throws IOException
+		{
+
+			String line = value.toString();
+			StringTokenizer tokenizer = new StringTokenizer(line);
+			if (!tokenizer.hasMoreTokens())
+				return;
+			String end = tokenizer.nextToken();
+			List<Text> list = new ArrayList<Text>();
+			ArrayWritable arr = new TextArrayWritable();
+			Text word = new Text();
+			word.set(needle);
+			while (tokenizer.hasMoreTokens())
+			{
+				String start = tokenizer.nextToken();
+				for (int i = 0; i < needleGenerators.size(); i++)
+				{
+					if (start.equals(needleGenerators.get(i)))
+					{
+						String hashStr = applyFirst(start, Config.N_R - i);
+						if (!hashStr.equals(needle))
+							continue;
+						Text t = new Text();
+						t.set(start);
+						list.add(t);
+					}
+				}
+			}
+
+			arr.set(list.toArray(new Text[0]));
+			output.collect(word, arr);
+		}
+	}
+
+	public static class Reduce extends MapReduceBase implements Reducer<Text, ArrayWritable, Text, ArrayWritable>
+	{
+
+		public void reduce(Text key, Iterator<ArrayWritable> values, OutputCollector<Text, ArrayWritable> output, Reporter reporter) throws IOException
+		{
+			List<Text> list = new ArrayList<Text>();
+			while (values.hasNext())
+			{
+				//Text[] arr = (Text[]) ;
+				Writable[] arr = values.next().get();
+				for (int i = 0; i < arr.length; i++)
+				{
+					Text t = (Text) arr[i];
+					list.add(t);
+				}
+			}
+			ArrayWritable arr = new TextArrayWritable();
+			arr.set(list.toArray(new Text[0]));
+			output.collect(key, arr);
+		}
+	}
+
+	public static void run(String input, String output, int k) throws Exception
+	{
+		JobConf conf = new JobConf(TableGen.class);
+		String kstr = "" + k;
+		conf.setJobName("tablegen");
+		conf.setOutputKeyClass(Text.class);
+		conf.setOutputValueClass(TextArrayWritable.class);
+
+		conf.setMapperClass(Map.class);
+		conf.setCombinerClass(Reduce.class);
+		conf.setReducerClass(Reduce.class);
+
+		conf.setInputFormat(TextInputFormat.class);
+		conf.setOutputFormat(TextOutputFormat.class);
+
+		FileInputFormat.setInputPaths(conf, new Path(input));
+		FileOutputFormat.setOutputPath(conf, new Path(new Path(output), kstr));
+
+		JobClient.runJob(conf);
+	}
+
+	public static void main(String[] args) throws Exception
+	{
+		for(int i = 0; i < Config.N_TABLES; i++)
+		{
+			run(args[0], args[1], i);
+			System.out.println("LAG:XXXX:XXXX: i=" + i);
+		}
+	}
+}
Index: /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/table/TableGen.java
===================================================================
--- /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/table/TableGen.java	(revision 166)
+++ /proiecte/HadoopA51/src/java/ro/pub/cs/pp/a51hadoop/table/TableGen.java	(revision 166)
@@ -0,0 +1,177 @@
+package ro.pub.cs.pp.a51hadoop.table;
+
+import ro.pub.cs.pp.a51hadoop.config.Config;
+import ro.pub.cs.pp.a51hadoop.common.*;
+import ro.pub.cs.pp.a51hadoop.algorithm.*;
+import ro.pub.cs.pp.a51hadoop.algorithm.testing.*;
+
+import java.io.IOException;
+import java.util.*;
+
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.conf.*;
+import org.apache.hadoop.io.*;
+import org.apache.hadoop.mapred.*;
+import org.apache.hadoop.util.*;
+
+public class TableGen
+{
+
+	public static class R
+	{
+		private int i;
+		private int k;
+		public R(int i, int k)
+		{
+			this.i = i;
+			this.k = k;
+		}
+
+		public String apply(String strX)
+		{
+			try {
+				int x = Integer.parseInt(strX);
+				int last_digit = 0;
+				switch (i)
+				{
+				case 0:
+					last_digit = i % 3;
+					break;
+				case 1:
+					last_digit = i % 3 + 3;
+					break;
+				case 2:
+					last_digit = i % 3 + 6;
+					break;
+				default:
+					last_digit = 9;
+					break;
+				}
+				x = x / 10 * 10 + last_digit;
+
+				x = x ^ k;
+
+				String ret = "" + x;
+				while(ret.length() < strX.length())
+					ret = "0" + ret;
+				if (ret.length() > strX.length())
+					ret = ret.substring(0, strX.length());
+				return ret;
+			} catch (Exception e) {
+				return strX;
+			}
+		}
+	}
+
+	public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, ArrayWritable>
+	{
+		private HashReducer[] r;
+		private Hashfn hashfn;
+
+		public void create_testing_problem(int nr_reducers, int id)
+		{
+			hashfn = new DigitHashfn();
+			r = new DigitReducerGenerator().generate(nr_reducers, id);
+		}
+
+		public void create_a51_problem(int nr_reducers, int id)
+		{
+			throw new RuntimeException("a51 not implemented");
+		}
+
+		public void configure(JobConf job)
+		{
+			int nr_reducers = Config.N_R;
+			int k = job.getInt("mapred.mapper.table_id", 0);
+			int use_a51 = job.getInt("mapred.mapper.use_a51", 0);
+			if (use_a51 != 0)
+				create_a51_problem(nr_reducers, k);
+			else
+				create_testing_problem(nr_reducers, k);
+		}
+
+		public String applyAll(String txt)
+		{
+			for (int i = 0; i < txt.length(); i++)
+			{
+				txt = r[i].apply(hashfn.hashfn(txt));
+			}
+			return txt;
+		}
+
+		public void map(LongWritable key, Text value, OutputCollector<Text, ArrayWritable> output, Reporter reporter) throws IOException
+		{
+
+			String line = value.toString();
+			StringTokenizer tokenizer = new StringTokenizer(line);
+			while (tokenizer.hasMoreTokens())
+			{
+				String wordStr = tokenizer.nextToken();
+				String hashStr = applyAll(wordStr);
+				Text word = new Text();
+				Text hash = new Text();
+				List<Text> list = new ArrayList<Text>();
+
+				word.set(wordStr);
+				hash.set(hashStr);
+				list.add(hash);
+				ArrayWritable arr = new TextArrayWritable();
+				arr.set(list.toArray(new Text[0]));
+
+				output.collect(word, arr);
+			}
+		}
+	}
+
+	public static class Reduce extends MapReduceBase implements Reducer<Text, ArrayWritable, Text, ArrayWritable>
+	{
+
+		public void reduce(Text key, Iterator<ArrayWritable> values, OutputCollector<Text, ArrayWritable> output, Reporter reporter) throws IOException
+		{
+			List<Text> list = new ArrayList<Text>();
+			while (values.hasNext())
+			{
+				//Text[] arr = (Text[]) ;
+				Writable[] arr = values.next().get();
+				for (int i = 0; i < arr.length; i++)
+				{
+					Text t = (Text) arr[i];
+					list.add(t);
+				}
+			}
+			ArrayWritable arr = new TextArrayWritable();
+			arr.set(list.toArray(new Text[0]));
+			output.collect(key, arr);
+		}
+	}
+
+	public static void run(String input, String output, int k) throws Exception
+	{
+		JobConf conf = new JobConf(TableGen.class);
+		String kstr = "" + k;
+		conf.setJobName("tablegen");
+		conf.setOutputKeyClass(Text.class);
+		conf.setOutputValueClass(TextArrayWritable.class);
+
+		conf.setMapperClass(Map.class);
+		conf.setCombinerClass(Reduce.class);
+		conf.setReducerClass(Reduce.class);
+
+		conf.setInputFormat(TextInputFormat.class);
+		conf.setOutputFormat(TextOutputFormat.class);
+
+		FileInputFormat.setInputPaths(conf, new Path(input));
+		FileOutputFormat.setOutputPath(conf, new Path(new Path(output), kstr));
+
+		JobClient.runJob(conf);
+	}
+
+	public static void main(String[] args) throws Exception
+	{
+		for(int i = 0; i < Config.N_TABLES; i++)
+		{
+			run(args[0], args[1], i);
+			System.out.println("LAG:XXXX:XXXX: i=" + i);
+		}
+	}
+}
Index: /proiecte/HadoopA51/src/serial/py/generate_strings.py
===================================================================
--- /proiecte/HadoopA51/src/serial/py/generate_strings.py	(revision 166)
+++ /proiecte/HadoopA51/src/serial/py/generate_strings.py	(revision 166)
@@ -0,0 +1,24 @@
+#!/usr/bin/env python3
+
+import rainbow_config
+
+def generate_item(n):
+    v = []
+    for i in range(0, rainbow_config.N):
+        v.append(str(n % 10))
+        n = int(n / 10)
+    v.reverse()
+    return ''.join(v)
+
+def generate_range(a, b):
+    v = []
+    for i in range(a, b):
+        v.append(generate_item(i))
+    return v
+
+def generate_all():
+    return generate_range(0, pow(10, rainbow_config.N))
+
+if __name__ == "__main__":
+    for x in generate_all():
+        print(x)
Index: /proiecte/HadoopA51/src/serial/py/rainbow_config.py
===================================================================
--- /proiecte/HadoopA51/src/serial/py/rainbow_config.py	(revision 166)
+++ /proiecte/HadoopA51/src/serial/py/rainbow_config.py	(revision 166)
@@ -0,0 +1,55 @@
+#!/usr/bin/env python3
+
+N=4
+nr_tables=4
+
+def gen_rainbow_reductors(k):
+    def R1(x):
+        return  x / 10 * 10 + x % 3
+
+    def R2(x):
+        return  x / 10 * 10 % 3 + 3
+
+    def R3(x):
+        return  x / 10 * 10 % 3 + 6
+
+    def R4(x):
+        return  x / 10 * 10 + 9
+
+    Rint = [R1, R2, R3, R4]
+    Rstr = []
+    for rint in Rint:
+        Rstr.append(lambda s : str(int(rint(int(s, 10))) ^ k).zfill(N))
+    return Rstr
+
+
+def hashfn(s):
+    return s[2:] + s[0:2]
+
+
+def chain_end(s, R):
+    for r in R:
+        s = r(hashfn(s))
+    return s
+
+
+def generate_table(f, R):
+    v = []
+    for l in f:
+        v.append([l, chain_end(l, R)])
+    return v
+
+
+def matches(k, v, needle, entry, R):
+    start_string = entry[0]
+    end_string   = entry[1]
+    s = start_string
+    for i in range(0, k):
+        s = R[i](hashfn(s))
+    return hashfn(s) == needle
+
+
+def gen_chain_from(needle, k, R):
+    for i in range(k, len(R) - 1):
+        needle = hashfn(R[i](needle))
+    return R[len(R)-1](needle)
Index: /proiecte/HadoopA51/src/serial/py/run.sh
===================================================================
--- /proiecte/HadoopA51/src/serial/py/run.sh	(revision 166)
+++ /proiecte/HadoopA51/src/serial/py/run.sh	(revision 166)
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+./generate_strings.py | ./serial.py
Index: /proiecte/HadoopA51/src/serial/py/serial.py
===================================================================
--- /proiecte/HadoopA51/src/serial/py/serial.py	(revision 166)
+++ /proiecte/HadoopA51/src/serial/py/serial.py	(revision 166)
@@ -0,0 +1,76 @@
+#!/usr/bin/env python3
+
+import sys
+from rainbow_config import *
+
+
+
+def find_match_in_table(table, needle, R):
+    ret = []
+    for i in range(0, len(R)):
+        end = gen_chain_from(needle, i, R)
+        for entry in table:
+            if entry[1] == end and matches(i, table, needle, entry, R):
+                ret.append([entry[0], i])
+    return ret
+
+
+def mk_array(n, val):
+    a = []
+    for i in range(0, n):
+        a.append(val)
+    return a
+
+
+def find_match(tables, needle, Rarray):
+    matches = []
+    # get matches from all tables
+    for i in range(0, len(Rarray)):
+        m = find_match_in_table(tables[i], needle, Rarray[i])
+        if len(m) == 0:
+            continue
+        matches.append(m)
+    # group matches by found secret value
+    d = dict()
+    for i in range(0, len(matches)):
+        for match in matches[i]:
+            secret = match[0]
+            index  = match[1]
+            if not(secret in d):
+                    d[secret] = mk_array(len(matches), [])
+            d[secret][index].append(i)
+
+    # return the secrets with most matches
+    ret = []
+    for secret in d.keys():
+        if len(d[secret][index]) == len(matches):
+            ret.append(secret)
+    return ret
+
+
+
+if __name__ == "__main__":
+    Rarray = []
+    tables = []
+    lines = []
+    for l in sys.stdin:
+        lines.append(l.strip())
+
+    for i in range(0, nr_tables):
+        R = gen_rainbow_reductors(i)
+        Rarray.append(R)
+        v = generate_table(lines, R)
+        tables.append(v)
+    secret = '1234'
+    chain = []
+    chain.append(secret)
+    for r in Rarray[0]:
+        h = hashfn(secret)
+        secret = r(h)
+        chain.append(h)
+        chain.append(secret)
+    print(chain)
+    print(chain[1], find_match(tables, chain[1], Rarray)) #1st hash
+    print(chain[3], find_match(tables, chain[3], Rarray)) #2nd hash
+
+
