overhaul argv parsing & embed wordlist in executable

This commit is contained in:
Mans Ziesel 2024-04-28 17:07:47 +02:00
parent 7ca991af07
commit 8a727a6ed4
5 changed files with 5937 additions and 7798 deletions

View File

@ -9,10 +9,12 @@ ifeq ($(OS),Windows_NT)
CC = x86_64-w64-mingw32-g++
LD = x86_64-w64-mingw32-g++
EXE_EXT = .exe
INSTALL_DIR = /usr/local/bin # Change this to your desired installation directory
else
CC = g++
LD = g++
EXE_EXT =
INSTALL_DIR = /usr/local/bin # Change this to your desired installation directory
endif
all: $(TARGETS)$(EXE_EXT)
@ -32,3 +34,12 @@ passgen: passgen.o
passgen.o: passgen.cpp ./include/pcg_random.hpp \
./include/pcg_extras.hpp ./include/pcg_uint128.hpp
$(CC) $(CPPFLAGS) $(CXXFLAGS) -c -o passgen.o passgen.cpp
install: $(TARGETS)$(EXE_EXT)
@mkdir -p $(INSTALL_DIR)
cp $(TARGETS)$(EXE_EXT) $(INSTALL_DIR)
@echo "Installed $(TARGETS)$(EXE_EXT) to $(INSTALL_DIR)"
uninstall:
rm -f $(INSTALL_DIR)/$(TARGETS)$(EXE_EXT)
@echo "Uninstalled $(TARGETS)$(EXE_EXT) from $(INSTALL_DIR)"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,602 @@
unsigned char eff_short_wordlist_1_txt[] = {
0x61, 0x63, 0x69, 0x64, 0x0a, 0x61, 0x63, 0x6f, 0x72, 0x6e, 0x0a, 0x61,
0x63, 0x72, 0x65, 0x0a, 0x61, 0x63, 0x74, 0x73, 0x0a, 0x61, 0x66, 0x61,
0x72, 0x0a, 0x61, 0x66, 0x66, 0x69, 0x78, 0x0a, 0x61, 0x67, 0x65, 0x64,
0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x0a, 0x61, 0x67, 0x69, 0x6c, 0x65,
0x0a, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x0a, 0x61, 0x67, 0x6f, 0x6e, 0x79,
0x0a, 0x61, 0x68, 0x65, 0x61, 0x64, 0x0a, 0x61, 0x69, 0x64, 0x65, 0x0a,
0x61, 0x69, 0x64, 0x73, 0x0a, 0x61, 0x69, 0x6d, 0x0a, 0x61, 0x6a, 0x61,
0x72, 0x0a, 0x61, 0x6c, 0x61, 0x72, 0x6d, 0x0a, 0x61, 0x6c, 0x69, 0x61,
0x73, 0x0a, 0x61, 0x6c, 0x69, 0x62, 0x69, 0x0a, 0x61, 0x6c, 0x69, 0x65,
0x6e, 0x0a, 0x61, 0x6c, 0x69, 0x6b, 0x65, 0x0a, 0x61, 0x6c, 0x69, 0x76,
0x65, 0x0a, 0x61, 0x6c, 0x6f, 0x65, 0x0a, 0x61, 0x6c, 0x6f, 0x66, 0x74,
0x0a, 0x61, 0x6c, 0x6f, 0x68, 0x61, 0x0a, 0x61, 0x6c, 0x6f, 0x6e, 0x65,
0x0a, 0x61, 0x6d, 0x65, 0x6e, 0x64, 0x0a, 0x61, 0x6d, 0x69, 0x6e, 0x6f,
0x0a, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x0a, 0x61, 0x6d, 0x75, 0x73, 0x65,
0x0a, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x0a, 0x61, 0x6e, 0x67, 0x65, 0x72,
0x0a, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x0a, 0x61, 0x6e, 0x6b, 0x6c, 0x65,
0x0a, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x0a, 0x61, 0x70, 0x72, 0x69, 0x6c,
0x0a, 0x61, 0x70, 0x72, 0x6f, 0x6e, 0x0a, 0x61, 0x71, 0x75, 0x61, 0x0a,
0x61, 0x72, 0x65, 0x61, 0x0a, 0x61, 0x72, 0x65, 0x6e, 0x61, 0x0a, 0x61,
0x72, 0x67, 0x75, 0x65, 0x0a, 0x61, 0x72, 0x69, 0x73, 0x65, 0x0a, 0x61,
0x72, 0x6d, 0x65, 0x64, 0x0a, 0x61, 0x72, 0x6d, 0x6f, 0x72, 0x0a, 0x61,
0x72, 0x6d, 0x79, 0x0a, 0x61, 0x72, 0x6f, 0x6d, 0x61, 0x0a, 0x61, 0x72,
0x72, 0x61, 0x79, 0x0a, 0x61, 0x72, 0x73, 0x6f, 0x6e, 0x0a, 0x61, 0x72,
0x74, 0x0a, 0x61, 0x73, 0x68, 0x65, 0x6e, 0x0a, 0x61, 0x73, 0x68, 0x65,
0x73, 0x0a, 0x61, 0x74, 0x6c, 0x61, 0x73, 0x0a, 0x61, 0x74, 0x6f, 0x6d,
0x0a, 0x61, 0x74, 0x74, 0x69, 0x63, 0x0a, 0x61, 0x75, 0x64, 0x69, 0x6f,
0x0a, 0x61, 0x76, 0x65, 0x72, 0x74, 0x0a, 0x61, 0x76, 0x6f, 0x69, 0x64,
0x0a, 0x61, 0x77, 0x61, 0x6b, 0x65, 0x0a, 0x61, 0x77, 0x61, 0x72, 0x64,
0x0a, 0x61, 0x77, 0x6f, 0x6b, 0x65, 0x0a, 0x61, 0x78, 0x69, 0x73, 0x0a,
0x62, 0x61, 0x63, 0x6f, 0x6e, 0x0a, 0x62, 0x61, 0x64, 0x67, 0x65, 0x0a,
0x62, 0x61, 0x67, 0x65, 0x6c, 0x0a, 0x62, 0x61, 0x67, 0x67, 0x79, 0x0a,
0x62, 0x61, 0x6b, 0x65, 0x64, 0x0a, 0x62, 0x61, 0x6b, 0x65, 0x72, 0x0a,
0x62, 0x61, 0x6c, 0x6d, 0x79, 0x0a, 0x62, 0x61, 0x6e, 0x6a, 0x6f, 0x0a,
0x62, 0x61, 0x72, 0x67, 0x65, 0x0a, 0x62, 0x61, 0x72, 0x6e, 0x0a, 0x62,
0x61, 0x73, 0x68, 0x0a, 0x62, 0x61, 0x73, 0x69, 0x6c, 0x0a, 0x62, 0x61,
0x73, 0x6b, 0x0a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x0a, 0x62, 0x61, 0x74,
0x68, 0x0a, 0x62, 0x61, 0x74, 0x6f, 0x6e, 0x0a, 0x62, 0x61, 0x74, 0x73,
0x0a, 0x62, 0x6c, 0x61, 0x64, 0x65, 0x0a, 0x62, 0x6c, 0x61, 0x6e, 0x6b,
0x0a, 0x62, 0x6c, 0x61, 0x73, 0x74, 0x0a, 0x62, 0x6c, 0x61, 0x7a, 0x65,
0x0a, 0x62, 0x6c, 0x65, 0x61, 0x6b, 0x0a, 0x62, 0x6c, 0x65, 0x6e, 0x64,
0x0a, 0x62, 0x6c, 0x65, 0x73, 0x73, 0x0a, 0x62, 0x6c, 0x69, 0x6d, 0x70,
0x0a, 0x62, 0x6c, 0x69, 0x6e, 0x6b, 0x0a, 0x62, 0x6c, 0x6f, 0x61, 0x74,
0x0a, 0x62, 0x6c, 0x6f, 0x62, 0x0a, 0x62, 0x6c, 0x6f, 0x67, 0x0a, 0x62,
0x6c, 0x6f, 0x74, 0x0a, 0x62, 0x6c, 0x75, 0x6e, 0x74, 0x0a, 0x62, 0x6c,
0x75, 0x72, 0x74, 0x0a, 0x62, 0x6c, 0x75, 0x73, 0x68, 0x0a, 0x62, 0x6f,
0x61, 0x73, 0x74, 0x0a, 0x62, 0x6f, 0x61, 0x74, 0x0a, 0x62, 0x6f, 0x64,
0x79, 0x0a, 0x62, 0x6f, 0x69, 0x6c, 0x0a, 0x62, 0x6f, 0x6b, 0x0a, 0x62,
0x6f, 0x6c, 0x74, 0x0a, 0x62, 0x6f, 0x6e, 0x65, 0x64, 0x0a, 0x62, 0x6f,
0x6e, 0x65, 0x79, 0x0a, 0x62, 0x6f, 0x6e, 0x75, 0x73, 0x0a, 0x62, 0x6f,
0x6e, 0x79, 0x0a, 0x62, 0x6f, 0x6f, 0x6b, 0x0a, 0x62, 0x6f, 0x6f, 0x74,
0x68, 0x0a, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x0a, 0x62, 0x6f, 0x73, 0x73,
0x0a, 0x62, 0x6f, 0x74, 0x63, 0x68, 0x0a, 0x62, 0x6f, 0x74, 0x68, 0x0a,
0x62, 0x6f, 0x78, 0x65, 0x72, 0x0a, 0x62, 0x72, 0x65, 0x65, 0x64, 0x0a,
0x62, 0x72, 0x69, 0x62, 0x65, 0x0a, 0x62, 0x72, 0x69, 0x63, 0x6b, 0x0a,
0x62, 0x72, 0x69, 0x64, 0x65, 0x0a, 0x62, 0x72, 0x69, 0x6d, 0x0a, 0x62,
0x72, 0x69, 0x6e, 0x67, 0x0a, 0x62, 0x72, 0x69, 0x6e, 0x6b, 0x0a, 0x62,
0x72, 0x69, 0x73, 0x6b, 0x0a, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x0a, 0x62,
0x72, 0x6f, 0x69, 0x6c, 0x0a, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x0a, 0x62,
0x72, 0x6f, 0x6f, 0x6b, 0x0a, 0x62, 0x72, 0x6f, 0x6f, 0x6d, 0x0a, 0x62,
0x72, 0x75, 0x73, 0x68, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x0a, 0x62, 0x75,
0x64, 0x0a, 0x62, 0x75, 0x67, 0x67, 0x79, 0x0a, 0x62, 0x75, 0x6c, 0x67,
0x65, 0x0a, 0x62, 0x75, 0x6c, 0x6b, 0x0a, 0x62, 0x75, 0x6c, 0x6c, 0x79,
0x0a, 0x62, 0x75, 0x6e, 0x63, 0x68, 0x0a, 0x62, 0x75, 0x6e, 0x6e, 0x79,
0x0a, 0x62, 0x75, 0x6e, 0x74, 0x0a, 0x62, 0x75, 0x73, 0x68, 0x0a, 0x62,
0x75, 0x73, 0x74, 0x0a, 0x62, 0x75, 0x73, 0x79, 0x0a, 0x62, 0x75, 0x7a,
0x7a, 0x0a, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x63, 0x61, 0x63, 0x68,
0x65, 0x0a, 0x63, 0x61, 0x64, 0x65, 0x74, 0x0a, 0x63, 0x61, 0x67, 0x65,
0x0a, 0x63, 0x61, 0x6b, 0x65, 0x0a, 0x63, 0x61, 0x6c, 0x6d, 0x0a, 0x63,
0x61, 0x6d, 0x65, 0x6f, 0x0a, 0x63, 0x61, 0x6e, 0x61, 0x6c, 0x0a, 0x63,
0x61, 0x6e, 0x64, 0x79, 0x0a, 0x63, 0x61, 0x6e, 0x65, 0x0a, 0x63, 0x61,
0x6e, 0x6f, 0x6e, 0x0a, 0x63, 0x61, 0x70, 0x65, 0x0a, 0x63, 0x61, 0x72,
0x64, 0x0a, 0x63, 0x61, 0x72, 0x67, 0x6f, 0x0a, 0x63, 0x61, 0x72, 0x6f,
0x6c, 0x0a, 0x63, 0x61, 0x72, 0x72, 0x79, 0x0a, 0x63, 0x61, 0x72, 0x76,
0x65, 0x0a, 0x63, 0x61, 0x73, 0x65, 0x0a, 0x63, 0x61, 0x73, 0x68, 0x0a,
0x63, 0x61, 0x75, 0x73, 0x65, 0x0a, 0x63, 0x65, 0x64, 0x61, 0x72, 0x0a,
0x63, 0x68, 0x61, 0x69, 0x6e, 0x0a, 0x63, 0x68, 0x61, 0x69, 0x72, 0x0a,
0x63, 0x68, 0x61, 0x6e, 0x74, 0x0a, 0x63, 0x68, 0x61, 0x6f, 0x73, 0x0a,
0x63, 0x68, 0x61, 0x72, 0x6d, 0x0a, 0x63, 0x68, 0x61, 0x73, 0x65, 0x0a,
0x63, 0x68, 0x65, 0x65, 0x6b, 0x0a, 0x63, 0x68, 0x65, 0x65, 0x72, 0x0a,
0x63, 0x68, 0x65, 0x66, 0x0a, 0x63, 0x68, 0x65, 0x73, 0x73, 0x0a, 0x63,
0x68, 0x65, 0x73, 0x74, 0x0a, 0x63, 0x68, 0x65, 0x77, 0x0a, 0x63, 0x68,
0x69, 0x65, 0x66, 0x0a, 0x63, 0x68, 0x69, 0x6c, 0x69, 0x0a, 0x63, 0x68,
0x69, 0x6c, 0x6c, 0x0a, 0x63, 0x68, 0x69, 0x70, 0x0a, 0x63, 0x68, 0x6f,
0x6d, 0x70, 0x0a, 0x63, 0x68, 0x6f, 0x70, 0x0a, 0x63, 0x68, 0x6f, 0x77,
0x0a, 0x63, 0x68, 0x75, 0x63, 0x6b, 0x0a, 0x63, 0x68, 0x75, 0x6d, 0x70,
0x0a, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x0a, 0x63, 0x68, 0x75, 0x72, 0x6e,
0x0a, 0x63, 0x68, 0x75, 0x74, 0x65, 0x0a, 0x63, 0x69, 0x64, 0x65, 0x72,
0x0a, 0x63, 0x69, 0x6e, 0x63, 0x68, 0x0a, 0x63, 0x69, 0x74, 0x79, 0x0a,
0x63, 0x69, 0x76, 0x69, 0x63, 0x0a, 0x63, 0x69, 0x76, 0x69, 0x6c, 0x0a,
0x63, 0x6c, 0x61, 0x64, 0x0a, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x0a, 0x63,
0x6c, 0x61, 0x6d, 0x70, 0x0a, 0x63, 0x6c, 0x61, 0x70, 0x0a, 0x63, 0x6c,
0x61, 0x73, 0x68, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x70, 0x0a, 0x63, 0x6c,
0x61, 0x73, 0x73, 0x0a, 0x63, 0x6c, 0x61, 0x77, 0x0a, 0x63, 0x6c, 0x61,
0x79, 0x0a, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x0a, 0x63, 0x6c, 0x65, 0x61,
0x72, 0x0a, 0x63, 0x6c, 0x65, 0x61, 0x74, 0x0a, 0x63, 0x6c, 0x65, 0x66,
0x74, 0x0a, 0x63, 0x6c, 0x65, 0x72, 0x6b, 0x0a, 0x63, 0x6c, 0x69, 0x63,
0x6b, 0x0a, 0x63, 0x6c, 0x69, 0x6e, 0x67, 0x0a, 0x63, 0x6c, 0x69, 0x6e,
0x6b, 0x0a, 0x63, 0x6c, 0x69, 0x70, 0x0a, 0x63, 0x6c, 0x6f, 0x61, 0x6b,
0x0a, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x0a, 0x63, 0x6c, 0x6f, 0x6e, 0x65,
0x0a, 0x63, 0x6c, 0x6f, 0x74, 0x68, 0x0a, 0x63, 0x6c, 0x6f, 0x75, 0x64,
0x0a, 0x63, 0x6c, 0x75, 0x6d, 0x70, 0x0a, 0x63, 0x6f, 0x61, 0x63, 0x68,
0x0a, 0x63, 0x6f, 0x61, 0x73, 0x74, 0x0a, 0x63, 0x6f, 0x61, 0x74, 0x0a,
0x63, 0x6f, 0x64, 0x0a, 0x63, 0x6f, 0x69, 0x6c, 0x0a, 0x63, 0x6f, 0x6b,
0x65, 0x0a, 0x63, 0x6f, 0x6c, 0x61, 0x0a, 0x63, 0x6f, 0x6c, 0x64, 0x0a,
0x63, 0x6f, 0x6c, 0x74, 0x0a, 0x63, 0x6f, 0x6d, 0x61, 0x0a, 0x63, 0x6f,
0x6d, 0x65, 0x0a, 0x63, 0x6f, 0x6d, 0x69, 0x63, 0x0a, 0x63, 0x6f, 0x6d,
0x6d, 0x61, 0x0a, 0x63, 0x6f, 0x6e, 0x65, 0x0a, 0x63, 0x6f, 0x70, 0x65,
0x0a, 0x63, 0x6f, 0x70, 0x79, 0x0a, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x0a,
0x63, 0x6f, 0x72, 0x6b, 0x0a, 0x63, 0x6f, 0x73, 0x74, 0x0a, 0x63, 0x6f,
0x74, 0x0a, 0x63, 0x6f, 0x75, 0x63, 0x68, 0x0a, 0x63, 0x6f, 0x75, 0x67,
0x68, 0x0a, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x0a, 0x63, 0x6f, 0x7a, 0x79,
0x0a, 0x63, 0x72, 0x61, 0x66, 0x74, 0x0a, 0x63, 0x72, 0x61, 0x6d, 0x70,
0x0a, 0x63, 0x72, 0x61, 0x6e, 0x65, 0x0a, 0x63, 0x72, 0x61, 0x6e, 0x6b,
0x0a, 0x63, 0x72, 0x61, 0x74, 0x65, 0x0a, 0x63, 0x72, 0x61, 0x76, 0x65,
0x0a, 0x63, 0x72, 0x61, 0x77, 0x6c, 0x0a, 0x63, 0x72, 0x61, 0x7a, 0x79,
0x0a, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x0a, 0x63, 0x72, 0x65, 0x70, 0x65,
0x0a, 0x63, 0x72, 0x65, 0x70, 0x74, 0x0a, 0x63, 0x72, 0x69, 0x62, 0x0a,
0x63, 0x72, 0x69, 0x65, 0x64, 0x0a, 0x63, 0x72, 0x69, 0x73, 0x70, 0x0a,
0x63, 0x72, 0x6f, 0x6f, 0x6b, 0x0a, 0x63, 0x72, 0x6f, 0x70, 0x0a, 0x63,
0x72, 0x6f, 0x73, 0x73, 0x0a, 0x63, 0x72, 0x6f, 0x77, 0x64, 0x0a, 0x63,
0x72, 0x6f, 0x77, 0x6e, 0x0a, 0x63, 0x72, 0x75, 0x6d, 0x62, 0x0a, 0x63,
0x72, 0x75, 0x73, 0x68, 0x0a, 0x63, 0x72, 0x75, 0x73, 0x74, 0x0a, 0x63,
0x75, 0x62, 0x0a, 0x63, 0x75, 0x6c, 0x74, 0x0a, 0x63, 0x75, 0x70, 0x69,
0x64, 0x0a, 0x63, 0x75, 0x72, 0x65, 0x0a, 0x63, 0x75, 0x72, 0x6c, 0x0a,
0x63, 0x75, 0x72, 0x72, 0x79, 0x0a, 0x63, 0x75, 0x72, 0x73, 0x65, 0x0a,
0x63, 0x75, 0x72, 0x76, 0x65, 0x0a, 0x63, 0x75, 0x72, 0x76, 0x79, 0x0a,
0x63, 0x75, 0x73, 0x68, 0x79, 0x0a, 0x63, 0x75, 0x74, 0x0a, 0x63, 0x79,
0x63, 0x6c, 0x65, 0x0a, 0x64, 0x61, 0x62, 0x0a, 0x64, 0x61, 0x64, 0x0a,
0x64, 0x61, 0x69, 0x6c, 0x79, 0x0a, 0x64, 0x61, 0x69, 0x72, 0x79, 0x0a,
0x64, 0x61, 0x69, 0x73, 0x79, 0x0a, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x0a,
0x64, 0x61, 0x6e, 0x64, 0x79, 0x0a, 0x64, 0x61, 0x72, 0x6e, 0x0a, 0x64,
0x61, 0x72, 0x74, 0x0a, 0x64, 0x61, 0x73, 0x68, 0x0a, 0x64, 0x61, 0x74,
0x61, 0x0a, 0x64, 0x61, 0x74, 0x65, 0x0a, 0x64, 0x61, 0x77, 0x6e, 0x0a,
0x64, 0x65, 0x61, 0x66, 0x0a, 0x64, 0x65, 0x61, 0x6c, 0x0a, 0x64, 0x65,
0x61, 0x6e, 0x0a, 0x64, 0x65, 0x62, 0x69, 0x74, 0x0a, 0x64, 0x65, 0x62,
0x74, 0x0a, 0x64, 0x65, 0x62, 0x75, 0x67, 0x0a, 0x64, 0x65, 0x63, 0x61,
0x66, 0x0a, 0x64, 0x65, 0x63, 0x61, 0x6c, 0x0a, 0x64, 0x65, 0x63, 0x61,
0x79, 0x0a, 0x64, 0x65, 0x63, 0x6b, 0x0a, 0x64, 0x65, 0x63, 0x6f, 0x72,
0x0a, 0x64, 0x65, 0x63, 0x6f, 0x79, 0x0a, 0x64, 0x65, 0x65, 0x64, 0x0a,
0x64, 0x65, 0x6c, 0x61, 0x79, 0x0a, 0x64, 0x65, 0x6e, 0x69, 0x6d, 0x0a,
0x64, 0x65, 0x6e, 0x73, 0x65, 0x0a, 0x64, 0x65, 0x6e, 0x74, 0x0a, 0x64,
0x65, 0x70, 0x74, 0x68, 0x0a, 0x64, 0x65, 0x72, 0x62, 0x79, 0x0a, 0x64,
0x65, 0x73, 0x6b, 0x0a, 0x64, 0x69, 0x61, 0x6c, 0x0a, 0x64, 0x69, 0x61,
0x72, 0x79, 0x0a, 0x64, 0x69, 0x63, 0x65, 0x0a, 0x64, 0x69, 0x67, 0x0a,
0x64, 0x69, 0x6c, 0x6c, 0x0a, 0x64, 0x69, 0x6d, 0x65, 0x0a, 0x64, 0x69,
0x6d, 0x6c, 0x79, 0x0a, 0x64, 0x69, 0x6e, 0x65, 0x72, 0x0a, 0x64, 0x69,
0x6e, 0x67, 0x79, 0x0a, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x0a, 0x64, 0x69,
0x73, 0x68, 0x0a, 0x64, 0x69, 0x73, 0x6b, 0x0a, 0x64, 0x69, 0x74, 0x63,
0x68, 0x0a, 0x64, 0x69, 0x74, 0x7a, 0x79, 0x0a, 0x64, 0x69, 0x7a, 0x7a,
0x79, 0x0a, 0x64, 0x6f, 0x63, 0x6b, 0x0a, 0x64, 0x6f, 0x64, 0x67, 0x65,
0x0a, 0x64, 0x6f, 0x69, 0x6e, 0x67, 0x0a, 0x64, 0x6f, 0x6c, 0x6c, 0x0a,
0x64, 0x6f, 0x6d, 0x65, 0x0a, 0x64, 0x6f, 0x6e, 0x6f, 0x72, 0x0a, 0x64,
0x6f, 0x6e, 0x75, 0x74, 0x0a, 0x64, 0x6f, 0x73, 0x65, 0x0a, 0x64, 0x6f,
0x74, 0x0a, 0x64, 0x6f, 0x76, 0x65, 0x0a, 0x64, 0x6f, 0x77, 0x6e, 0x0a,
0x64, 0x6f, 0x77, 0x72, 0x79, 0x0a, 0x64, 0x6f, 0x7a, 0x65, 0x0a, 0x64,
0x72, 0x61, 0x62, 0x0a, 0x64, 0x72, 0x61, 0x6d, 0x61, 0x0a, 0x64, 0x72,
0x61, 0x6e, 0x6b, 0x0a, 0x64, 0x72, 0x61, 0x77, 0x0a, 0x64, 0x72, 0x65,
0x73, 0x73, 0x0a, 0x64, 0x72, 0x69, 0x65, 0x64, 0x0a, 0x64, 0x72, 0x69,
0x66, 0x74, 0x0a, 0x64, 0x72, 0x69, 0x6c, 0x6c, 0x0a, 0x64, 0x72, 0x69,
0x76, 0x65, 0x0a, 0x64, 0x72, 0x6f, 0x6e, 0x65, 0x0a, 0x64, 0x72, 0x6f,
0x6f, 0x70, 0x0a, 0x64, 0x72, 0x6f, 0x76, 0x65, 0x0a, 0x64, 0x72, 0x6f,
0x77, 0x6e, 0x0a, 0x64, 0x72, 0x75, 0x6d, 0x0a, 0x64, 0x72, 0x79, 0x0a,
0x64, 0x75, 0x63, 0x6b, 0x0a, 0x64, 0x75, 0x63, 0x74, 0x0a, 0x64, 0x75,
0x64, 0x65, 0x0a, 0x64, 0x75, 0x67, 0x0a, 0x64, 0x75, 0x6b, 0x65, 0x0a,
0x64, 0x75, 0x6f, 0x0a, 0x64, 0x75, 0x73, 0x6b, 0x0a, 0x64, 0x75, 0x73,
0x74, 0x0a, 0x64, 0x75, 0x74, 0x79, 0x0a, 0x64, 0x77, 0x61, 0x72, 0x66,
0x0a, 0x64, 0x77, 0x65, 0x6c, 0x6c, 0x0a, 0x65, 0x61, 0x67, 0x6c, 0x65,
0x0a, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x0a, 0x65, 0x61, 0x72, 0x74, 0x68,
0x0a, 0x65, 0x61, 0x73, 0x65, 0x6c, 0x0a, 0x65, 0x61, 0x73, 0x74, 0x0a,
0x65, 0x61, 0x74, 0x65, 0x6e, 0x0a, 0x65, 0x61, 0x74, 0x73, 0x0a, 0x65,
0x62, 0x61, 0x79, 0x0a, 0x65, 0x62, 0x6f, 0x6e, 0x79, 0x0a, 0x65, 0x62,
0x6f, 0x6f, 0x6b, 0x0a, 0x65, 0x63, 0x68, 0x6f, 0x0a, 0x65, 0x64, 0x67,
0x65, 0x0a, 0x65, 0x65, 0x6c, 0x0a, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x0a,
0x65, 0x6c, 0x62, 0x6f, 0x77, 0x0a, 0x65, 0x6c, 0x64, 0x65, 0x72, 0x0a,
0x65, 0x6c, 0x66, 0x0a, 0x65, 0x6c, 0x6b, 0x0a, 0x65, 0x6c, 0x6d, 0x0a,
0x65, 0x6c, 0x6f, 0x70, 0x65, 0x0a, 0x65, 0x6c, 0x75, 0x64, 0x65, 0x0a,
0x65, 0x6c, 0x76, 0x65, 0x73, 0x0a, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x0a,
0x65, 0x6d, 0x69, 0x74, 0x0a, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x0a, 0x65,
0x6d, 0x75, 0x0a, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x0a, 0x65, 0x6e, 0x74,
0x72, 0x79, 0x0a, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x0a, 0x65, 0x71, 0x75,
0x61, 0x6c, 0x0a, 0x65, 0x72, 0x61, 0x73, 0x65, 0x0a, 0x65, 0x72, 0x72,
0x6f, 0x72, 0x0a, 0x65, 0x72, 0x75, 0x70, 0x74, 0x0a, 0x65, 0x73, 0x73,
0x61, 0x79, 0x0a, 0x65, 0x74, 0x63, 0x68, 0x0a, 0x65, 0x76, 0x61, 0x64,
0x65, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x0a, 0x65, 0x76, 0x69, 0x63, 0x74,
0x0a, 0x65, 0x76, 0x69, 0x6c, 0x0a, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x0a,
0x65, 0x78, 0x61, 0x63, 0x74, 0x0a, 0x65, 0x78, 0x69, 0x74, 0x0a, 0x66,
0x61, 0x62, 0x6c, 0x65, 0x0a, 0x66, 0x61, 0x63, 0x65, 0x64, 0x0a, 0x66,
0x61, 0x63, 0x74, 0x0a, 0x66, 0x61, 0x64, 0x65, 0x0a, 0x66, 0x61, 0x6c,
0x6c, 0x0a, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x66, 0x61, 0x6e, 0x63,
0x79, 0x0a, 0x66, 0x61, 0x6e, 0x67, 0x0a, 0x66, 0x61, 0x78, 0x0a, 0x66,
0x65, 0x61, 0x73, 0x74, 0x0a, 0x66, 0x65, 0x65, 0x64, 0x0a, 0x66, 0x65,
0x6d, 0x75, 0x72, 0x0a, 0x66, 0x65, 0x6e, 0x63, 0x65, 0x0a, 0x66, 0x65,
0x6e, 0x64, 0x0a, 0x66, 0x65, 0x72, 0x72, 0x79, 0x0a, 0x66, 0x65, 0x74,
0x61, 0x6c, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x0a, 0x66, 0x65, 0x76,
0x65, 0x72, 0x0a, 0x66, 0x69, 0x62, 0x65, 0x72, 0x0a, 0x66, 0x69, 0x66,
0x74, 0x68, 0x0a, 0x66, 0x69, 0x66, 0x74, 0x79, 0x0a, 0x66, 0x69, 0x6c,
0x6d, 0x0a, 0x66, 0x69, 0x6c, 0x74, 0x68, 0x0a, 0x66, 0x69, 0x6e, 0x61,
0x6c, 0x0a, 0x66, 0x69, 0x6e, 0x63, 0x68, 0x0a, 0x66, 0x69, 0x74, 0x0a,
0x66, 0x69, 0x76, 0x65, 0x0a, 0x66, 0x6c, 0x61, 0x67, 0x0a, 0x66, 0x6c,
0x61, 0x6b, 0x79, 0x0a, 0x66, 0x6c, 0x61, 0x6d, 0x65, 0x0a, 0x66, 0x6c,
0x61, 0x70, 0x0a, 0x66, 0x6c, 0x61, 0x73, 0x6b, 0x0a, 0x66, 0x6c, 0x65,
0x64, 0x0a, 0x66, 0x6c, 0x69, 0x63, 0x6b, 0x0a, 0x66, 0x6c, 0x69, 0x6e,
0x67, 0x0a, 0x66, 0x6c, 0x69, 0x6e, 0x74, 0x0a, 0x66, 0x6c, 0x69, 0x70,
0x0a, 0x66, 0x6c, 0x69, 0x72, 0x74, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74,
0x0a, 0x66, 0x6c, 0x6f, 0x63, 0x6b, 0x0a, 0x66, 0x6c, 0x6f, 0x70, 0x0a,
0x66, 0x6c, 0x6f, 0x73, 0x73, 0x0a, 0x66, 0x6c, 0x79, 0x65, 0x72, 0x0a,
0x66, 0x6f, 0x61, 0x6d, 0x0a, 0x66, 0x6f, 0x65, 0x0a, 0x66, 0x6f, 0x67,
0x0a, 0x66, 0x6f, 0x69, 0x6c, 0x0a, 0x66, 0x6f, 0x6c, 0x69, 0x63, 0x0a,
0x66, 0x6f, 0x6c, 0x6b, 0x0a, 0x66, 0x6f, 0x6f, 0x64, 0x0a, 0x66, 0x6f,
0x6f, 0x6c, 0x0a, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x0a, 0x66, 0x6f, 0x78,
0x0a, 0x66, 0x6f, 0x79, 0x65, 0x72, 0x0a, 0x66, 0x72, 0x61, 0x69, 0x6c,
0x0a, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x0a, 0x66, 0x72, 0x61, 0x79, 0x0a,
0x66, 0x72, 0x65, 0x73, 0x68, 0x0a, 0x66, 0x72, 0x69, 0x65, 0x64, 0x0a,
0x66, 0x72, 0x69, 0x6c, 0x6c, 0x0a, 0x66, 0x72, 0x69, 0x73, 0x6b, 0x0a,
0x66, 0x72, 0x6f, 0x6d, 0x0a, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x0a, 0x66,
0x72, 0x6f, 0x73, 0x74, 0x0a, 0x66, 0x72, 0x6f, 0x74, 0x68, 0x0a, 0x66,
0x72, 0x6f, 0x77, 0x6e, 0x0a, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x0a, 0x66,
0x72, 0x75, 0x69, 0x74, 0x0a, 0x67, 0x61, 0x67, 0x0a, 0x67, 0x61, 0x69,
0x6e, 0x73, 0x0a, 0x67, 0x61, 0x6c, 0x61, 0x0a, 0x67, 0x61, 0x6d, 0x65,
0x0a, 0x67, 0x61, 0x70, 0x0a, 0x67, 0x61, 0x73, 0x0a, 0x67, 0x61, 0x76,
0x65, 0x0a, 0x67, 0x65, 0x61, 0x72, 0x0a, 0x67, 0x65, 0x63, 0x6b, 0x6f,
0x0a, 0x67, 0x65, 0x65, 0x6b, 0x0a, 0x67, 0x65, 0x6d, 0x0a, 0x67, 0x65,
0x6e, 0x72, 0x65, 0x0a, 0x67, 0x69, 0x66, 0x74, 0x0a, 0x67, 0x69, 0x67,
0x0a, 0x67, 0x69, 0x6c, 0x6c, 0x73, 0x0a, 0x67, 0x69, 0x76, 0x65, 0x6e,
0x0a, 0x67, 0x69, 0x76, 0x65, 0x72, 0x0a, 0x67, 0x6c, 0x61, 0x64, 0x0a,
0x67, 0x6c, 0x61, 0x73, 0x73, 0x0a, 0x67, 0x6c, 0x69, 0x64, 0x65, 0x0a,
0x67, 0x6c, 0x6f, 0x73, 0x73, 0x0a, 0x67, 0x6c, 0x6f, 0x76, 0x65, 0x0a,
0x67, 0x6c, 0x6f, 0x77, 0x0a, 0x67, 0x6c, 0x75, 0x65, 0x0a, 0x67, 0x6f,
0x61, 0x6c, 0x0a, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x0a, 0x67, 0x6f, 0x6c,
0x66, 0x0a, 0x67, 0x6f, 0x6e, 0x67, 0x0a, 0x67, 0x6f, 0x6f, 0x64, 0x0a,
0x67, 0x6f, 0x6f, 0x65, 0x79, 0x0a, 0x67, 0x6f, 0x6f, 0x66, 0x79, 0x0a,
0x67, 0x6f, 0x72, 0x65, 0x0a, 0x67, 0x6f, 0x77, 0x6e, 0x0a, 0x67, 0x72,
0x61, 0x62, 0x0a, 0x67, 0x72, 0x61, 0x69, 0x6e, 0x0a, 0x67, 0x72, 0x61,
0x6e, 0x74, 0x0a, 0x67, 0x72, 0x61, 0x70, 0x65, 0x0a, 0x67, 0x72, 0x61,
0x70, 0x68, 0x0a, 0x67, 0x72, 0x61, 0x73, 0x70, 0x0a, 0x67, 0x72, 0x61,
0x73, 0x73, 0x0a, 0x67, 0x72, 0x61, 0x76, 0x65, 0x0a, 0x67, 0x72, 0x61,
0x76, 0x79, 0x0a, 0x67, 0x72, 0x61, 0x79, 0x0a, 0x67, 0x72, 0x65, 0x65,
0x6e, 0x0a, 0x67, 0x72, 0x65, 0x65, 0x74, 0x0a, 0x67, 0x72, 0x65, 0x77,
0x0a, 0x67, 0x72, 0x69, 0x64, 0x0a, 0x67, 0x72, 0x69, 0x65, 0x66, 0x0a,
0x67, 0x72, 0x69, 0x6c, 0x6c, 0x0a, 0x67, 0x72, 0x69, 0x70, 0x0a, 0x67,
0x72, 0x69, 0x74, 0x0a, 0x67, 0x72, 0x6f, 0x6f, 0x6d, 0x0a, 0x67, 0x72,
0x6f, 0x70, 0x65, 0x0a, 0x67, 0x72, 0x6f, 0x77, 0x6c, 0x0a, 0x67, 0x72,
0x75, 0x62, 0x0a, 0x67, 0x72, 0x75, 0x6e, 0x74, 0x0a, 0x67, 0x75, 0x69,
0x64, 0x65, 0x0a, 0x67, 0x75, 0x6c, 0x66, 0x0a, 0x67, 0x75, 0x6c, 0x70,
0x0a, 0x67, 0x75, 0x6d, 0x6d, 0x79, 0x0a, 0x67, 0x75, 0x72, 0x75, 0x0a,
0x67, 0x75, 0x73, 0x68, 0x0a, 0x67, 0x75, 0x74, 0x0a, 0x67, 0x75, 0x79,
0x0a, 0x68, 0x61, 0x62, 0x69, 0x74, 0x0a, 0x68, 0x61, 0x6c, 0x66, 0x0a,
0x68, 0x61, 0x6c, 0x6f, 0x0a, 0x68, 0x61, 0x6c, 0x74, 0x0a, 0x68, 0x61,
0x70, 0x70, 0x79, 0x0a, 0x68, 0x61, 0x72, 0x6d, 0x0a, 0x68, 0x61, 0x73,
0x68, 0x0a, 0x68, 0x61, 0x73, 0x74, 0x79, 0x0a, 0x68, 0x61, 0x74, 0x63,
0x68, 0x0a, 0x68, 0x61, 0x74, 0x65, 0x0a, 0x68, 0x61, 0x76, 0x65, 0x6e,
0x0a, 0x68, 0x61, 0x7a, 0x65, 0x6c, 0x0a, 0x68, 0x61, 0x7a, 0x79, 0x0a,
0x68, 0x65, 0x61, 0x70, 0x0a, 0x68, 0x65, 0x61, 0x74, 0x0a, 0x68, 0x65,
0x61, 0x76, 0x65, 0x0a, 0x68, 0x65, 0x64, 0x67, 0x65, 0x0a, 0x68, 0x65,
0x66, 0x74, 0x79, 0x0a, 0x68, 0x65, 0x6c, 0x70, 0x0a, 0x68, 0x65, 0x72,
0x62, 0x73, 0x0a, 0x68, 0x65, 0x72, 0x73, 0x0a, 0x68, 0x75, 0x62, 0x0a,
0x68, 0x75, 0x67, 0x0a, 0x68, 0x75, 0x6c, 0x61, 0x0a, 0x68, 0x75, 0x6c,
0x6c, 0x0a, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x0a, 0x68, 0x75, 0x6d, 0x69,
0x64, 0x0a, 0x68, 0x75, 0x6d, 0x70, 0x0a, 0x68, 0x75, 0x6e, 0x67, 0x0a,
0x68, 0x75, 0x6e, 0x6b, 0x0a, 0x68, 0x75, 0x6e, 0x74, 0x0a, 0x68, 0x75,
0x72, 0x72, 0x79, 0x0a, 0x68, 0x75, 0x72, 0x74, 0x0a, 0x68, 0x75, 0x73,
0x68, 0x0a, 0x68, 0x75, 0x74, 0x0a, 0x69, 0x63, 0x65, 0x0a, 0x69, 0x63,
0x69, 0x6e, 0x67, 0x0a, 0x69, 0x63, 0x6f, 0x6e, 0x0a, 0x69, 0x63, 0x79,
0x0a, 0x69, 0x67, 0x6c, 0x6f, 0x6f, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65,
0x0a, 0x69, 0x6f, 0x6e, 0x0a, 0x69, 0x72, 0x6f, 0x6e, 0x0a, 0x69, 0x73,
0x6c, 0x61, 0x6d, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x0a, 0x69, 0x74,
0x65, 0x6d, 0x0a, 0x69, 0x76, 0x6f, 0x72, 0x79, 0x0a, 0x69, 0x76, 0x79,
0x0a, 0x6a, 0x61, 0x62, 0x0a, 0x6a, 0x61, 0x6d, 0x0a, 0x6a, 0x61, 0x77,
0x73, 0x0a, 0x6a, 0x61, 0x7a, 0x7a, 0x0a, 0x6a, 0x65, 0x65, 0x70, 0x0a,
0x6a, 0x65, 0x6c, 0x6c, 0x79, 0x0a, 0x6a, 0x65, 0x74, 0x0a, 0x6a, 0x69,
0x66, 0x66, 0x79, 0x0a, 0x6a, 0x6f, 0x62, 0x0a, 0x6a, 0x6f, 0x67, 0x0a,
0x6a, 0x6f, 0x6c, 0x6c, 0x79, 0x0a, 0x6a, 0x6f, 0x6c, 0x74, 0x0a, 0x6a,
0x6f, 0x74, 0x0a, 0x6a, 0x6f, 0x79, 0x0a, 0x6a, 0x75, 0x64, 0x67, 0x65,
0x0a, 0x6a, 0x75, 0x69, 0x63, 0x65, 0x0a, 0x6a, 0x75, 0x69, 0x63, 0x79,
0x0a, 0x6a, 0x75, 0x6c, 0x79, 0x0a, 0x6a, 0x75, 0x6d, 0x62, 0x6f, 0x0a,
0x6a, 0x75, 0x6d, 0x70, 0x0a, 0x6a, 0x75, 0x6e, 0x6b, 0x79, 0x0a, 0x6a,
0x75, 0x72, 0x6f, 0x72, 0x0a, 0x6a, 0x75, 0x72, 0x79, 0x0a, 0x6b, 0x65,
0x65, 0x70, 0x0a, 0x6b, 0x65, 0x67, 0x0a, 0x6b, 0x65, 0x70, 0x74, 0x0a,
0x6b, 0x69, 0x63, 0x6b, 0x0a, 0x6b, 0x69, 0x6c, 0x74, 0x0a, 0x6b, 0x69,
0x6e, 0x67, 0x0a, 0x6b, 0x69, 0x74, 0x65, 0x0a, 0x6b, 0x69, 0x74, 0x74,
0x79, 0x0a, 0x6b, 0x69, 0x77, 0x69, 0x0a, 0x6b, 0x6e, 0x65, 0x65, 0x0a,
0x6b, 0x6e, 0x65, 0x6c, 0x74, 0x0a, 0x6b, 0x6f, 0x61, 0x6c, 0x61, 0x0a,
0x6b, 0x75, 0x6e, 0x67, 0x0a, 0x6c, 0x61, 0x64, 0x6c, 0x65, 0x0a, 0x6c,
0x61, 0x64, 0x79, 0x0a, 0x6c, 0x61, 0x69, 0x72, 0x0a, 0x6c, 0x61, 0x6b,
0x65, 0x0a, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x0a, 0x6c, 0x61, 0x6e, 0x64,
0x0a, 0x6c, 0x61, 0x70, 0x65, 0x6c, 0x0a, 0x6c, 0x61, 0x72, 0x67, 0x65,
0x0a, 0x6c, 0x61, 0x73, 0x68, 0x0a, 0x6c, 0x61, 0x73, 0x73, 0x6f, 0x0a,
0x6c, 0x61, 0x73, 0x74, 0x0a, 0x6c, 0x61, 0x74, 0x63, 0x68, 0x0a, 0x6c,
0x61, 0x74, 0x65, 0x0a, 0x6c, 0x61, 0x7a, 0x79, 0x0a, 0x6c, 0x65, 0x66,
0x74, 0x0a, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x0a, 0x6c, 0x65, 0x6d, 0x6f,
0x6e, 0x0a, 0x6c, 0x65, 0x6e, 0x64, 0x0a, 0x6c, 0x65, 0x6e, 0x73, 0x0a,
0x6c, 0x65, 0x6e, 0x74, 0x0a, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x0a, 0x6c,
0x65, 0x76, 0x65, 0x72, 0x0a, 0x6c, 0x69, 0x64, 0x0a, 0x6c, 0x69, 0x66,
0x65, 0x0a, 0x6c, 0x69, 0x66, 0x74, 0x0a, 0x6c, 0x69, 0x6c, 0x61, 0x63,
0x0a, 0x6c, 0x69, 0x6c, 0x79, 0x0a, 0x6c, 0x69, 0x6d, 0x62, 0x0a, 0x6c,
0x69, 0x6d, 0x65, 0x73, 0x0a, 0x6c, 0x69, 0x6e, 0x65, 0x0a, 0x6c, 0x69,
0x6e, 0x74, 0x0a, 0x6c, 0x69, 0x6f, 0x6e, 0x0a, 0x6c, 0x69, 0x70, 0x0a,
0x6c, 0x69, 0x73, 0x74, 0x0a, 0x6c, 0x69, 0x76, 0x65, 0x64, 0x0a, 0x6c,
0x69, 0x76, 0x65, 0x72, 0x0a, 0x6c, 0x75, 0x6e, 0x61, 0x72, 0x0a, 0x6c,
0x75, 0x6e, 0x63, 0x68, 0x0a, 0x6c, 0x75, 0x6e, 0x67, 0x0a, 0x6c, 0x75,
0x72, 0x63, 0x68, 0x0a, 0x6c, 0x75, 0x72, 0x65, 0x0a, 0x6c, 0x75, 0x72,
0x6b, 0x0a, 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x0a, 0x6c, 0x79, 0x72, 0x69,
0x63, 0x0a, 0x6d, 0x61, 0x63, 0x65, 0x0a, 0x6d, 0x61, 0x6b, 0x65, 0x72,
0x0a, 0x6d, 0x61, 0x6c, 0x74, 0x0a, 0x6d, 0x61, 0x6d, 0x61, 0x0a, 0x6d,
0x61, 0x6e, 0x67, 0x6f, 0x0a, 0x6d, 0x61, 0x6e, 0x6f, 0x72, 0x0a, 0x6d,
0x61, 0x6e, 0x79, 0x0a, 0x6d, 0x61, 0x70, 0x0a, 0x6d, 0x61, 0x72, 0x63,
0x68, 0x0a, 0x6d, 0x61, 0x72, 0x64, 0x69, 0x0a, 0x6d, 0x61, 0x72, 0x72,
0x79, 0x0a, 0x6d, 0x61, 0x73, 0x68, 0x0a, 0x6d, 0x61, 0x74, 0x63, 0x68,
0x0a, 0x6d, 0x61, 0x74, 0x65, 0x0a, 0x6d, 0x61, 0x74, 0x68, 0x0a, 0x6d,
0x6f, 0x61, 0x6e, 0x0a, 0x6d, 0x6f, 0x63, 0x68, 0x61, 0x0a, 0x6d, 0x6f,
0x69, 0x73, 0x74, 0x0a, 0x6d, 0x6f, 0x6c, 0x64, 0x0a, 0x6d, 0x6f, 0x6d,
0x0a, 0x6d, 0x6f, 0x6f, 0x64, 0x79, 0x0a, 0x6d, 0x6f, 0x70, 0x0a, 0x6d,
0x6f, 0x72, 0x73, 0x65, 0x0a, 0x6d, 0x6f, 0x73, 0x74, 0x0a, 0x6d, 0x6f,
0x74, 0x6f, 0x72, 0x0a, 0x6d, 0x6f, 0x74, 0x74, 0x6f, 0x0a, 0x6d, 0x6f,
0x75, 0x6e, 0x74, 0x0a, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x0a, 0x6d, 0x6f,
0x75, 0x73, 0x79, 0x0a, 0x6d, 0x6f, 0x75, 0x74, 0x68, 0x0a, 0x6d, 0x6f,
0x76, 0x65, 0x0a, 0x6d, 0x6f, 0x76, 0x69, 0x65, 0x0a, 0x6d, 0x6f, 0x77,
0x65, 0x72, 0x0a, 0x6d, 0x75, 0x64, 0x0a, 0x6d, 0x75, 0x67, 0x0a, 0x6d,
0x75, 0x6c, 0x63, 0x68, 0x0a, 0x6d, 0x75, 0x6c, 0x65, 0x0a, 0x6d, 0x75,
0x6c, 0x6c, 0x0a, 0x6d, 0x75, 0x6d, 0x62, 0x6f, 0x0a, 0x6d, 0x75, 0x6d,
0x6d, 0x79, 0x0a, 0x6d, 0x75, 0x72, 0x61, 0x6c, 0x0a, 0x6d, 0x75, 0x73,
0x65, 0x0a, 0x6d, 0x75, 0x73, 0x69, 0x63, 0x0a, 0x6d, 0x75, 0x73, 0x6b,
0x79, 0x0a, 0x6d, 0x75, 0x74, 0x65, 0x0a, 0x6e, 0x61, 0x63, 0x68, 0x6f,
0x0a, 0x6e, 0x61, 0x67, 0x0a, 0x6e, 0x61, 0x69, 0x6c, 0x0a, 0x6e, 0x61,
0x6d, 0x65, 0x0a, 0x6e, 0x61, 0x6e, 0x6e, 0x79, 0x0a, 0x6e, 0x61, 0x70,
0x0a, 0x6e, 0x61, 0x76, 0x79, 0x0a, 0x6e, 0x65, 0x61, 0x72, 0x0a, 0x6e,
0x65, 0x61, 0x74, 0x0a, 0x6e, 0x65, 0x6f, 0x6e, 0x0a, 0x6e, 0x65, 0x72,
0x64, 0x0a, 0x6e, 0x65, 0x73, 0x74, 0x0a, 0x6e, 0x65, 0x74, 0x0a, 0x6e,
0x65, 0x78, 0x74, 0x0a, 0x6e, 0x69, 0x65, 0x63, 0x65, 0x0a, 0x6e, 0x69,
0x6e, 0x74, 0x68, 0x0a, 0x6e, 0x75, 0x74, 0x74, 0x79, 0x0a, 0x6f, 0x61,
0x6b, 0x0a, 0x6f, 0x61, 0x73, 0x69, 0x73, 0x0a, 0x6f, 0x61, 0x74, 0x0a,
0x6f, 0x63, 0x65, 0x61, 0x6e, 0x0a, 0x6f, 0x69, 0x6c, 0x0a, 0x6f, 0x6c,
0x64, 0x0a, 0x6f, 0x6c, 0x69, 0x76, 0x65, 0x0a, 0x6f, 0x6d, 0x65, 0x6e,
0x0a, 0x6f, 0x6e, 0x69, 0x6f, 0x6e, 0x0a, 0x6f, 0x6e, 0x6c, 0x79, 0x0a,
0x6f, 0x6f, 0x7a, 0x65, 0x0a, 0x6f, 0x70, 0x61, 0x6c, 0x0a, 0x6f, 0x70,
0x65, 0x6e, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x0a, 0x6f, 0x70, 0x74,
0x0a, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x0a, 0x6f, 0x75, 0x63, 0x68, 0x0a,
0x6f, 0x75, 0x6e, 0x63, 0x65, 0x0a, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x0a,
0x6f, 0x76, 0x61, 0x6c, 0x0a, 0x6f, 0x76, 0x65, 0x6e, 0x0a, 0x6f, 0x77,
0x6c, 0x0a, 0x6f, 0x7a, 0x6f, 0x6e, 0x65, 0x0a, 0x70, 0x61, 0x63, 0x65,
0x0a, 0x70, 0x61, 0x67, 0x61, 0x6e, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x72,
0x0a, 0x70, 0x61, 0x6c, 0x6d, 0x0a, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x0a,
0x70, 0x61, 0x6e, 0x69, 0x63, 0x0a, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x0a,
0x70, 0x61, 0x6e, 0x74, 0x79, 0x0a, 0x70, 0x61, 0x70, 0x65, 0x72, 0x0a,
0x70, 0x61, 0x72, 0x6b, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x79, 0x0a, 0x70,
0x61, 0x73, 0x74, 0x61, 0x0a, 0x70, 0x61, 0x74, 0x63, 0x68, 0x0a, 0x70,
0x61, 0x74, 0x68, 0x0a, 0x70, 0x61, 0x74, 0x69, 0x6f, 0x0a, 0x70, 0x61,
0x79, 0x65, 0x72, 0x0a, 0x70, 0x65, 0x63, 0x61, 0x6e, 0x0a, 0x70, 0x65,
0x6e, 0x6e, 0x79, 0x0a, 0x70, 0x65, 0x70, 0x0a, 0x70, 0x65, 0x72, 0x63,
0x68, 0x0a, 0x70, 0x65, 0x72, 0x6b, 0x79, 0x0a, 0x70, 0x65, 0x72, 0x6d,
0x0a, 0x70, 0x65, 0x73, 0x74, 0x0a, 0x70, 0x65, 0x74, 0x61, 0x6c, 0x0a,
0x70, 0x65, 0x74, 0x72, 0x69, 0x0a, 0x70, 0x65, 0x74, 0x74, 0x79, 0x0a,
0x70, 0x68, 0x6f, 0x74, 0x6f, 0x0a, 0x70, 0x6c, 0x61, 0x6e, 0x6b, 0x0a,
0x70, 0x6c, 0x61, 0x6e, 0x74, 0x0a, 0x70, 0x6c, 0x61, 0x7a, 0x61, 0x0a,
0x70, 0x6c, 0x65, 0x61, 0x64, 0x0a, 0x70, 0x6c, 0x6f, 0x74, 0x0a, 0x70,
0x6c, 0x6f, 0x77, 0x0a, 0x70, 0x6c, 0x75, 0x63, 0x6b, 0x0a, 0x70, 0x6c,
0x75, 0x67, 0x0a, 0x70, 0x6c, 0x75, 0x73, 0x0a, 0x70, 0x6f, 0x61, 0x63,
0x68, 0x0a, 0x70, 0x6f, 0x64, 0x0a, 0x70, 0x6f, 0x65, 0x6d, 0x0a, 0x70,
0x6f, 0x65, 0x74, 0x0a, 0x70, 0x6f, 0x67, 0x6f, 0x0a, 0x70, 0x6f, 0x69,
0x6e, 0x74, 0x0a, 0x70, 0x6f, 0x69, 0x73, 0x65, 0x0a, 0x70, 0x6f, 0x6b,
0x65, 0x72, 0x0a, 0x70, 0x6f, 0x6c, 0x61, 0x72, 0x0a, 0x70, 0x6f, 0x6c,
0x69, 0x6f, 0x0a, 0x70, 0x6f, 0x6c, 0x6b, 0x61, 0x0a, 0x70, 0x6f, 0x6c,
0x6f, 0x0a, 0x70, 0x6f, 0x6e, 0x64, 0x0a, 0x70, 0x6f, 0x6e, 0x79, 0x0a,
0x70, 0x6f, 0x70, 0x70, 0x79, 0x0a, 0x70, 0x6f, 0x72, 0x6b, 0x0a, 0x70,
0x6f, 0x73, 0x65, 0x72, 0x0a, 0x70, 0x6f, 0x75, 0x63, 0x68, 0x0a, 0x70,
0x6f, 0x75, 0x6e, 0x64, 0x0a, 0x70, 0x6f, 0x75, 0x74, 0x0a, 0x70, 0x6f,
0x77, 0x65, 0x72, 0x0a, 0x70, 0x72, 0x61, 0x6e, 0x6b, 0x0a, 0x70, 0x72,
0x65, 0x73, 0x73, 0x0a, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x0a, 0x70, 0x72,
0x69, 0x6f, 0x72, 0x0a, 0x70, 0x72, 0x69, 0x73, 0x6d, 0x0a, 0x70, 0x72,
0x69, 0x7a, 0x65, 0x0a, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x0a, 0x70, 0x72,
0x6f, 0x6e, 0x67, 0x0a, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x0a, 0x70, 0x72,
0x6f, 0x70, 0x73, 0x0a, 0x70, 0x72, 0x75, 0x64, 0x65, 0x0a, 0x70, 0x72,
0x75, 0x6e, 0x65, 0x0a, 0x70, 0x72, 0x79, 0x0a, 0x70, 0x75, 0x67, 0x0a,
0x70, 0x75, 0x6c, 0x6c, 0x0a, 0x70, 0x75, 0x6c, 0x70, 0x0a, 0x70, 0x75,
0x6c, 0x73, 0x65, 0x0a, 0x70, 0x75, 0x6d, 0x61, 0x0a, 0x70, 0x75, 0x6e,
0x63, 0x68, 0x0a, 0x70, 0x75, 0x6e, 0x6b, 0x0a, 0x70, 0x75, 0x70, 0x69,
0x6c, 0x0a, 0x70, 0x75, 0x70, 0x70, 0x79, 0x0a, 0x70, 0x75, 0x72, 0x72,
0x0a, 0x70, 0x75, 0x72, 0x73, 0x65, 0x0a, 0x70, 0x75, 0x73, 0x68, 0x0a,
0x70, 0x75, 0x74, 0x74, 0x0a, 0x71, 0x75, 0x61, 0x63, 0x6b, 0x0a, 0x71,
0x75, 0x61, 0x6b, 0x65, 0x0a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x0a, 0x71,
0x75, 0x69, 0x65, 0x74, 0x0a, 0x71, 0x75, 0x69, 0x6c, 0x6c, 0x0a, 0x71,
0x75, 0x69, 0x6c, 0x74, 0x0a, 0x71, 0x75, 0x69, 0x74, 0x0a, 0x71, 0x75,
0x6f, 0x74, 0x61, 0x0a, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x0a, 0x72, 0x61,
0x62, 0x69, 0x64, 0x0a, 0x72, 0x61, 0x63, 0x65, 0x0a, 0x72, 0x61, 0x63,
0x6b, 0x0a, 0x72, 0x61, 0x64, 0x61, 0x72, 0x0a, 0x72, 0x61, 0x64, 0x69,
0x6f, 0x0a, 0x72, 0x61, 0x66, 0x74, 0x0a, 0x72, 0x61, 0x67, 0x65, 0x0a,
0x72, 0x61, 0x69, 0x64, 0x0a, 0x72, 0x61, 0x69, 0x6c, 0x0a, 0x72, 0x61,
0x6b, 0x65, 0x0a, 0x72, 0x61, 0x6c, 0x6c, 0x79, 0x0a, 0x72, 0x61, 0x6d,
0x70, 0x0a, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x0a, 0x72, 0x61, 0x6e, 0x67,
0x65, 0x0a, 0x72, 0x61, 0x6e, 0x6b, 0x0a, 0x72, 0x61, 0x6e, 0x74, 0x0a,
0x72, 0x61, 0x73, 0x68, 0x0a, 0x72, 0x61, 0x76, 0x65, 0x6e, 0x0a, 0x72,
0x65, 0x61, 0x63, 0x68, 0x0a, 0x72, 0x65, 0x61, 0x63, 0x74, 0x0a, 0x72,
0x65, 0x61, 0x6d, 0x0a, 0x72, 0x65, 0x62, 0x65, 0x6c, 0x0a, 0x72, 0x65,
0x63, 0x61, 0x70, 0x0a, 0x72, 0x65, 0x6c, 0x61, 0x78, 0x0a, 0x72, 0x65,
0x6c, 0x61, 0x79, 0x0a, 0x72, 0x65, 0x6c, 0x69, 0x63, 0x0a, 0x72, 0x65,
0x6d, 0x69, 0x78, 0x0a, 0x72, 0x65, 0x70, 0x61, 0x79, 0x0a, 0x72, 0x65,
0x70, 0x65, 0x6c, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x0a, 0x72, 0x65,
0x72, 0x75, 0x6e, 0x0a, 0x72, 0x65, 0x73, 0x65, 0x74, 0x0a, 0x72, 0x68,
0x79, 0x6d, 0x65, 0x0a, 0x72, 0x69, 0x63, 0x65, 0x0a, 0x72, 0x69, 0x63,
0x68, 0x0a, 0x72, 0x69, 0x64, 0x65, 0x0a, 0x72, 0x69, 0x67, 0x69, 0x64,
0x0a, 0x72, 0x69, 0x67, 0x6f, 0x72, 0x0a, 0x72, 0x69, 0x6e, 0x73, 0x65,
0x0a, 0x72, 0x69, 0x6f, 0x74, 0x0a, 0x72, 0x69, 0x70, 0x65, 0x6e, 0x0a,
0x72, 0x69, 0x73, 0x65, 0x0a, 0x72, 0x69, 0x73, 0x6b, 0x0a, 0x72, 0x69,
0x74, 0x7a, 0x79, 0x0a, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x0a, 0x72, 0x69,
0x76, 0x65, 0x72, 0x0a, 0x72, 0x6f, 0x61, 0x73, 0x74, 0x0a, 0x72, 0x6f,
0x62, 0x65, 0x0a, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x0a, 0x72, 0x6f, 0x63,
0x6b, 0x0a, 0x72, 0x6f, 0x67, 0x75, 0x65, 0x0a, 0x72, 0x6f, 0x6d, 0x61,
0x6e, 0x0a, 0x72, 0x6f, 0x6d, 0x70, 0x0a, 0x72, 0x6f, 0x70, 0x65, 0x0a,
0x72, 0x6f, 0x76, 0x65, 0x72, 0x0a, 0x72, 0x6f, 0x79, 0x61, 0x6c, 0x0a,
0x72, 0x75, 0x62, 0x79, 0x0a, 0x72, 0x75, 0x67, 0x0a, 0x72, 0x75, 0x69,
0x6e, 0x0a, 0x72, 0x75, 0x6c, 0x65, 0x0a, 0x72, 0x75, 0x6e, 0x6e, 0x79,
0x0a, 0x72, 0x75, 0x73, 0x68, 0x0a, 0x72, 0x75, 0x73, 0x74, 0x0a, 0x72,
0x75, 0x74, 0x0a, 0x73, 0x61, 0x64, 0x6c, 0x79, 0x0a, 0x73, 0x61, 0x67,
0x65, 0x0a, 0x73, 0x61, 0x69, 0x64, 0x0a, 0x73, 0x61, 0x69, 0x6e, 0x74,
0x0a, 0x73, 0x61, 0x6c, 0x61, 0x64, 0x0a, 0x73, 0x61, 0x6c, 0x6f, 0x6e,
0x0a, 0x73, 0x61, 0x6c, 0x73, 0x61, 0x0a, 0x73, 0x61, 0x6c, 0x74, 0x0a,
0x73, 0x61, 0x6d, 0x65, 0x0a, 0x73, 0x61, 0x6e, 0x64, 0x79, 0x0a, 0x73,
0x61, 0x6e, 0x74, 0x61, 0x0a, 0x73, 0x61, 0x74, 0x69, 0x6e, 0x0a, 0x73,
0x61, 0x75, 0x6e, 0x61, 0x0a, 0x73, 0x61, 0x76, 0x65, 0x64, 0x0a, 0x73,
0x61, 0x76, 0x6f, 0x72, 0x0a, 0x73, 0x61, 0x78, 0x0a, 0x73, 0x61, 0x79,
0x0a, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x0a, 0x73, 0x63, 0x61, 0x6d, 0x0a,
0x73, 0x63, 0x61, 0x6e, 0x0a, 0x73, 0x63, 0x61, 0x72, 0x65, 0x0a, 0x73,
0x63, 0x61, 0x72, 0x66, 0x0a, 0x73, 0x63, 0x61, 0x72, 0x79, 0x0a, 0x73,
0x63, 0x6f, 0x66, 0x66, 0x0a, 0x73, 0x63, 0x6f, 0x6c, 0x64, 0x0a, 0x73,
0x63, 0x6f, 0x6f, 0x70, 0x0a, 0x73, 0x63, 0x6f, 0x6f, 0x74, 0x0a, 0x73,
0x63, 0x6f, 0x70, 0x65, 0x0a, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x0a, 0x73,
0x63, 0x6f, 0x72, 0x6e, 0x0a, 0x73, 0x63, 0x6f, 0x75, 0x74, 0x0a, 0x73,
0x63, 0x6f, 0x77, 0x6c, 0x0a, 0x73, 0x63, 0x72, 0x61, 0x70, 0x0a, 0x73,
0x63, 0x72, 0x75, 0x62, 0x0a, 0x73, 0x63, 0x75, 0x62, 0x61, 0x0a, 0x73,
0x63, 0x75, 0x66, 0x66, 0x0a, 0x73, 0x65, 0x63, 0x74, 0x0a, 0x73, 0x65,
0x64, 0x61, 0x6e, 0x0a, 0x73, 0x65, 0x6c, 0x66, 0x0a, 0x73, 0x65, 0x6e,
0x64, 0x0a, 0x73, 0x65, 0x70, 0x69, 0x61, 0x0a, 0x73, 0x65, 0x72, 0x76,
0x65, 0x0a, 0x73, 0x65, 0x74, 0x0a, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x0a,
0x73, 0x68, 0x61, 0x63, 0x6b, 0x0a, 0x73, 0x68, 0x61, 0x64, 0x65, 0x0a,
0x73, 0x68, 0x61, 0x64, 0x79, 0x0a, 0x73, 0x68, 0x61, 0x66, 0x74, 0x0a,
0x73, 0x68, 0x61, 0x6b, 0x79, 0x0a, 0x73, 0x68, 0x61, 0x6d, 0x0a, 0x73,
0x68, 0x61, 0x70, 0x65, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x65, 0x0a, 0x73,
0x68, 0x61, 0x72, 0x70, 0x0a, 0x73, 0x68, 0x65, 0x64, 0x0a, 0x73, 0x68,
0x65, 0x65, 0x70, 0x0a, 0x73, 0x68, 0x65, 0x65, 0x74, 0x0a, 0x73, 0x68,
0x65, 0x6c, 0x66, 0x0a, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x0a, 0x73, 0x68,
0x69, 0x6e, 0x65, 0x0a, 0x73, 0x68, 0x69, 0x6e, 0x79, 0x0a, 0x73, 0x68,
0x69, 0x70, 0x0a, 0x73, 0x68, 0x69, 0x72, 0x74, 0x0a, 0x73, 0x68, 0x6f,
0x63, 0x6b, 0x0a, 0x73, 0x68, 0x6f, 0x70, 0x0a, 0x73, 0x68, 0x6f, 0x72,
0x65, 0x0a, 0x73, 0x68, 0x6f, 0x75, 0x74, 0x0a, 0x73, 0x68, 0x6f, 0x76,
0x65, 0x0a, 0x73, 0x68, 0x6f, 0x77, 0x6e, 0x0a, 0x73, 0x68, 0x6f, 0x77,
0x79, 0x0a, 0x73, 0x68, 0x72, 0x65, 0x64, 0x0a, 0x73, 0x68, 0x72, 0x75,
0x67, 0x0a, 0x73, 0x68, 0x75, 0x6e, 0x0a, 0x73, 0x68, 0x75, 0x73, 0x68,
0x0a, 0x73, 0x68, 0x75, 0x74, 0x0a, 0x73, 0x68, 0x79, 0x0a, 0x73, 0x69,
0x66, 0x74, 0x0a, 0x73, 0x69, 0x6c, 0x6b, 0x0a, 0x73, 0x69, 0x6c, 0x6c,
0x79, 0x0a, 0x73, 0x69, 0x6c, 0x6f, 0x0a, 0x73, 0x69, 0x70, 0x0a, 0x73,
0x69, 0x72, 0x65, 0x6e, 0x0a, 0x73, 0x69, 0x78, 0x74, 0x68, 0x0a, 0x73,
0x69, 0x7a, 0x65, 0x0a, 0x73, 0x6b, 0x61, 0x74, 0x65, 0x0a, 0x73, 0x6b,
0x65, 0x77, 0x0a, 0x73, 0x6b, 0x69, 0x64, 0x0a, 0x73, 0x6b, 0x69, 0x65,
0x72, 0x0a, 0x73, 0x6b, 0x69, 0x65, 0x73, 0x0a, 0x73, 0x6b, 0x69, 0x70,
0x0a, 0x73, 0x6b, 0x69, 0x72, 0x74, 0x0a, 0x73, 0x6b, 0x69, 0x74, 0x0a,
0x73, 0x6b, 0x79, 0x0a, 0x73, 0x6c, 0x61, 0x62, 0x0a, 0x73, 0x6c, 0x61,
0x63, 0x6b, 0x0a, 0x73, 0x6c, 0x61, 0x69, 0x6e, 0x0a, 0x73, 0x6c, 0x61,
0x6d, 0x0a, 0x73, 0x6c, 0x61, 0x6e, 0x67, 0x0a, 0x73, 0x6c, 0x61, 0x73,
0x68, 0x0a, 0x73, 0x6c, 0x61, 0x74, 0x65, 0x0a, 0x73, 0x6c, 0x61, 0x77,
0x0a, 0x73, 0x6c, 0x65, 0x64, 0x0a, 0x73, 0x6c, 0x65, 0x65, 0x6b, 0x0a,
0x73, 0x6c, 0x65, 0x65, 0x70, 0x0a, 0x73, 0x6c, 0x65, 0x65, 0x74, 0x0a,
0x73, 0x6c, 0x65, 0x70, 0x74, 0x0a, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x0a,
0x73, 0x6c, 0x69, 0x63, 0x6b, 0x0a, 0x73, 0x6c, 0x69, 0x6d, 0x79, 0x0a,
0x73, 0x6c, 0x69, 0x6e, 0x67, 0x0a, 0x73, 0x6c, 0x69, 0x70, 0x0a, 0x73,
0x6c, 0x69, 0x74, 0x0a, 0x73, 0x6c, 0x6f, 0x62, 0x0a, 0x73, 0x6c, 0x6f,
0x74, 0x0a, 0x73, 0x6c, 0x75, 0x67, 0x0a, 0x73, 0x6c, 0x75, 0x6d, 0x0a,
0x73, 0x6c, 0x75, 0x72, 0x70, 0x0a, 0x73, 0x6c, 0x75, 0x73, 0x68, 0x0a,
0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x0a, 0x73, 0x6d, 0x61, 0x73, 0x68, 0x0a,
0x73, 0x6d, 0x65, 0x6c, 0x6c, 0x0a, 0x73, 0x6d, 0x69, 0x6c, 0x65, 0x0a,
0x73, 0x6d, 0x69, 0x72, 0x6b, 0x0a, 0x73, 0x6d, 0x6f, 0x67, 0x0a, 0x73,
0x6e, 0x61, 0x63, 0x6b, 0x0a, 0x73, 0x6e, 0x61, 0x70, 0x0a, 0x73, 0x6e,
0x61, 0x72, 0x65, 0x0a, 0x73, 0x6e, 0x61, 0x72, 0x6c, 0x0a, 0x73, 0x6e,
0x65, 0x61, 0x6b, 0x0a, 0x73, 0x6e, 0x65, 0x65, 0x72, 0x0a, 0x73, 0x6e,
0x69, 0x66, 0x66, 0x0a, 0x73, 0x6e, 0x6f, 0x72, 0x65, 0x0a, 0x73, 0x6e,
0x6f, 0x72, 0x74, 0x0a, 0x73, 0x6e, 0x6f, 0x75, 0x74, 0x0a, 0x73, 0x6e,
0x6f, 0x77, 0x79, 0x0a, 0x73, 0x6e, 0x75, 0x62, 0x0a, 0x73, 0x6e, 0x75,
0x66, 0x66, 0x0a, 0x73, 0x70, 0x65, 0x61, 0x6b, 0x0a, 0x73, 0x70, 0x65,
0x65, 0x64, 0x0a, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x0a, 0x73, 0x70, 0x65,
0x6e, 0x74, 0x0a, 0x73, 0x70, 0x65, 0x77, 0x0a, 0x73, 0x70, 0x69, 0x65,
0x64, 0x0a, 0x73, 0x70, 0x69, 0x6c, 0x6c, 0x0a, 0x73, 0x70, 0x69, 0x6e,
0x79, 0x0a, 0x73, 0x70, 0x6f, 0x69, 0x6c, 0x0a, 0x73, 0x70, 0x6f, 0x6b,
0x65, 0x0a, 0x73, 0x70, 0x6f, 0x6f, 0x66, 0x0a, 0x73, 0x70, 0x6f, 0x6f,
0x6c, 0x0a, 0x73, 0x70, 0x6f, 0x6f, 0x6e, 0x0a, 0x73, 0x70, 0x6f, 0x72,
0x74, 0x0a, 0x73, 0x70, 0x6f, 0x74, 0x0a, 0x73, 0x70, 0x6f, 0x75, 0x74,
0x0a, 0x73, 0x70, 0x72, 0x61, 0x79, 0x0a, 0x73, 0x70, 0x72, 0x65, 0x65,
0x0a, 0x73, 0x70, 0x75, 0x72, 0x0a, 0x73, 0x71, 0x75, 0x61, 0x64, 0x0a,
0x73, 0x71, 0x75, 0x61, 0x74, 0x0a, 0x73, 0x71, 0x75, 0x69, 0x64, 0x0a,
0x73, 0x74, 0x61, 0x63, 0x6b, 0x0a, 0x73, 0x74, 0x61, 0x66, 0x66, 0x0a,
0x73, 0x74, 0x61, 0x67, 0x65, 0x0a, 0x73, 0x74, 0x61, 0x69, 0x6e, 0x0a,
0x73, 0x74, 0x61, 0x6c, 0x6c, 0x0a, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x0a,
0x73, 0x74, 0x61, 0x6e, 0x64, 0x0a, 0x73, 0x74, 0x61, 0x6e, 0x6b, 0x0a,
0x73, 0x74, 0x61, 0x72, 0x6b, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x0a,
0x73, 0x74, 0x61, 0x73, 0x68, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x0a,
0x73, 0x74, 0x61, 0x79, 0x73, 0x0a, 0x73, 0x74, 0x65, 0x61, 0x6d, 0x0a,
0x73, 0x74, 0x65, 0x65, 0x70, 0x0a, 0x73, 0x74, 0x65, 0x6d, 0x0a, 0x73,
0x74, 0x65, 0x70, 0x0a, 0x73, 0x74, 0x65, 0x77, 0x0a, 0x73, 0x74, 0x69,
0x63, 0x6b, 0x0a, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x0a, 0x73, 0x74, 0x69,
0x72, 0x0a, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x0a, 0x73, 0x74, 0x6f, 0x6c,
0x65, 0x0a, 0x73, 0x74, 0x6f, 0x6d, 0x70, 0x0a, 0x73, 0x74, 0x6f, 0x6e,
0x79, 0x0a, 0x73, 0x74, 0x6f, 0x6f, 0x64, 0x0a, 0x73, 0x74, 0x6f, 0x6f,
0x6c, 0x0a, 0x73, 0x74, 0x6f, 0x6f, 0x70, 0x0a, 0x73, 0x74, 0x6f, 0x70,
0x0a, 0x73, 0x74, 0x6f, 0x72, 0x6d, 0x0a, 0x73, 0x74, 0x6f, 0x75, 0x74,
0x0a, 0x73, 0x74, 0x6f, 0x76, 0x65, 0x0a, 0x73, 0x74, 0x72, 0x61, 0x77,
0x0a, 0x73, 0x74, 0x72, 0x61, 0x79, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x74,
0x0a, 0x73, 0x74, 0x75, 0x63, 0x6b, 0x0a, 0x73, 0x74, 0x75, 0x64, 0x0a,
0x73, 0x74, 0x75, 0x66, 0x66, 0x0a, 0x73, 0x74, 0x75, 0x6d, 0x70, 0x0a,
0x73, 0x74, 0x75, 0x6e, 0x67, 0x0a, 0x73, 0x74, 0x75, 0x6e, 0x74, 0x0a,
0x73, 0x75, 0x64, 0x73, 0x0a, 0x73, 0x75, 0x67, 0x61, 0x72, 0x0a, 0x73,
0x75, 0x6c, 0x6b, 0x0a, 0x73, 0x75, 0x72, 0x66, 0x0a, 0x73, 0x75, 0x73,
0x68, 0x69, 0x0a, 0x73, 0x77, 0x61, 0x62, 0x0a, 0x73, 0x77, 0x61, 0x6e,
0x0a, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x0a, 0x73, 0x77, 0x61, 0x79, 0x0a,
0x73, 0x77, 0x65, 0x61, 0x72, 0x0a, 0x73, 0x77, 0x65, 0x61, 0x74, 0x0a,
0x73, 0x77, 0x65, 0x65, 0x70, 0x0a, 0x73, 0x77, 0x65, 0x6c, 0x6c, 0x0a,
0x73, 0x77, 0x65, 0x70, 0x74, 0x0a, 0x73, 0x77, 0x69, 0x6d, 0x0a, 0x73,
0x77, 0x69, 0x6e, 0x67, 0x0a, 0x73, 0x77, 0x69, 0x70, 0x65, 0x0a, 0x73,
0x77, 0x69, 0x72, 0x6c, 0x0a, 0x73, 0x77, 0x6f, 0x6f, 0x70, 0x0a, 0x73,
0x77, 0x6f, 0x72, 0x65, 0x0a, 0x73, 0x79, 0x72, 0x75, 0x70, 0x0a, 0x74,
0x61, 0x63, 0x6b, 0x79, 0x0a, 0x74, 0x61, 0x63, 0x6f, 0x0a, 0x74, 0x61,
0x67, 0x0a, 0x74, 0x61, 0x6b, 0x65, 0x0a, 0x74, 0x61, 0x6c, 0x6c, 0x0a,
0x74, 0x61, 0x6c, 0x6f, 0x6e, 0x0a, 0x74, 0x61, 0x6d, 0x65, 0x72, 0x0a,
0x74, 0x61, 0x6e, 0x6b, 0x0a, 0x74, 0x61, 0x70, 0x65, 0x72, 0x0a, 0x74,
0x61, 0x70, 0x73, 0x0a, 0x74, 0x61, 0x72, 0x6f, 0x74, 0x0a, 0x74, 0x61,
0x72, 0x74, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x0a, 0x74, 0x61, 0x73, 0x74,
0x65, 0x0a, 0x74, 0x61, 0x73, 0x74, 0x79, 0x0a, 0x74, 0x61, 0x75, 0x6e,
0x74, 0x0a, 0x74, 0x68, 0x61, 0x6e, 0x6b, 0x0a, 0x74, 0x68, 0x61, 0x77,
0x0a, 0x74, 0x68, 0x65, 0x66, 0x74, 0x0a, 0x74, 0x68, 0x65, 0x6d, 0x65,
0x0a, 0x74, 0x68, 0x69, 0x67, 0x68, 0x0a, 0x74, 0x68, 0x69, 0x6e, 0x67,
0x0a, 0x74, 0x68, 0x69, 0x6e, 0x6b, 0x0a, 0x74, 0x68, 0x6f, 0x6e, 0x67,
0x0a, 0x74, 0x68, 0x6f, 0x72, 0x6e, 0x0a, 0x74, 0x68, 0x6f, 0x73, 0x65,
0x0a, 0x74, 0x68, 0x72, 0x6f, 0x62, 0x0a, 0x74, 0x68, 0x75, 0x64, 0x0a,
0x74, 0x68, 0x75, 0x6d, 0x62, 0x0a, 0x74, 0x68, 0x75, 0x6d, 0x70, 0x0a,
0x74, 0x68, 0x75, 0x73, 0x0a, 0x74, 0x69, 0x61, 0x72, 0x61, 0x0a, 0x74,
0x69, 0x64, 0x61, 0x6c, 0x0a, 0x74, 0x69, 0x64, 0x79, 0x0a, 0x74, 0x69,
0x67, 0x65, 0x72, 0x0a, 0x74, 0x69, 0x6c, 0x65, 0x0a, 0x74, 0x69, 0x6c,
0x74, 0x0a, 0x74, 0x69, 0x6e, 0x74, 0x0a, 0x74, 0x69, 0x6e, 0x79, 0x0a,
0x74, 0x72, 0x61, 0x63, 0x65, 0x0a, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x0a,
0x74, 0x72, 0x61, 0x64, 0x65, 0x0a, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x0a,
0x74, 0x72, 0x61, 0x69, 0x74, 0x0a, 0x74, 0x72, 0x61, 0x70, 0x0a, 0x74,
0x72, 0x61, 0x73, 0x68, 0x0a, 0x74, 0x72, 0x61, 0x79, 0x0a, 0x74, 0x72,
0x65, 0x61, 0x74, 0x0a, 0x74, 0x72, 0x65, 0x65, 0x0a, 0x74, 0x72, 0x65,
0x6b, 0x0a, 0x74, 0x72, 0x65, 0x6e, 0x64, 0x0a, 0x74, 0x72, 0x69, 0x61,
0x6c, 0x0a, 0x74, 0x72, 0x69, 0x62, 0x65, 0x0a, 0x74, 0x72, 0x69, 0x63,
0x6b, 0x0a, 0x74, 0x72, 0x69, 0x6f, 0x0a, 0x74, 0x72, 0x6f, 0x75, 0x74,
0x0a, 0x74, 0x72, 0x75, 0x63, 0x65, 0x0a, 0x74, 0x72, 0x75, 0x63, 0x6b,
0x0a, 0x74, 0x72, 0x75, 0x6d, 0x70, 0x0a, 0x74, 0x72, 0x75, 0x6e, 0x6b,
0x0a, 0x74, 0x72, 0x79, 0x0a, 0x74, 0x75, 0x67, 0x0a, 0x74, 0x75, 0x6c,
0x69, 0x70, 0x0a, 0x74, 0x75, 0x6d, 0x6d, 0x79, 0x0a, 0x74, 0x75, 0x72,
0x66, 0x0a, 0x74, 0x75, 0x73, 0x6b, 0x0a, 0x74, 0x75, 0x74, 0x6f, 0x72,
0x0a, 0x74, 0x75, 0x74, 0x75, 0x0a, 0x74, 0x75, 0x78, 0x0a, 0x74, 0x77,
0x65, 0x61, 0x6b, 0x0a, 0x74, 0x77, 0x65, 0x65, 0x74, 0x0a, 0x74, 0x77,
0x69, 0x63, 0x65, 0x0a, 0x74, 0x77, 0x69, 0x6e, 0x65, 0x0a, 0x74, 0x77,
0x69, 0x6e, 0x73, 0x0a, 0x74, 0x77, 0x69, 0x72, 0x6c, 0x0a, 0x74, 0x77,
0x69, 0x73, 0x74, 0x0a, 0x75, 0x6e, 0x63, 0x6c, 0x65, 0x0a, 0x75, 0x6e,
0x63, 0x75, 0x74, 0x0a, 0x75, 0x6e, 0x64, 0x6f, 0x0a, 0x75, 0x6e, 0x69,
0x66, 0x79, 0x0a, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x0a, 0x75, 0x6e, 0x69,
0x74, 0x0a, 0x75, 0x6e, 0x74, 0x69, 0x65, 0x0a, 0x75, 0x70, 0x6f, 0x6e,
0x0a, 0x75, 0x70, 0x70, 0x65, 0x72, 0x0a, 0x75, 0x72, 0x62, 0x61, 0x6e,
0x0a, 0x75, 0x73, 0x65, 0x64, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x0a, 0x75,
0x73, 0x68, 0x65, 0x72, 0x0a, 0x75, 0x74, 0x74, 0x65, 0x72, 0x0a, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x0a, 0x76, 0x61, 0x70, 0x6f, 0x72, 0x0a, 0x76,
0x65, 0x67, 0x61, 0x6e, 0x0a, 0x76, 0x65, 0x6e, 0x75, 0x65, 0x0a, 0x76,
0x65, 0x72, 0x73, 0x65, 0x0a, 0x76, 0x65, 0x73, 0x74, 0x0a, 0x76, 0x65,
0x74, 0x6f, 0x0a, 0x76, 0x69, 0x63, 0x65, 0x0a, 0x76, 0x69, 0x64, 0x65,
0x6f, 0x0a, 0x76, 0x69, 0x65, 0x77, 0x0a, 0x76, 0x69, 0x72, 0x61, 0x6c,
0x0a, 0x76, 0x69, 0x72, 0x75, 0x73, 0x0a, 0x76, 0x69, 0x73, 0x61, 0x0a,
0x76, 0x69, 0x73, 0x6f, 0x72, 0x0a, 0x76, 0x69, 0x78, 0x65, 0x6e, 0x0a,
0x76, 0x6f, 0x63, 0x61, 0x6c, 0x0a, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x0a,
0x76, 0x6f, 0x69, 0x64, 0x0a, 0x76, 0x6f, 0x6c, 0x74, 0x0a, 0x76, 0x6f,
0x74, 0x65, 0x72, 0x0a, 0x76, 0x6f, 0x77, 0x65, 0x6c, 0x0a, 0x77, 0x61,
0x64, 0x0a, 0x77, 0x61, 0x66, 0x65, 0x72, 0x0a, 0x77, 0x61, 0x67, 0x65,
0x72, 0x0a, 0x77, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x77, 0x61, 0x67, 0x6f,
0x6e, 0x0a, 0x77, 0x61, 0x6b, 0x65, 0x0a, 0x77, 0x61, 0x6c, 0x6b, 0x0a,
0x77, 0x61, 0x6e, 0x64, 0x0a, 0x77, 0x61, 0x73, 0x70, 0x0a, 0x77, 0x61,
0x74, 0x63, 0x68, 0x0a, 0x77, 0x61, 0x74, 0x65, 0x72, 0x0a, 0x77, 0x61,
0x76, 0x79, 0x0a, 0x77, 0x68, 0x65, 0x61, 0x74, 0x0a, 0x77, 0x68, 0x69,
0x66, 0x66, 0x0a, 0x77, 0x68, 0x6f, 0x6c, 0x65, 0x0a, 0x77, 0x68, 0x6f,
0x6f, 0x70, 0x0a, 0x77, 0x69, 0x63, 0x6b, 0x0a, 0x77, 0x69, 0x64, 0x65,
0x6e, 0x0a, 0x77, 0x69, 0x64, 0x6f, 0x77, 0x0a, 0x77, 0x69, 0x64, 0x74,
0x68, 0x0a, 0x77, 0x69, 0x66, 0x65, 0x0a, 0x77, 0x69, 0x66, 0x69, 0x0a,
0x77, 0x69, 0x6c, 0x74, 0x0a, 0x77, 0x69, 0x6d, 0x70, 0x0a, 0x77, 0x69,
0x6e, 0x64, 0x0a, 0x77, 0x69, 0x6e, 0x67, 0x0a, 0x77, 0x69, 0x6e, 0x6b,
0x0a, 0x77, 0x69, 0x70, 0x65, 0x0a, 0x77, 0x69, 0x72, 0x65, 0x64, 0x0a,
0x77, 0x69, 0x72, 0x79, 0x0a, 0x77, 0x69, 0x73, 0x65, 0x0a, 0x77, 0x69,
0x73, 0x68, 0x0a, 0x77, 0x69, 0x73, 0x70, 0x79, 0x0a, 0x77, 0x6f, 0x6b,
0x0a, 0x77, 0x6f, 0x6c, 0x66, 0x0a, 0x77, 0x6f, 0x6d, 0x62, 0x0a, 0x77,
0x6f, 0x6f, 0x6c, 0x0a, 0x77, 0x6f, 0x6f, 0x7a, 0x79, 0x0a, 0x77, 0x6f,
0x72, 0x64, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x0a, 0x77, 0x6f, 0x72, 0x72,
0x79, 0x0a, 0x77, 0x6f, 0x75, 0x6e, 0x64, 0x0a, 0x77, 0x6f, 0x76, 0x65,
0x6e, 0x0a, 0x77, 0x72, 0x61, 0x74, 0x68, 0x0a, 0x77, 0x72, 0x65, 0x63,
0x6b, 0x0a, 0x77, 0x72, 0x69, 0x73, 0x74, 0x0a, 0x78, 0x65, 0x72, 0x6f,
0x78, 0x0a, 0x79, 0x61, 0x68, 0x6f, 0x6f, 0x0a, 0x79, 0x61, 0x6d, 0x0a,
0x79, 0x61, 0x72, 0x64, 0x0a, 0x79, 0x65, 0x61, 0x72, 0x0a, 0x79, 0x65,
0x61, 0x73, 0x74, 0x0a, 0x79, 0x65, 0x6c, 0x70, 0x0a, 0x79, 0x69, 0x65,
0x6c, 0x64, 0x0a, 0x79, 0x6f, 0x2d, 0x79, 0x6f, 0x0a, 0x79, 0x6f, 0x64,
0x65, 0x6c, 0x0a, 0x79, 0x6f, 0x67, 0x61, 0x0a, 0x79, 0x6f, 0x79, 0x6f,
0x0a, 0x79, 0x75, 0x6d, 0x6d, 0x79, 0x0a, 0x7a, 0x65, 0x62, 0x72, 0x61,
0x0a, 0x7a, 0x65, 0x72, 0x6f, 0x0a, 0x7a, 0x65, 0x73, 0x74, 0x79, 0x0a,
0x7a, 0x69, 0x70, 0x70, 0x79, 0x0a, 0x7a, 0x6f, 0x6e, 0x65, 0x0a, 0x7a,
0x6f, 0x6f, 0x6d, 0x0a
};
unsigned int eff_short_wordlist_1_txt_len = 7180;

View File

@ -1,62 +1,182 @@
#include <cctype>
#include <cstdlib>
#include <format>
#include <functional>
#include <iostream>
#include <fstream>
#include <optional>
#include <ostream>
#include <random>
#include <string>
#include <sstream>
#include <vector>
#include "pcg_random.hpp"
#include "eff_large_wordlist.txt.hpp"
#include "eff_short_wordlist_1.txt.hpp"
std::vector<std::string> readWordlist(std::string filePath)
enum WordlistType { WORDLIST_EFF_LARGE, WORDLIST_EFF_SHORT, WORDLIST_CUSTOM };
struct PassgenOptions {
bool help = false;
WordlistType wordlist_type = WORDLIST_EFF_LARGE;
int wordcount = 5;
bool camelcase = false;
std::string seperator = "-";
std::optional<std::string> wordlist_path;
std::optional<std::string> outfile;
};
typedef std::function<void(PassgenOptions&)> NoArgHandle;
typedef std::function<void(PassgenOptions&, const std::string&)> OneArgHandle;
const std::unordered_map<std::string, NoArgHandle> NoArgs {
{"-h", [](PassgenOptions& s) { s.help = true; }},
{"--help", [](PassgenOptions& s) { s.help = true; }},
{"-s", [](PassgenOptions& s) { s.wordlist_type = WORDLIST_EFF_SHORT; }},
{"--short", [](PassgenOptions& s) { s.wordlist_type = WORDLIST_EFF_SHORT; }},
{"-l", [](PassgenOptions& s) { s.wordlist_type = WORDLIST_EFF_LARGE; }},
{"--large", [](PassgenOptions& s) { s.wordlist_type = WORDLIST_EFF_LARGE; }},
{"--camelcase", [](PassgenOptions& s) { s.camelcase = true; }},
{"-cc", [](PassgenOptions& s) { s.camelcase = true; }},
};
const std::unordered_map<std::string, OneArgHandle> OneArgs {
{"-p", [](PassgenOptions& s, const std::string& arg) {
s.wordlist_path = arg;
s.wordlist_type = WORDLIST_CUSTOM;
}},
{"--path", [](PassgenOptions& s, const std::string& arg) {
s.wordlist_path = arg;
s.wordlist_type = WORDLIST_CUSTOM;
}},
{"-wc", [](PassgenOptions& s, const std::string& arg) {
s.wordcount = std::stoi(arg);
}},
{"--wordcount", [](PassgenOptions& s, const std::string& arg) {
s.wordcount = std::stoi(arg);
}},
{"--seperator", [](PassgenOptions& s, const std::string& arg) {
s.seperator = arg;
}},
};
PassgenOptions parse_options(int argc, const char* argv[]) {
PassgenOptions settings;
for(int i = 1; i < argc; i++) {
std::string opt = argv[i];
if (auto j = NoArgs.find(opt); j != NoArgs.end()) {
j->second(settings);
} else if(auto k = OneArgs.find(opt); k != OneArgs.end()) {
if(++i < argc) {
k->second(settings, {argv[i]});
} else {
throw std::runtime_error {"missing param after " + opt};
exit(1);
}
} else {
std::cerr << "unrecognized command-line option " << opt << std::endl;
exit(1);
}
}
return settings;
}
std::vector<std::string> getWordlist(PassgenOptions opts)
{
std::vector<std::string> map;
std::ifstream file(filePath);
if (file.is_open()) {
if (opts.wordlist_type == WORDLIST_EFF_LARGE)
{
std::stringstream ss;
ss.write(reinterpret_cast<const char*>(eff_large_wordlist_txt), eff_large_wordlist_txt_len);
std::string line;
while (std::getline(file, line)) {
while (std::getline(ss, line)) {
map.push_back(line);
}
} else {
std::cout << std::format("ERROR: failed to open '{}'\n", filePath);
}
else if (opts.wordlist_type == WORDLIST_EFF_SHORT)
{
std::stringstream ss;
ss.write(reinterpret_cast<const char*>(eff_short_wordlist_1_txt), eff_short_wordlist_1_txt_len);
std::string line;
while (std::getline(ss, line)) {
map.push_back(line);
}
}
else if (opts.wordlist_type == WORDLIST_CUSTOM && opts.wordlist_path.has_value())
{
std::string path = opts.wordlist_path.value();
std::ifstream file(path);
if (file.is_open()) {
std::string line;
while (std::getline(file, line)) {
map.push_back(line);
}
} else {
std::cout << std::format("ERROR: failed to open '{}'\n", path);
}
}
return map;
}
int main(int argc, char *argv[]) {
std::string path;
int count;
int main(int argc, const char *argv[]) {
PassgenOptions opts = parse_options(argc, argv);
if (argc == 3) {
path = argv[1];
count = atoi(argv[2]);
} else if (argc == 1) {
path = "eff_large_wordlist.txt";
count = 5;
} else {
std::cout << "usage: passgen <wordlist_path> <wordcount>\n";
return 1;
if (opts.help) {
std::cout << R"(
Usage: passgen [options]
Options:
-h, --help Display this help message and exit
-s, --short Use the short EFF wordlist
-l, --large Use the large EFF wordlist (dfault)
--camelcase, -cc Generate passphrase in CamelCase format
-p <path>, --path <path>
Use a custom wordlist file located at <path>
-wc <count>, --wordcount <count>
Amount of words to use for passphrase
--separator <seperator> Specify a character to use as a separator between words, default = `-`
Description:
Generate passphrases based on wordlists.
Examples:
passgen -h
passgen --short 4
passgen -p /path/to/custom_wordlist.txt --wordcount 4
)";
return 0;
}
std::vector<std::string> wordlist = readWordlist(path);
std::vector<std::string> wordlist = getWordlist(opts);
if (wordlist.size() == 0) {
std::cerr << "Wordlist is empty";
return 1;
}
pcg_extras::seed_seq_from<std::random_device> seed_source;
pcg32 rng(seed_source);
for (int i = 0; i < count; i++) {
for (int i = 0; i < opts.wordcount; i++) {
int random_int = std::uniform_int_distribution<int>(0, wordlist.size())(rng);
if (opts.camelcase) {
wordlist[random_int][0] = toupper(wordlist[random_int][0]);
}
std::cout << wordlist[random_int];
if (i+1 == count) {
if (i+1 == opts.wordcount) {
std::cout << "\n";
} else {
std::cout << "-";
std::cout << opts.seperator;
}
}
}