github to gitea

This commit is contained in:
Leo Firmin 2025-10-27 23:12:49 +01:00
parent cd1882c3cc
commit 0c0d28ab36
134 changed files with 9850 additions and 338 deletions

187
Makefile Normal file
View File

@ -0,0 +1,187 @@
CC = gcc
CFLAGS = -Wall -Wextra -Werror
NAME = cub3d
SRCDIR = srcs
INCDIR = includes
LIBFT = libft/libft.a
GNL = gnl/gnl.a
MLX_DIR = minilibx-linux
MLX = $(MLX_DIR)/libmlx_Linux.a
MLX_REPO = https://git.gasoff.ovh/lfirmin/mlx_42.git
# Flags pour MLX (Linux)
MLX_FLAGS = -lXext -lX11 -lm
# Couleurs
RED = \033[0;31m
GREEN = \033[0;32m
YELLOW = \033[0;33m
BLUE = \033[0;34m
MAGENTA = \033[0;35m
CYAN = \033[0;36m
WHITE = \033[0;37m
RESET = \033[0m
BOLD = \033[1m
SRCS = \
$(SRCDIR)/main.c \
$(SRCDIR)/parsing/parsing.c \
$(SRCDIR)/parsing/check_file.c \
$(SRCDIR)/parsing/init_parsing.c \
$(SRCDIR)/parsing/get_map.c \
$(SRCDIR)/parsing/get_map_2.c \
$(SRCDIR)/parsing/line_detect.c \
$(SRCDIR)/parsing/get_textures.c \
$(SRCDIR)/parsing/check_colors.c \
$(SRCDIR)/parsing/check_map.c \
$(SRCDIR)/parsing/check_map_2.c \
$(SRCDIR)/utils/init.c \
$(SRCDIR)/utils/utils.c \
$(SRCDIR)/exec/draw.c \
$(SRCDIR)/exec/hooks.c \
$(SRCDIR)/exec/image.c \
$(SRCDIR)/exec/init.c \
$(SRCDIR)/exec/loop.c \
$(SRCDIR)/exec/player.c \
$(SRCDIR)/exec/raycast.c \
$(SRCDIR)/exec/textures.c \
$(SRCDIR)/exec/world.c
# === Includes ===
INCS = \
$(INCDIR)/parsing.h \
$(INCDIR)/cub.h \
$(INCDIR)/exec.h \
$(INCDIR)/keys.h
# Animation de chargement
define loading_animation
@echo "$(1)"
@for i in 1 2 3 4 5 6 7 8 9 10; do \
printf "$(CYAN)["; \
for j in $$(seq 1 $$i); do printf "█"; done; \
for j in $$(seq $$i 9); do printf " "; done; \
printf "] $$(($$i * 10))%%$(RESET)\r"; \
sleep 0.1; \
done
@echo ""
endef
all:
@echo "$(BOLD)$(MAGENTA)"
@echo "╔════════════════════════════════════════╗"
@echo "║ 🎮 CUB3D BUILD 🎮 ║"
@echo "╚════════════════════════════════════════╝"
@echo "$(RESET)"
@$(MAKE) -s $(NAME)
$(MLX_DIR):
@echo "$(BOLD)$(CYAN)📦 Cloning MLX42...$(RESET)"
$(call loading_animation,$(YELLOW)⬇️ Downloading MLX42 library...)
@if [ ! -d "$(MLX_DIR)/.git" ]; then \
rm -rf $(MLX_DIR) > /dev/null 2>&1; \
git clone $(MLX_REPO) $(MLX_DIR) > /dev/null 2>&1; \
fi
@echo "$(GREEN)✅ MLX42 cloned successfully!$(RESET)"
@echo ""
$(MLX): $(MLX_DIR)
@echo "$(BOLD)$(BLUE)🔨 Building MLX42...$(RESET)"
$(call loading_animation,$(YELLOW)⚙️ Compiling MLX42...)
@$(MAKE) -s -C $(MLX_DIR) > /dev/null 2>&1
@echo "$(GREEN)✅ MLX42 built successfully!$(RESET)"
@echo ""
$(LIBFT):
@echo "$(BOLD)$(BLUE)📚 Building libft...$(RESET)"
@$(MAKE) -s -C libft > /dev/null 2>&1 & \
PID=$$!; \
for i in 1 2 3 4 5 6 7 8 9 10; do \
printf "$(CYAN)["; \
for j in $$(seq 1 $$i); do printf "█"; done; \
for j in $$(seq $$i 9); do printf " "; done; \
printf "] $$(($$i * 10))%%$(RESET)\r"; \
sleep 0.1; \
done; \
wait $$PID; \
echo ""
@echo ""
$(GNL):
@echo "$(BOLD)$(BLUE)📚 Building gnl...$(RESET)"
@$(MAKE) -s -C gnl > /dev/null 2>&1 & \
PID=$$!; \
for i in 1 2 3 4 5 6 7 8 9 10; do \
printf "$(CYAN)["; \
for j in $$(seq 1 $$i); do printf "█"; done; \
for j in $$(seq $$i 9); do printf " "; done; \
printf "] $$(($$i * 10))%%$(RESET)\r"; \
sleep 0.1; \
done; \
wait $$PID; \
echo ""
@echo ""
$(NAME): $(MLX) $(LIBFT) $(GNL) $(SRCS) $(INCS)
@echo "$(BOLD)$(BLUE)🎯 Building $(NAME)...$(RESET)"
$(call loading_animation,$(YELLOW)🚀 Compiling main executable...)
@$(CC) -g -I$(INCDIR) -I$(MLX_DIR)/include $(SRCS) -o $(NAME) $(LIBFT) $(GNL) $(MLX) $(MLX_FLAGS)
@echo "$(BOLD)$(GREEN)"
@echo "╔════════════════════════════════════════╗"
@echo "║ 🎉 BUILD SUCCESSFUL! 🎉 ║"
@echo "║ ║"
@echo "║ Your $(NAME) is ready to use! 🚀 ║"
@echo "╚════════════════════════════════════════╝"
@echo "$(RESET)"
clean:
@echo "$(BOLD)$(YELLOW)"
@echo "╔════════════════════════════════════════╗"
@echo "║ 🧹 CLEANING UP 🧹 ║"
@echo "╚════════════════════════════════════════╝"
@echo "$(RESET)"
$(call loading_animation,$(YELLOW)🗑️ Cleaning object files...)
@rm -f $(NAME)
@make clean -s -C libft > /dev/null 2>&1
@make clean -s -C gnl > /dev/null 2>&1
@if [ -d "$(MLX_DIR)" ]; then make clean -s -C $(MLX_DIR) > /dev/null 2>&1; fi
@echo "$(GREEN)✅ Clean completed!$(RESET)"
clean1:
@echo "$(CYAN)🗑️ Removing executable...$(RESET)"
@rm -f $(NAME)
@echo "$(GREEN)✅ Executable removed!$(RESET)"
fclean:
@echo "$(BOLD)$(RED)"
@echo "╔════════════════════════════════════════╗"
@echo "║ 💣 DEEP CLEAN 💣 ║"
@echo "╚════════════════════════════════════════╝"
@echo "$(RESET)"
@$(MAKE) -s clean1
$(call loading_animation,$(RED)🔥 Full cleanup in progress...)
@make fclean -s -C libft > /dev/null 2>&1
@make fclean -s -C gnl > /dev/null 2>&1
@if [ -d "$(MLX_DIR)/minilibx-linux" ]; then make fclean -s -C $(MLX_DIR)/minilibx-linux > /dev/null 2>&1; fi
@rm -rf $(MLX_DIR)
@echo ""
@echo "$(BOLD)$(GREEN)"
@echo "╔════════════════════════════════════════╗"
@echo "║ ✨ DEEP CLEAN COMPLETE! ✨ ║"
@echo "║ ║"
@echo "║ All files have been removed! 🗑️ ║"
@echo "╚════════════════════════════════════════╝"
@echo "$(RESET)"
re:
@echo "$(BOLD)$(MAGENTA)"
@echo "╔════════════════════════════════════════╗"
@echo "║ 🔄 REBUILDING 🔄 ║"
@echo "╚════════════════════════════════════════╝"
@echo "$(RESET)"
@$(MAKE) -s fclean
@echo ""
@$(MAKE) -s all
.PHONY: all clean fclean re clean1

901
assets/bookshelf.xpm Normal file
View File

@ -0,0 +1,901 @@
/* XPM */
static char * bookshelf_xpm[] = {
"64 64 834 2",
" c #9E7449",
". c #9D7348",
"+ c #865E35",
"@ c #9C7248",
"# c #885F37",
"$ c #764D25",
"% c #8C633B",
"& c #774E26",
"* c #784F27",
"= c #855C33",
"- c #754C24",
"; c #8B633A",
"> c #744C24",
", c #744B24",
"' c #734B24",
") c #976D43",
"! c #684321",
"~ c #603E1F",
"{ c #5F3E1F",
"] c #593A1E",
"^ c #58391E",
"/ c #55371E",
"( c #52351D",
"_ c #51351D",
": c #4B311C",
"< c #4D311C",
"[ c #482F1B",
"} c #452D1A",
"| c #453335",
"1 c #46508E",
"2 c #47549A",
"3 c #425095",
"4 c #3C4B8D",
"5 c #493B48",
"6 c #9B7247",
"7 c #986E44",
"8 c #412A1A",
"9 c #572C1D",
"0 c #A1302C",
"a c #A7312D",
"b c #A8312D",
"c c #AE322F",
"d c #AA312E",
"e c #9A2620",
"f c #97261F",
"g c #502A1A",
"h c #435298",
"i c #456CD0",
"j c #456CD1",
"k c #466ED2",
"l c #3B66CA",
"m c #2D5FC2",
"n c #3F4F90",
"o c #9B7248",
"p c #58391D",
"q c #402A19",
"r c #3F2C1C",
"s c #3F2F21",
"t c #3F3024",
"u c #3F2D1D",
"v c #A4302C",
"w c #DC363A",
"x c #DB3539",
"y c #CA2124",
"z c #C92023",
"A c #97251E",
"B c #472B1F",
"C c #532D2A",
"D c #5F3032",
"E c #7F3848",
"F c #6A3136",
"G c #512C26",
"H c #47539B",
"I c #598BDE",
"J c #4270CE",
"K c #3D5195",
"L c #9B7249",
"M c #534C3E",
"N c #2C6C70",
"O c #217377",
"P c #157D82",
"Q c #0F8389",
"R c #108288",
"S c #1B6D69",
"T c #296059",
"U c #37483F",
"V c #3F2918",
"W c #4A321A",
"X c #7B5A23",
"Y c #A87E2B",
"Z c #AC812C",
"` c #A47724",
" . c #785218",
".. c #A9352D",
"+. c #99251E",
"@. c #A84166",
"#. c #F05698",
"$. c #F15798",
"%. c #F25799",
"&. c #F25798",
"*. c #E54A87",
"=. c #E14782",
"-. c #9A5AAA",
";. c #598CDE",
">. c #5A8CDF",
",. c #3B559E",
"'. c #9B724B",
"). c #4B7271",
"!. c #01919A",
"~. c #019199",
"{. c #028382",
"]. c #027D78",
"^. c #2B5E58",
"/. c #3E2818",
"(. c #402A18",
"_. c #AF842D",
":. c #E1AB38",
"<. c #E4AD39",
"[. c #DAA02C",
"}. c #CE9119",
"|. c #D46E2D",
"1. c #E03B40",
"2. c #E44247",
"3. c #DE3A3E",
"4. c #98241E",
"5. c #B84572",
"6. c #F5589B",
"7. c #F55A9E",
"8. c #F666AA",
"9. c #F661A4",
"0. c #E94B89",
"a. c #E64885",
"b. c #AE5CB0",
"c. c #4B7372",
"d. c #2A5E58",
"e. c #3D2817",
"f. c #422C18",
"g. c #BB8D30",
"h. c #D09219",
"i. c #D6702D",
"j. c #E23F44",
"k. c #E7464C",
"l. c #DF3C41",
"m. c #982624",
"n. c #3B3033",
"o. c #3C2B24",
"p. c #3E2B1F",
"q. c #F65DA0",
"r. c #F872B8",
"s. c #F769AE",
"t. c #0198A0",
"u. c #01A6AD",
"v. c #019AA2",
"w. c #2B5F59",
"x. c #5A4E47",
"y. c #7F766F",
"z. c #6A5E57",
"A. c #C0923A",
"B. c #E7B841",
"C. c #E9BC43",
"D. c #E9BD44",
"E. c #DBA12D",
"F. c #935682",
"G. c #0781CA",
"H. c #0680C8",
"I. c #1E6196",
"J. c #3B2920",
"K. c #3C2717",
"L. c #3F322E",
"M. c #7C9FBB",
"N. c #7EA1BE",
"O. c #698197",
"P. c #B94B78",
"Q. c #F65CA0",
"R. c #3B559F",
"S. c #547573",
"T. c #019BA2",
"U. c #01B1B7",
"V. c #01A2A9",
"W. c #456C68",
"X. c #F5F6F6",
"Y. c #FBFBFB",
"Z. c #E7EDF8",
"`. c #E0C7A8",
" + c #E4AE3A",
".+ c #EBC248",
"++ c #ECC64A",
"@+ c #ECC549",
"#+ c #DBA22D",
"$+ c #C72126",
"%+ c #73669F",
"&+ c #0084CF",
"*+ c #0082CC",
"=+ c #0A70B1",
"-+ c #392C2B",
";+ c #3B2616",
">+ c #525962",
",+ c #97CAF1",
"'+ c #99CDF5",
")+ c #8DBCE2",
"!+ c #C687B6",
"~+ c #F55A9D",
"{+ c #395AAC",
"]+ c #9B734E",
"^+ c #466D68",
"/+ c #F9FAFA",
"(+ c #FEFFFF",
"_+ c #EAF1FD",
":+ c #E1CDBD",
"<+ c #ECC54A",
"[+ c #DCA430",
"}+ c #71679F",
"|+ c #0674B9",
"1+ c #382C2F",
"2+ c #3A2516",
"3+ c #3A2517",
"4+ c #7698B4",
"5+ c #A0D0F5",
"6+ c #A3D1F5",
"7+ c #84AED4",
"8+ c #BE648E",
"9+ c #F5599C",
"0+ c #52736E",
"a+ c #FAFBFA",
"b+ c #DCA530",
"c+ c #E03D42",
"d+ c #372B2F",
"e+ c #392415",
"f+ c #3E3533",
"g+ c #8FBCDF",
"h+ c #ABD5F7",
"i+ c #A5CDEE",
"j+ c #7BA0C2",
"k+ c #F76AAF",
"l+ c #5C7973",
"m+ c #FAFBFB",
"n+ c #EBC247",
"o+ c #E13E43",
"p+ c #0574B9",
"q+ c #362B2F",
"r+ c #372415",
"s+ c #596878",
"t+ c #99CBF2",
"u+ c #B5DAF8",
"v+ c #94BFE3",
"w+ c #66809B",
"x+ c #B74472",
"y+ c #F76CB1",
"z+ c #E94B8A",
"A+ c #5B7973",
"B+ c #E4AE39",
"C+ c #EAC046",
"D+ c #352A2E",
"E+ c #362314",
"F+ c #372417",
"G+ c #779AB7",
"H+ c #A2D1F6",
"I+ c #B3D8F6",
"J+ c #84ADD2",
"K+ c #4A4E58",
"L+ c #0198A1",
"M+ c #5A7973",
"N+ c #008ED3",
"O+ c #008DD0",
"P+ c #34292E",
"Q+ c #352214",
"R+ c #3D3738",
"S+ c #93C3E9",
"T+ c #ACD6F7",
"U+ c #A3CCEC",
"V+ c #7A9FC0",
"W+ c #392E2C",
"X+ c #B74372",
"Y+ c #01969F",
"Z+ c #557F7A",
"`+ c #DCA631",
" @ c #0098D6",
".@ c #0096D3",
"+@ c #33292E",
"@@ c #342113",
"#@ c #5C6E80",
"$@ c #99CCF2",
"%@ c #B5DAF7",
"&@ c #92BDE1",
"*@ c #657F9A",
"=@ c #352114",
"-@ c #3959AC",
";@ c #54807B",
">@ c #EABF45",
",@ c #32282D",
"'@ c #332012",
")@ c #342318",
"!@ c #799DBA",
"~@ c #A4D2F6",
"{@ c #B2D8F6",
"]@ c #83ACD1",
"^@ c #474A53",
"/@ c #F76DB2",
"(@ c #E94C8A",
"_@ c #53807B",
":@ c #0474B9",
"<@ c #31272D",
"[@ c #321F12",
"}@ c #3B373A",
"|@ c #94C6EC",
"1@ c #A2CAEB",
"2@ c #799DBE",
"3@ c #362C2A",
"4@ c #F76FB4",
"5@ c #3859AC",
"6@ c #4C7974",
"7@ c #DF3B40",
"8@ c #E34046",
"9@ c #0097D4",
"0@ c #30272D",
"a@ c #311E11",
"b@ c #627B90",
"c@ c #9ACCF3",
"d@ c #91BBE0",
"e@ c #637E99",
"f@ c #311E12",
"g@ c #B74272",
"h@ c #F871B7",
"i@ c #F76EB3",
"j@ c #01B0B6",
"k@ c #3F706B",
"l@ c #009AD5",
"m@ c #0475B9",
"n@ c #2F262D",
"o@ c #32221A",
"p@ c #7BA0BE",
"q@ c #A5D2F6",
"r@ c #B1D8F6",
"s@ c #42434B",
"t@ c #301E10",
"u@ c #B74271",
"v@ c #E84B89",
"w@ c #01939B",
"x@ c #3F6F6B",
"y@ c #2E262D",
"z@ c #3A383D",
"A@ c #96C8EF",
"B@ c #A2C9E9",
"C@ c #769ABA",
"D@ c #332827",
"E@ c #2F1D10",
"F@ c #F5589A",
"G@ c #3E5EAF",
"H@ c #9B734F",
"I@ c #008FD1",
"J@ c #2D252D",
"K@ c #647E94",
"L@ c #98CCF3",
"M@ c #9DCFF5",
"N@ c #8DB9DE",
"O@ c #617B95",
"P@ c #2E1C10",
"Q@ c #2E1C0F",
"R@ c #B64271",
"S@ c #4462B2",
"T@ c #9C7350",
"U@ c #3E6F6B",
"V@ c #72679F",
"W@ c #2E2A32",
"X@ c #7CA3C1",
"Y@ c #98CBF3",
"Z@ c #81AAD0",
"`@ c #3C3C43",
" # c #2D1B0F",
".# c #3A66CA",
"+# c #C82024",
"@# c #8A639B",
"## c #0374B9",
"$# c #373D4A",
"%# c #8FBFE6",
"&# c #7193B2",
"*# c #2F2421",
"=# c #2B1A0E",
"-# c #4462B1",
";# c #9C734F",
"># c #936299",
",# c #65849E",
"'# c #98CCF4",
")# c #99CCF4",
"!# c #88B5DC",
"~# c #5E7790",
"{# c #2A190E",
"]# c #B64171",
"^# c #4F64A9",
"/# c #9C744E",
"(# c #3E6F6A",
"_# c #0E76BB",
":# c #7EA7C9",
"<# c #97CAF2",
"[# c #80AACF",
"}# c #35343A",
"|# c #29190D",
"1# c #5465A6",
"2# c #9C744D",
"3# c #1979BD",
"4# c #8BB9DE",
"5# c #8EBEE5",
"6# c #6E8EAC",
"7# c #2B201D",
"8# c #28180D",
"9# c #29180D",
"0# c #B54271",
"a# c #F4589A",
"b# c #F3599A",
"c# c #F35899",
"d# c #E74C87",
"e# c #E44A83",
"f# c #AE5DAE",
"g# c #496CCE",
"h# c #4B6CCE",
"i# c #4B6CCD",
"j# c #4366C6",
"k# c #3860BF",
"l# c #5966A3",
"m# c #597571",
"n# c #209098",
"o# c #209097",
"p# c #208280",
"q# c #247C74",
"r# c #4A6E64",
"s# c #ECE7E3",
"t# c #F0EBE7",
"u# c #DCDADD",
"v# c #D0B7A0",
"w# c #D29F3E",
"x# c #CF9C3F",
"y# c #CC9940",
"z# c #C59038",
"A# c #BE8730",
"B# c #BF743A",
"C# c #C05B42",
"D# c #B6573A",
"E# c #B5573A",
"F# c #996C7A",
"G# c #737C9F",
"H# c #737B9D",
"I# c #73748F",
"J# c #795E4B",
"K# c #82726B",
"L# c #949AA8",
"M# c #84797A",
"N# c #765535",
"O# c #795736",
"P# c #7B5937",
"Q# c #A46258",
"R# c #C36A6F",
"S# c #BE6B69",
"T# c #B86D63",
"U# c #B06C59",
"V# c #AA6E54",
"W# c #9F705C",
"X# c #927364",
"Y# c #997359",
"Z# c #9C7455",
"`# c #9B7354",
" $ c #9B7353",
".$ c #8C633A",
"+$ c #845B33",
"@$ c #9A734A",
"#$ c #9B754F",
"$$ c #9B754E",
"%$ c #9B754C",
"&$ c #9B744B",
"*$ c #9C744A",
"=$ c #A27A54",
"-$ c #A27B55",
";$ c #A17952",
">$ c #A0764C",
",$ c #A07549",
"'$ c #9F7549",
")$ c #9F7449",
"!$ c #91683E",
"~$ c #8A6139",
"{$ c #8F663C",
"]$ c #8F663D",
"^$ c #92693F",
"/$ c #946A40",
"($ c #966C42",
"_$ c #7F562E",
":$ c #90663D",
"<$ c #6E4823",
"[$ c #6E4723",
"}$ c #6B4622",
"|$ c #694421",
"1$ c #654221",
"2$ c #644121",
"3$ c #734E2C",
"4$ c #9C7247",
"5$ c #634020",
"6$ c #4A311C",
"7$ c #452D1B",
"8$ c #442D1A",
"9$ c #432C1A",
"0$ c #432F2F",
"a$ c #434C85",
"b$ c #44539A",
"c$ c #415197",
"d$ c #394B8E",
"e$ c #3E3955",
"f$ c #422C1B",
"g$ c #422C1A",
"h$ c #7A5837",
"i$ c #412B1A",
"j$ c #412D20",
"k$ c #3F3336",
"l$ c #34495F",
"m$ c #2E5D8A",
"n$ c #2D6499",
"o$ c #2D6397",
"p$ c #305071",
"q$ c #3A3A44",
"r$ c #402E27",
"s$ c #435297",
"t$ c #466DD1",
"u$ c #3F69CD",
"v$ c #2E5FC2",
"w$ c #3157AA",
"x$ c #492E2A",
"y$ c #5A2C1E",
"z$ c #822F26",
"A$ c #9B302B",
"B$ c #A2302C",
"C$ c #7A281E",
"D$ c #562A1B",
"E$ c #7C5937",
"F$ c #3F3023",
"G$ c #393F37",
"H$ c #334C47",
"I$ c #3C3629",
"J$ c #402A1A",
"K$ c #422D1D",
"L$ c #54473F",
"M$ c #564841",
"N$ c #6C5F57",
"O$ c #827871",
"P$ c #827870",
"Q$ c #635751",
"R$ c #50433F",
"S$ c #47352C",
"T$ c #30577E",
"U$ c #0881CA",
"V$ c #0283CC",
"W$ c #0084CE",
"X$ c #017BC2",
"Y$ c #2D5988",
"Z$ c #43539A",
"`$ c #4870D3",
" % c #5585DC",
".% c #406ACE",
"+% c #2F5BB7",
"@% c #A3333B",
"#% c #D83639",
"$% c #DA363A",
"%% c #DB363A",
"&% c #C82124",
"*% c #C42123",
"=% c #9B5739",
"-% c #5F3D1F",
";% c #3E2D1F",
">% c #1C797E",
",% c #069098",
"'% c #03969D",
")% c #0C7A76",
"!% c #3A3629",
"~% c #857D78",
"{% c #F7F7F7",
"]% c #FAFAFA",
"^% c #FBFCFB",
"/% c #EBF0F9",
"(% c #D9E3F7",
"_% c #9FA2AE",
":% c #522C29",
"<% c #5D2F30",
"[% c #733540",
"}% c #753541",
"|% c #5A2D2B",
"1% c #4D2B23",
"2% c #007CC3",
"3% c #0076BC",
"4% c #2C5A8A",
"5% c #42539A",
"6% c #4871D3",
"7% c #2E5DBE",
"8% c #A6333E",
"9% c #DE383D",
"0% c #C82023",
"a% c #AD5739",
"b% c #5E3D1F",
"c% c #3D2F23",
"d% c #0E8389",
"e% c #01AFB5",
"f% c #067E7A",
"g% c #36392D",
"h% c #B3B0AE",
"i% c #FDFEFE",
"j% c #EEF4FE",
"k% c #DDE8FC",
"l% c #B9AEC0",
"m% c #ED5696",
"n% c #F15698",
"o% c #E34884",
"p% c #D8457C",
"q% c #3F649A",
"r% c #0092D4",
"s% c #0095D5",
"t% c #007DC4",
"u% c #2B5A8A",
"v% c #DF3B3F",
"w% c #E6454B",
"x% c #5E3D1E",
"y% c #3C2E22",
"z% c #01A3AA",
"A% c #057E7A",
"B% c #333F33",
"C% c #BFBDBC",
"D% c #C3B0C3",
"E% c #F4579A",
"F% c #E74986",
"G% c #E24783",
"H% c #42649B",
"I% c #0086D0",
"J% c #00A7DC",
"K% c #00A9DD",
"L% c #007EC4",
"M% c #2A598A",
"N% c #46352A",
"O% c #53463F",
"P% c #50433E",
"Q% c #44549B",
"R% c #3A2D22",
"S% c #047E7A",
"T% c #2F443A",
"U% c #BEBDBC",
"V% c #DAB8D3",
"W% c #F4599B",
"X% c #41649B",
"Y% c #00A8DC",
"Z% c #376492",
"`% c #D4D3D2",
" & c #E9EEF7",
".& c #8D9BCD",
"+& c #A6323E",
"@& c #5D3C1E",
"#& c #392D22",
"$& c #2E4339",
"%& c #E6BCDB",
"&& c #F55A9C",
"*& c #41649A",
"=& c #416D99",
"-& c #F9FAFB",
";& c #A8B8E8",
">& c #A5323D",
",& c #DF3A3F",
"'& c #5F3E1E",
")& c #392A15",
"!& c #382F15",
"~& c #372F21",
"{& c #0D8389",
"]& c #2D4339",
"^& c #40649A",
"/& c #416C98",
"(& c #DE393D",
"_& c #613F1F",
":& c #325112",
"<& c #187A0B",
"[& c #0D8B08",
"}& c #0D8A08",
"|& c #116918",
"1& c #058888",
"2& c #2D4239",
"3& c #E24782",
"4& c #406C98",
"5& c #286A0F",
"6& c #088E07",
"7& c #099A08",
"8& c #089807",
"9& c #007715",
"0& c #018D87",
"a& c #2C4238",
"b& c #E6C0DE",
"c& c #F55B9D",
"d& c #F663A7",
"e& c #F666AB",
"f& c #F664A8",
"g& c #E74987",
"h& c #40639A",
"i& c #2D5DBE",
"j& c #A5313D",
"k& c #613E1E",
"l& c #276A0F",
"m& c #09A408",
"n& c #099F08",
"o& c #037E7A",
"p& c #2B4138",
"q& c #E4C6E4",
"r& c #F55C9D",
"s& c #F873B9",
"t& c #F76EB4",
"u& c #E74A87",
"v& c #3F639A",
"w& c #E6444A",
"x& c #603E1E",
"y& c #276A0E",
"z& c #2A4138",
"A& c #E4C7E4",
"B& c #00A8DD",
"C& c #DC373B",
"D& c #266A0E",
"E& c #2A4038",
"F& c #F55B9E",
"G& c #0085CF",
"H& c #0089D1",
"I& c #3D709F",
"J& c #F9FBFB",
"K& c #476FD3",
"L& c #A5303D",
"M& c #294037",
"N& c #3E639A",
"O& c #3D71A1",
"P& c #588BDE",
"Q& c #65411F",
"R& c #283F37",
"S& c #BDBDBC",
"T& c #F770B5",
"U& c #3C71A1",
"V& c #654120",
"W& c #256A0D",
"X& c #09A208",
"Y& c #273F37",
"Z& c #F772B7",
"`& c #E74A88",
" * c #3D639A",
".* c #A4303D",
"+* c #25690D",
"@* c #09A008",
"#* c #263F36",
"$* c #24690D",
"%* c #099D08",
"&* c #253E36",
"** c #B8B7B6",
"=* c #F771B6",
"-* c #3C70A1",
";* c #4F7CD8",
">* c #A42F3D",
",* c #64411F",
"'* c #23690C",
")* c #088F07",
"!* c #243E36",
"~* c #9C9895",
"{* c #FCFDFD",
"]* c #F65EA2",
"^* c #F55B9F",
"/* c #3C629A",
"(* c #A42F3C",
"_* c #C92123",
":* c #B05B3C",
"<* c #088D07",
"[* c #01929B",
"}* c #01929A",
"|* c #037C78",
"1* c #233E37",
"2* c #9A9694",
"3* c #3C70A0",
"4* c #AF5B3D",
"5* c #6B4521",
"6* c #24690C",
"7* c #019099",
"8* c #027D79",
"9* c #204B46",
"0* c #3B6299",
"a* c #1F4C46",
"b* c #999694",
"c* c #3C527C",
"d* c #0083CD",
"e* c #A42E3C",
"f* c #23690B",
"g* c #1E4C45",
"h* c #999693",
"i* c #3C517B",
"j* c #C82324",
"k* c #AB6140",
"l* c #22690B",
"m* c #007714",
"n* c #018D86",
"o* c #1D4C45",
"p* c #999593",
"q* c #3B507B",
"r* c #A32E3C",
"s* c #AA6140",
"t* c #79522B",
"u* c #756E34",
"v* c #738234",
"w* c #738134",
"x* c #737535",
"y* c #738066",
"z* c #73847A",
"A* c #738379",
"B* c #737964",
"C* c #756247",
"D* c #9B8675",
"E* c #D4C8BF",
"F* c #D5C9C1",
"G* c #CBC2C0",
"H* c #C1BABF",
"I* c #C5A4AE",
"J* c #CF697C",
"K* c #D0677B",
"L* c #CF677A",
"M* c #C7616D",
"N* c #C4616B",
"O* c #796465",
"P* c #737C9D",
"Q* c #737897",
"R* c #737591",
"S* c #7A727E",
"T* c #D2C6BE",
"U* c #A39BB0",
"V* c #7C70A0",
"W* c #7A6F9D",
"X* c #776A96",
"Y* c #776993",
"Z* c #A15943",
"`* c #A46B45",
" = c #825931",
".= c #9B7146",
"+= c #885F36",
"@= c #8A6138",
"#= c #8B623A",
"$= c #8B6239",
" . + ",
" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ # $ ",
" % & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & * = $ - ",
" ; - - - - - - - > > > > > > , , , , , , , , , , , , , ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' , # ) & - ",
" ; - ! ~ ~ ~ { ] ^ ^ ^ ^ ^ / ( ( ( ( ( _ : : : : : < [ } } } } } } } } } } } } } } } } } } } } } } } | 1 2 2 2 3 4 5 6 7 & - ",
" ; > ^ 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 0 a b c d e f g 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 h i j k k l m n o 7 & - ",
" ; > p q r s t t u q q q q q q q q q q q q v w w w w x y z A q q q q q q q q q q q q B C D E E E F G H j k I I J m K L 7 & - ",
" ; > M N O P Q R S T U V V V W X Y Z Z ` ...w w w w x y z +.V V V V V V V V V V V V @.#.$.%.%.&.*.=.-.j k ;.>.J m ,.'.7 & - ",
" ; > ).!.!.!.!.~.{.].^././.(._.:.<.<.<.[.}.|.w w 1.2.3.y z 4././././././././././././.5.6.6.7.8.9.0.a.b.j k ;.>.J m ,.'.7 & - ",
" ; > c.!.!.!.!.~.{.].d.e.e.f.g.<.<.<.<.[.h.i.w w j.k.l.y z m.n.n.o.e.e.e.e.e.e.p.p.e.5.6.6.q.r.s.0.a.b.j k ;.>.J m ,.'.7 & - ",
" ; > c.!.!.t.u.v.{.].w.x.y.z.A.<.B.C.D.E.h.i.w w j.k.l.y z F.G.H.I.J.K.K.K.K.L.M.N.O.P.6.6.Q.r.s.0.a.b.j k ;.>.J m R.'.7 & - ",
" ; - S.!.!.T.U.V.{.].W.X.Y.Z.`. +.+++@+#+h.i.w w j.k.l.y $+%+&+*+=+-+;+;+;+;+>+,+'+)+!+6.6.~+r.s.0.a.b.j k ;.>.J m {+]+7 & - ",
" ; - S.!.!.T.U.V.{.].^+/+(+_+:+ +.+++<+[+h.i.w w j.k.l.y $+}+&+*+|+1+2+2+2+3+4+5+6+7+8+6.6.9+r.s.0.a.b.j k ;.>.J m {+]+7 & - ",
" ; - S.!.!.T.U.V.{.].0+a+(+_+:+ +.+++<+b+h.i.w w j.k.c+y $+}+&+*+|+d+e+e+e+f+g+h+i+j+P.6.6.9+r.k+0.a.b.j k ;.>.J m {+]+7 & - ",
" ; - S.!.!.T.U.V.{.].l+m+(+_+:+ +n+++<+b+h.i.w w j.k.o+y $+}+&+*+p+q+r+r+r+s+t+u+v+w+x+6.6.9+r.y+z+a.b.j k ;.>.J m {+]+7 & - ",
" ; - S.!.!.T.U.V.{.].A+m+(+_+:+B+C+++<+b+h.i.w w j.k.o+y $+}+&+*+p+D+E+E+F+G+H+I+J+K+x+6.6.9+r.y+z+a.b.j k ;.>.J m {+]+7 & - ",
" ; - S.!.!.L+U.V.{.].M+m+(+_+:+B+C+++<+b+h.i.w w j.k.o+y $+}+N+O+p+P+Q+Q+R+S+T+U+V+W+X+6.6.9+r.y+z+a.b.j k ;.>.J m {+]+7 & - ",
" ; - S.!.!.Y+U.V.{.].Z+m+(+_+:+B+C+++<+`+h.i.w w j.k.o+y $+}+ @.@p++@@@@@#@$@%@&@*@=@X+6.6.9+r.y+z+a.b.j k ;.>.J m -@]+7 & - ",
" ; - S.!.!.Y+U.V.{.].;@m+(+_+:+B+>@@+n+`+h.i.w w j.k.o+y $+}+ @.@p+,@'@)@!@~@{@]@^@'@X+6.6.9+r./@(@a.b.j k ;.>.J m -@]+7 & - ",
" ; - S.!.!.Y+U.V.{.]._@m+(+_+:+<. + + +[.h.i.w w j.k.o+y $+}+ @.@:@<@[@}@|@T+1@2@3@[@X+6.6.9+r.4@(@a.b.j k ;.>.J m 5@]+7 & - ",
" ; - S.!.!.Y+U.V.{.].6@m+(+_+:+<.<.<.<.[.h.i.w w 7@8@3.y $+}+ @9@:@0@a@b@c@%@d@e@f@a@g@6.6.9+h@i@(@a.b.j k ;.>.J m 5@]+7 & - ",
" ; - S.!.!.Y+j@V.{.].k@/+(+_+:+<.<.<.<.[.h.i.w w w w x y $+}+ @l@m@n@o@p@q@r@]@s@t@t@u@6.6.6.9+9+v@a.b.j k ;.>.J m 5@]+7 & - ",
" ; - S.!.!.!.w@!.{.].x@/+(+_+:+<.<.<.<.[.h.i.w w w w x y $+}+ @l@m@y@z@A@T+B@C@D@E@E@u@6.6.6.6.F@v@a.b.j k I I J m G@H@7 & - ",
" ; - S.!.!.!.!.~.{.].x@/+(+_+:+<.<.<.<.[.h.i.w w w w x y $+}+N+I@m@J@K@L@M@N@O@P@Q@Q@R@6.6.6.6.F@v@a.b.j j k k l m S@T@7 & - ",
" ; - S.!.!.!.!.~.{.].U@/+(+_+:+<.<.<.<.[.h.i.w w w w x y $+V@&+*+:@W@X@'+Y@Z@`@ # # #R@6.6.6.6.F@v@a.b.j j j j .#m S@T@7 & - ",
" ; - S.!.!.!.!.~.{.].U@/+(+_+:+<.<.<.<.[.h.i.w w w w x y +#@#&+*+##$#A@'+%#&#*#=#=#=#R@6.6.6.6.F@v@a.b.j j j j .#m -#;#7 & - ",
" ; - S.!.!.!.!.~.{.].U@/+(+_+:+<.<.<.<.[.h.i.w w w w x y z >#&+*+##,#'#)#!#~#{#{#{#{#]#6.6.6.6.F@v@a.b.j j j j .#m ^#/#7 & - ",
" ; - S.!.!.!.!.~.{.].(#/+(+_+:+<.<.<.<.[.h.i.w w w w x y z >#&+*+_#:#'+<#[#}#|#|#|#|#]#6.6.6.6.F@v@a.b.j j j j .#m 1#2#7 & - ",
" ; - S.!.!.!.!.~.{.].(#/+(+_+:+<.<.<.<.[.h.i.w w w w x y z >#&+*+3#4#,+5#6#7#8#8#9#{#0#a#a#b#b#c#d#e#f#g#h#i#i#j#k#l#2#7 & - ",
" ; - m#n#n#n#n#o#p#q#r#s#t#u#v#w#w#x#y#z#A#B#C#C#C#C#C#D#E#F#G#H#I#J#K#L#M#N#N#N#O#P#Q#R#S#T#T#T#U#V#W#X#Y#Z#Z#`# $T@ 7 & - ",
" .$+$@$#$#$#$#$$$%$&$*$=$-$;$>$,$,$'$'$)$)$ 7 & - ",
" !$~$; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; .${$]$]$]$]$]$]$]$^$/$/$/$/$/$/$/$($7 7 7 7 7 7 7 7 @ . . . . . . . . . . . ) & - ",
" ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $ $ $ $ $ $ $ $ $ & & & & & & & & & & & & & & & & & & & _$:$& - ",
" ; - > , , ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' <$[$[$[$}$|$|$|$|$1$2$2$2$2$~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 3$4$7 & - ",
" ; - 5$: 6$7$} } } } } } } } } } } } } } } } } } } } } } 8$8$8$8$8$9$9$9$9$9$9$9$9$0$a$b$b$b$c$d$e$f$g$g$g$g$g$g$g$h$ 7 & - ",
" ; - { i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$j$k$l$m$n$o$p$q$r$i$i$i$s$i j j t$u$v$w$x$y$z$A$a B$C$D$E$ 7 & - ",
" ; - { q q q q q F$G$H$I$J$K$L$M$N$O$P$Q$R$S$q q q q q q q T$U$V$W$&+&+X$p+Y$q q q Z$j j `$ %.%v$+%@%#%$%%%w x &%*%=% 7 & - ",
" ; - -%V V V V ;%>%,%'%)%!%~%{%]%m+^%^%/%(%_%:%<%[%E }%|%1%n$&+&+&+&+&+2%3%4%V V V 5%j j 6%I .%v$7%8%w w 9%o+%%y 0%a% 7 & - ",
" ; - b%/./././.c%d%V.e%f%g%h%i%(+(+(+(+j%k%l%m%$.%.%.n%o%p%q%&+&+N+r%s%t%3%u%/././.5%j j 6%I .%v$7%8%w w v%w%w y z E# 7 & - ",
" ; - x%e.e.e.e.y%d%z%j@A%B%C%(+(+(+(+(+j%k%D%%.6.6.6.E%F%G%H%&+I%J%K%J%L%3%M%N%O%P%Q%j j 6%I .%v$7%8%w w v%w%w y z E# 7 & - ",
" ; - x%K.K.K.K.R%d%z%j@S%T%U%(+(+(+(+(+j%k%V%W%6.6.6.E%F%G%X%&+I%Y%K%Y%L%3%Z%`%/+ &.&j j 6%I .%v$7%+&w w v%w%w y z E# 7 & - ",
" ; - @&;+;+;+;+#&d%z%j@S%$&U%(+(+(+(+(+j%k%%&&&6.6.6.E%F%G%*&&+I%Y%K%Y%L%3%=&-&(+j%;&j j 6%I .%v$7%>&w w ,&w%w y z E# 7 & - ",
" ; - '&2+)&!&!&~&{&z%j@S%]&U%(+(+(+(+(+j%k%%&&&6.6.6.E%F%G%^&&+I%Y%K%Y%L%3%/&-&(+j%;&j j 6%I .%v$7%>&w w (&w%w y z E# 7 & - ",
" ; - _&:&<&[&}&|&1&z%j@S%2&U%(+(+(+(+(+j%k%%&&&6.6.6.E%F%3&^&&+I%Y%K%Y%L%3%4&-&(+j%;&j j 6%I .%v$7%>&w w (&w%w y z E# 7 & - ",
" ; - _&5&6&7&8&9&0&z%j@S%a&U%(+(+(+(+(+j%k%b&c&~+d&e&f&g&3&h&&+I%Y%K%Y%L%3%4&-&(+j%;&j j 6%I .%v$i&j&w w (&w%w y z E# 7 & - ",
" ; - k&l&6&m&n&9&0&z%j@o&p&U%(+(+(+(+(+j%k%q&r&q.r.s&t&u&3&v&&+I%Y%K%Y%L%3%4&-&(+j%;&j j 6%I .%v$i&j&w w (&w&w y z E# 7 & - ",
" ; - x&y&6&m&n&9&0&z%j@o&z&U%(+(+(+(+(+j%k%A&r&q.r.s&t&u&3&v&&+I%J%B&J%L%3%4&-&(+j%;&j j 6%I .%v$i&j&w w w C&x y z E# 7 & - ",
" ; - x&D&6&m&n&9&0&z%j@o&E&U%(+(+(+(+(+j%k%A&r&F&r.s&t&u&3&v&&+G&r%N+H&2%3%I&J&(+j%;&j j K&I .%v$i&L&w w w w x y z E# 7 & - ",
" ; - k&D&6&m&n&9&0&z%j@o&M&U%(+(+(+(+(+j%k%A&r&9+r.s&t&u&3&N&&+&+&+&+&+2%3%O&J&(+j%;&j j k P&.%v$i&L&w w w w x y z E# 7 & - ",
" ; - Q&D&6&m&n&9&0&z%j@o&R&S&(+(+(+(+(+j%k%A&r&9+r.s&T&u&3&N&&+&+&+&+&+2%3%U&J&(+j%;&j j k P&.%v$i&L&w w w w x y z E# 7 & - ",
" ; - V&W&6&X&n&9&0&z%j@o&Y&S&(+(+(+(+(+j%k%A&r&9+r.s&Z&`&3& *&+&+&+&+&+2%3%U&J&(+j%;&j j k P&.%v$i&.*w w w w x y z E# 7 & - ",
" ; - Q&+*6&@*n&9&0&z%j@o&#*S&(+(+(+(+(+j%k%A&r&9+r.s&Z&`&3& *&+&+&+&+&+2%3%U&J&(+j%;&j j k P&.%v$i&.*w w w w x y z E# 7 & - ",
" ; - Q&$*6&n&%*9&0&z%j@o&&***(+(+(+(+(+j%k%A&r&9+h@r.=*`&3& *&+&+&+&+&+2%3%-*J&(+j%;&j j t$;*.%v$i&>*w w w w x y z E# 7 & - ",
" ; - ,*'*6&)*6&9&0&V.e%o&!*~*{*(+(+(+(+j%k%A&r&6.]*^*9+F%3&/*&+&+&+&+&+2%3%-*J&(+j%;&j j j j u$v$i&(*w w w w x y _*:* 7 & - ",
" ; - ,*'*6&6&<*9&0&[*}*|*1*2*{*(+(+(+(+j%k%A&r&6.6.6.E%F%3&/*&+&+&+&+&+2%3%3*J&(+j%;&j j j j u$v$i&(*w w w w x y _*4* 7 & - ",
" ; - 5*6*6&6&<*9&0&!.7*8*9*2*{*(+(+(+(+j%k%A&r&6.6.6.E%F%3&0*&+&+&+&+&+2%3%3*J&(+j%;&j j j j u$v$i&(*w w w w x y _*4* 7 & - ",
" ; - 5*'*6&6&<*9&0&!.7*8*a*b*{*(+(+(+(+j%k%A&r&6.6.6.E%F%3&c*d*&+&+&+&+2%3%3*J&(+j%;&j j j j u$v$i&e*w w w w x y _*4* 7 & - ",
" ; - 5*f*6&6&<*9&0&!.7*8*g*h*{*(+(+(+(+j%k%A&r&6.6.6.E%F%3&i*d*&+&+&+&+2%3%3*J&(+j%;&j j j j u$v$i&e*w w w w x y j*k* 7 & - ",
" ; - 5*l*6&6&<*m*n*!.7*8*o*p*{*(+(+(+(+j%k%A&r&6.6.6.E%F%3&q*d*&+&+&+&+2%3%3*J&(+j%;&j j j j u$v$i&r*w w w w x y j*s* 7 & - ",
" ; - t*u*v*v*w*x*y*z*A*B*C*D*E*F*F*F*F*G*H*I*J*K*K*K*L*M*N*O*P*G#G#G#G#Q*R*S*T*F*G*U*V*V*V*V*W*X*Y*Z*C#C#C#C#C#D#E#`* 7 & - ",
" ; =.= 7 & - ",
" . +=@=#=; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; # $ - ",
". $=$ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ",
"+ $ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "};

686
assets/bookshelf_01.xpm Normal file
View File

@ -0,0 +1,686 @@
/* XPM */
static char * bookshelf_01_xpm[] = {
"64 64 619 2",
" c #9E7449",
". c #9D7348",
"+ c #835A32",
"@ c #9C7247",
"# c #845B33",
"$ c #754C24",
"% c #875E36",
"& c #774E26",
"* c #795028",
"= c #835A31",
"- c #865D35",
"; c #744C24",
"> c #744B24",
", c #734B24",
"' c #8F663C",
") c #634020",
"! c #603E1F",
"~ c #5F3E1F",
"{ c #593A1E",
"] c #58391E",
"^ c #55371E",
"/ c #52351D",
"( c #50351D",
"_ c #4B311C",
": c #462E1B",
"< c #452D1A",
"[ c #462D1B",
"} c #472D1B",
"| c #4B331E",
"1 c #9B7248",
"2 c #8F663D",
"3 c #4A301B",
"4 c #412A1A",
"5 c #412B1A",
"6 c #6B2D21",
"7 c #A5312D",
"8 c #A7312D",
"9 c #AA312E",
"0 c #AE322F",
"a c #A8312D",
"b c #9A2620",
"c c #8B271E",
"d c #452A1A",
"e c #48301D",
"f c #49301B",
"g c #402A19",
"h c #442A1A",
"i c #482A1A",
"j c #4A2A1B",
"k c #492A1A",
"l c #432A19",
"m c #B73332",
"n c #DC363A",
"o c #DB3539",
"p c #CA2124",
"q c #C52023",
"r c #54291A",
"s c #47301D",
"t c #7D3224",
"u c #A6302D",
"v c #B33230",
"w c #C03434",
"x c #C73435",
"y c #C33334",
"z c #A72623",
"A c #98251E",
"B c #66281A",
"C c #3F2918",
"D c #3F2A18",
"E c #393D16",
"F c #2F6012",
"G c #2D6B11",
"H c #2D6A11",
"I c #2D5410",
"J c #393616",
"K c #452A19",
"L c #B93332",
"M c #C62023",
"N c #5C281A",
"O c #462F1C",
"P c #A9352E",
"Q c #CC2427",
"R c #C92023",
"S c #97241E",
"T c #3E2818",
"U c #344515",
"V c #0E8A08",
"W c #098D07",
"X c #088E07",
"Y c #088D07",
"Z c #017600",
"` c #0B7102",
" . c #472F19",
".. c #C63435",
"+. c #E23F44",
"@. c #E44147",
"#. c #C72023",
"$. c #6A261B",
"%. c #462E1C",
"&. c #AA372E",
"*. c #98241E",
"=. c #3D2817",
"-. c #314B13",
";. c #0A8C07",
">. c #007600",
",. c #067301",
"'. c #462E18",
"). c #DC363B",
"!. c #E54348",
"~. c #E7454B",
"{. c #6C261A",
"]. c #442E1B",
"^. c #AC392E",
"/. c #E03C41",
"(. c #E34046",
"_. c #DE393D",
":. c #992823",
"<. c #5D514A",
"[. c #7F766F",
"}. c #605652",
"|. c #3E2A1D",
"1. c #3C2717",
"2. c #304A13",
"3. c #089707",
"4. c #09A108",
"5. c #09A408",
"6. c #089A07",
"7. c #452E18",
"8. c #E44247",
"9. c #6C251A",
"0. c #432D1B",
"a. c #AC382E",
"b. c #E7464C",
"c. c #B36A66",
"d. c #F6F7F7",
"e. c #FAFBFB",
"f. c #E0E8F5",
"g. c #6A6363",
"h. c #3B2616",
"i. c #2F4A13",
"j. c #09A008",
"k. c #0AB009",
"l. c #099F08",
"m. c #442D17",
"n. c #6C241A",
"o. c #432D1A",
"p. c #AB382E",
"q. c #E03D42",
"r. c #B97672",
"s. c #FBFCFB",
"t. c #FDFFFF",
"u. c #E4ECFA",
"v. c #736D6F",
"w. c #3A2516",
"x. c #2C5711",
"y. c #442C17",
"z. c #C82023",
"A. c #80231B",
"B. c #422C1A",
"C. c #E13E43",
"D. c #B97671",
"E. c #726D6F",
"F. c #392415",
"G. c #2A5910",
"H. c #099C08",
"I. c #432C16",
"J. c #412B19",
"K. c #B97571",
"L. c #736E70",
"M. c #372415",
"N. c #2A5810",
"O. c #057301",
"P. c #422B16",
"Q. c #C63335",
"R. c #80221A",
"S. c #402B19",
"T. c #B87571",
"U. c #E5EDFB",
"V. c #898A92",
"W. c #362314",
"X. c #295810",
"Y. c #09A308",
"Z. c #007700",
"`. c #412B15",
" + c #7F221A",
".+ c #442D1B",
"++ c #AE3C2F",
"@+ c #8A8B93",
"#+ c #352214",
"$+ c #2A4C10",
"%+ c #098C07",
"&+ c #402A15",
"*+ c #DC373B",
"=+ c #7F211A",
"-+ c #4A321E",
";+ c #9C7248",
">+ c #8A8A93",
",+ c #342113",
"'+ c #2A4710",
")+ c #099808",
"!+ c #0AAF09",
"~+ c #402914",
"{+ c #DD383C",
"]+ c #7F201A",
"^+ c #49311E",
"/+ c #332012",
"(+ c #29470F",
"_+ c #089708",
":+ c #0AAE09",
"<+ c #0AAC09",
"[+ c #3E2914",
"}+ c #C63334",
"|+ c #7F2019",
"1+ c #49311D",
"2+ c #B87471",
"3+ c #898A93",
"4+ c #321F12",
"5+ c #29460F",
"6+ c #089007",
"7+ c #088F07",
"8+ c #047301",
"9+ c #3B2813",
"0+ c #BE3233",
"a+ c #7E1F19",
"b+ c #4F3721",
"c+ c #B87470",
"d+ c #311E11",
"e+ c #28460F",
"f+ c #372712",
"g+ c #B63031",
"h+ c #DF3B40",
"i+ c #E23F45",
"j+ c #563B24",
"k+ c #9C7348",
"l+ c #E6454B",
"m+ c #B77470",
"n+ c #301E10",
"o+ c #27450E",
"p+ c #362711",
"q+ c #B63030",
"r+ c #553B24",
"s+ c #B24230",
"t+ c #B77370",
"u+ c #898992",
"v+ c #2F1D10",
"w+ c #26450E",
"x+ c #352611",
"y+ c #7D1E18",
"z+ c #888992",
"A+ c #2E1C0F",
"B+ c #25450D",
"C+ c #037301",
"D+ c #322A10",
"E+ c #5D4128",
"F+ c #2D1B0F",
"G+ c #24440D",
"H+ c #027300",
"I+ c #2F2F0E",
"J+ c #B53030",
"K+ c #7E1D18",
"L+ c #65482C",
"M+ c #878992",
"N+ c #2B1A0E",
"O+ c #23440D",
"P+ c #2E2E0E",
"Q+ c #B52F30",
"R+ c #951D1A",
"S+ c #64472B",
"T+ c #B67270",
"U+ c #878892",
"V+ c #2A190E",
"W+ c #22430C",
"X+ c #2D2D0E",
"Y+ c #961D1A",
"Z+ c #64472C",
"`+ c #B6726F",
" @ c #868891",
".@ c #29190D",
"+@ c #22420C",
"@@ c #2D2D0D",
"#@ c #961C1A",
"$@ c #735333",
"%@ c #28180D",
"&@ c #24330C",
"*@ c #0A8E07",
"=@ c #0B8D08",
"-@ c #037601",
";@ c #B43130",
">@ c #DB383A",
",@ c #DA393A",
"'@ c #DA393B",
")@ c #DA383A",
"!@ c #C92626",
"~@ c #C72825",
"{@ c #96251E",
"]@ c #342213",
"^@ c #785736",
"/@ c #B14532",
"(@ c #DA3A3B",
"_@ c #D93A3A",
":@ c #CA2B29",
"<@ c #C52D28",
"[@ c #B27068",
"}@ c #EDE8E4",
"|@ c #F0EBE7",
"1@ c #D8D7DB",
"2@ c #8A807D",
"3@ c #513822",
"4@ c #5C4127",
"5@ c #62462B",
"6@ c #63472B",
"7@ c #765535",
"8@ c #755A35",
"9@ c #738034",
"0@ c #738234",
"a@ c #758035",
"b@ c #777E36",
"c@ c #767535",
"d@ c #767435",
"e@ c #7F6039",
"f@ c #A06342",
"g@ c #B06545",
"h@ c #AA6A46",
"i@ c #A96C47",
"j@ c #A86B47",
"k@ c #A56944",
"l@ c #A07248",
"m@ c #9E7248",
"n@ c #875E35",
"o@ c #A17248",
"p@ c #9F744A",
"q@ c #A27B55",
"r@ c #A07952",
"s@ c #9D744B",
"t@ c #8B6239",
"u@ c #8B633A",
"v@ c #8C633A",
"w@ c #936940",
"x@ c #946A40",
"y@ c #966C42",
"z@ c #986E44",
"A@ c #996F44",
"B@ c #8F653C",
"C@ c #764D25",
"D@ c #774E27",
"E@ c #825931",
"F@ c #6E4823",
"G@ c #6E4723",
"H@ c #6B4622",
"I@ c #694421",
"J@ c #684421",
"K@ c #644121",
"L@ c #7A5530",
"M@ c #452D1B",
"N@ c #442D1A",
"O@ c #432C1A",
"P@ c #452C1B",
"Q@ c #4E2C1C",
"R@ c #512C1C",
"S@ c #4C2B1A",
"T@ c #432B1A",
"U@ c #7B5937",
"V@ c #402E27",
"W@ c #3E363A",
"X@ c #324D68",
"Y@ c #2E5D8A",
"Z@ c #2D6499",
"`@ c #2D6397",
" # c #314D6B",
".# c #3B373D",
"+# c #402E26",
"@# c #422B1A",
"## c #832E25",
"$# c #B23230",
"%# c #CF3537",
"&# c #D83639",
"*# c #D73538",
"=# c #BE2223",
"-# c #9D251F",
";# c #805837",
"># c #2E5F8F",
",# c #0682CB",
"'# c #0283CD",
")# c #0084CE",
"!# c #0084CF",
"~# c #0179C0",
"{# c #0574B9",
"]# c #2E5785",
"^# c #B33231",
"/# c #8E5838",
"(# c #5F3D1F",
"_# c #2C6499",
":# c #007AC1",
"<# c #0076BC",
"[# c #2C5A8A",
"}# c #452919",
"|# c #955738",
"1# c #5E3D1F",
"2# c #3D2E18",
"3# c #344B14",
"4# c #2D6412",
"5# c #2D6212",
"6# c #363C15",
"7# c #3E2918",
"8# c #2B6399",
"9# c #008FD3",
"0# c #0093D5",
"a# c #0095D5",
"b# c #007BC2",
"c# c #2B5A8A",
"d# c #442819",
"e# c #B83232",
"f# c #965738",
"g# c #5E3D1E",
"h# c #2C6911",
"i# c #0B8C07",
"j# c #077302",
"k# c #353814",
"l# c #542C2A",
"m# c #B2436E",
"n# c #B84572",
"o# c #B64370",
"p# c #AE3B62",
"q# c #8F344E",
"r# c #2E6399",
"s# c #0086D0",
"t# c #00A7DC",
"u# c #00A9DD",
"v# c #007CC2",
"w# c #2A598A",
"x# c #432818",
"y# c #A35739",
"z# c #2A6A10",
"A# c #0AA609",
"B# c #099E08",
"C# c #027501",
"D# c #2F4012",
"E# c #B54470",
"F# c #F5589B",
"G# c #F35698",
"H# c #E64986",
"I# c #E04782",
"J# c #41649A",
"K# c #00A8DC",
"L# c #29598A",
"M# c #412718",
"N# c #A45739",
"O# c #5D3C1E",
"P# c #0AAB09",
"Q# c #2E4011",
"R# c #B84472",
"S# c #E24783",
"T# c #28598A",
"U# c #412617",
"V# c #B83231",
"W# c #296A0F",
"X# c #2D4011",
"Y# c #40649A",
"Z# c #402517",
"`# c #E23E44",
" $ c #5D3C1D",
".$ c #286A0F",
"+$ c #2C4110",
"@$ c #E24782",
"#$ c #27598A",
"$$ c #3F2416",
"%$ c #B73131",
"&$ c #276A0F",
"*$ c #017501",
"=$ c #284B0E",
"-$ c #B74472",
";$ c #F65CA0",
">$ c #F663A7",
",$ c #F666AB",
"'$ c #F45FA2",
")$ c #40639A",
"!$ c #26598A",
"~$ c #3E2416",
"{$ c #B25739",
"]$ c #5C3B1D",
"^$ c #266A0E",
"/$ c #0AA808",
"($ c #274B0D",
"_$ c #F872B8",
":$ c #F873B9",
"<$ c #F567AB",
"[$ c #E74986",
"}$ c #3F639A",
"|$ c #25598A",
"1$ c #3C2315",
"2$ c #B5573A",
"3$ c #09A708",
"4$ c #264A0D",
"5$ c #B74372",
"6$ c #F661A5",
"7$ c #00A8DD",
"8$ c #00A6DC",
"9$ c #24588A",
"0$ c #3C2215",
"a$ c #C92123",
"b$ c #B2593B",
"c$ c #25690E",
"d$ c #352113",
"e$ c #F660A3",
"f$ c #0085CF",
"g$ c #0091D4",
"h$ c #008DD2",
"i$ c #0088D0",
"j$ c #007AC2",
"k$ c #3B2114",
"l$ c #E03C42",
"m$ c #AF5B3D",
"n$ c #5B3B1C",
"o$ c #25690D",
"p$ c #254A0C",
"q$ c #342012",
"r$ c #F569AD",
"s$ c #3E639A",
"t$ c #23588A",
"u$ c #3A2013",
"v$ c #B73031",
"w$ c #DE383D",
"x$ c #DE3A3E",
"y$ c #5B3A1C",
"z$ c #24690D",
"A$ c #244A0C",
"B$ c #F56AAE",
"C$ c #E74987",
"D$ c #22588A",
"E$ c #392013",
"F$ c #23690D",
"G$ c #09A608",
"H$ c #017500",
"I$ c #23490B",
"J$ c #B74272",
"K$ c #F65EA2",
"L$ c #3D639A",
"M$ c #21588A",
"N$ c #381F12",
"O$ c #C82224",
"P$ c #AC5F3F",
"Q$ c #22690C",
"R$ c #B74271",
"S$ c #F65DA0",
"T$ c #20588A",
"U$ c #371E12",
"V$ c #C82324",
"W$ c #AA6140",
"X$ c #5A3A1C",
"Y$ c #21690C",
"Z$ c #22490A",
"`$ c #F872B7",
" % c #361D11",
".% c #5C3B1C",
"+% c #21480A",
"@% c #B64271",
"#% c #F5599C",
"$% c #F55B9E",
"%% c #F35799",
"&% c #3C629A",
"*% c #1F578A",
"=% c #321C10",
"-% c #AD2E2E",
";% c #5E3C1D",
">% c #20480A",
",% c #1E578A",
"'% c #2F1B10",
")% c #AA2D2D",
"!% c #C82525",
"~% c #A56844",
"{% c #20690B",
"]% c #1F4809",
"^% c #2C1A0E",
"/% c #3B629A",
"(% c #1D578A",
"_% c #2E1A0F",
":% c #1F690B",
"<% c #1E4709",
"[% c #2A1A0E",
"}% c #1C578A",
"|% c #2D1A0F",
"1% c #AA2C2D",
"2% c #1E690B",
"3% c #1D4708",
"4% c #B54170",
"5% c #1B578A",
"6% c #2C190E",
"7% c #AA2C2C",
"8% c #1E690A",
"9% c #96375B",
"0% c #F3579A",
"a% c #3A629A",
"b% c #1A578A",
"c% c #2B180E",
"d% c #77512D",
"e% c #756E34",
"f% c #738134",
"g% c #737533",
"h% c #756134",
"i% c #995C52",
"j% c #CE677A",
"k% c #D0677B",
"l% c #CE6679",
"m% c #C7616D",
"n% c #C4616B",
"o% c #796B7A",
"p% c #737C9F",
"q% c #737C9E",
"r% c #737795",
"s% c #737591",
"t% c #74676F",
"u% c #A4593D",
"v% c #C05B42",
"w% c #B6573A",
"x% c #B4583A",
"y% c #9F7348",
"z% c #825A32",
"A% c #8A6138",
"B% c #865D34",
" . + ",
" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ # $ ",
" % & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & * = $ $ ",
" - $ $ $ $ $ $ $ ; ; ; ; ; ; > > > > > > > > > > > > , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ; ' ' $ $ ",
" - ; ) ! ! ! ~ { ] ] ] ] ] ^ / / / / / ( _ _ _ _ _ _ : < < < < < < < < < < < < < < < < < < < < < [ } [ < < < < < < | 1 2 $ $ ",
" - > 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 6 7 8 9 0 a b c d 4 4 4 e 1 2 $ $ ",
" - > f g h i j k l g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g d m n n n n o p q r g g g s 1 2 $ $ ",
" - > t u v w x y z A B C C C C C C C C C C C C C C C C C C C C C C C C C D E F G G H I J K L n n n n o p M N C C C O 1 2 $ $ ",
" - > P n n n n o Q R S T T T T T T T T T T T T T T T T T T T T T T T T T U V W X X Y Z ` ...n n +.@.n p #.$.T T T %.1 2 $ $ ",
" - > &.n n n n o Q R *.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.-.;.X X X Y >.,.'.x n ).!.~.n p #.{.=.=.=.].1 2 $ $ ",
" - > ^.n n /.(._.Q R :.<.[.}.|.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.;.3.4.5.6.>.,.7.x n n 8.~.n p #.9.1.1.1.0.1 2 $ $ ",
" - > a.n n +.b./.Q R c.d.e.f.g.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.i.;.j.k.k.l.>.,.m.x n n 8.~.n p #.n.h.h.h.o.1 2 $ $ ",
" - > p.n n +.b.q.Q R r.s.t.u.v.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.x.W j.k.k.l.>.,.y...n n 8.~.n p z.A.w.w.w.B.1 2 $ $ ",
" - > p.n n C.b.C.Q R D.s.t.u.E.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.G.W H.k.k.l.>.,.I...n n @.~.n p z.A.F.F.F.J.1 2 $ $ ",
" - > p.n n q.b.C.Q R K.s.t.u.L.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.N.W H.k.k.j.>.O.P.Q.n n (.~.n p z.R.M.M.M.S.1 2 $ $ ",
" - > ^.n n q.b.C.Q R T.s.t.U.V.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.X.W H.k.k.Y.Z.O.`.Q.n n (.~.n p z. +W.W.W..+1 2 $ $ ",
" - ; ++n n q.b.C.Q R T.s.t.U.@+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+$+%+H.k.k.Y.Z.O.&+Q.n n (.~.*+p z.=+#+#+#+-+;+2 $ $ ",
" - ; ++n n q.b.C.Q R T.s.t.U.>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+'+%+)+!+k.Y.Z.O.~+Q.n n (.b.{+p z.]+,+,+,+^+;+2 $ $ ",
" - ; ++n n q.b.C.Q R T.s.t.U.>+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+(+%+_+:+<+l.Z.O.[+}+n n +.b.{+p z.|+/+/+/+1+;+2 $ $ ",
" - ; ++n n q.b.C.Q R 2+s.t.U.3+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+5+%+X 6+7+X >.8+9+0+n n +.b.{+p z.a+4+4+4+b+;+2 $ $ ",
" - ; ++n n q.b.C.Q R c+s.t.U.V.d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+e+%+X X X Y >.8+f+g+n n h+i+*+p z.a+d+d+d+j+k+2 $ $ ",
" - ; ++n n /.l+C.Q R m+s.t.U.V.n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+o+%+X X X Y >.8+p+q+n n n n o p z.a+n+n+n+r+k+2 $ $ ",
" - $ s+n n n *+n Q R t+s.t.U.u+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+w+%+X X X Y >.8+x+q+n n n n o p z.y+v+v+v+r+k+2 $ $ ",
" - $ s+n n n n o Q R t+s.t.U.z+A+A+A+A+A+A+A+A+A+A+A+A+A+A+A+A+A+A+A+A+A+B+%+X X X Y >.C+D+q+n n n n o p z.y+A+A+A+E+. 2 $ $ ",
" - $ s+n n n n o Q R t+s.t.U.z+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+%+X X X Y >.H+I+J+n n n n o p z.K+F+F+F+L+. 2 $ $ ",
" - $ s+n n n n o Q R t+s.t.U.M+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+O+%+X X X Y >.H+P+Q+n n n n o p R R+N+N+N+S+. 2 $ $ ",
" - $ s+n n n n o Q R T+s.t.U.U+V+V+V+V+V+V+V+V+V+V+V+V+V+V+V+V+V+V+V+V+V+W+%+X X X Y >.H+X+Q+n n n n o p R Y+V+V+V+Z+. 2 $ $ ",
" - $ s+n n n n o Q R `+s.t.U. @.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@+@%+X X X Y >.H+@@Q+n n n n o p R #@.@.@.@$@ 2 $ $ ",
" - $ s+n n n n o Q R `+s.t.U. @%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@&@;.X X *@=@-@O.P+;@>@>@,@'@)@!@~@{@]@]@]@^@ 2 $ $ ",
" - $ /@(@(@(@(@_@:@<@[@}@|@1@2@3@3@4@5@5@6@$@7@7@7@7@7@7@7@7@7@7@7@7@7@7@8@9@0@0@a@b@c@d@e@f@g@g@h@i@j@k@l@m@1 1 1 . 2 $ $ ",
" % n@m@o@o@o@o@o@l@l@p@q@q@r@s@k+k+. . . . 2 $ $ ",
" ' t@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@v@' 2 2 2 2 2 2 2 w@x@x@x@x@x@x@x@y@z@z@z@z@z@z@z@A@k+. . . . . . . . . . . B@$ $ ",
" - $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ C@C@C@C@C@C@C@C@C@& & & & & & & & & & & & & & & & & & D@E@n@$ $ ",
" - $ ; > > , , , , , , , , , , , , , , , , , , , , , , , F@G@G@G@H@I@I@I@J@K@K@K@K@) ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! L@. 2 $ $ ",
" - $ ) _ f M@< < < < < < < < < < < < < < < < < < < < < < N@N@N@N@N@O@O@O@O@O@O@O@O@B.B.B.B.B.B.B.B.B.P@Q@R@R@R@S@T@U@ 2 $ $ ",
" - $ ~ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 V@W@X@Y@Z@`@ #.#+#5 5 5 5 5 5 5 5 5 5 @###$#%#&#&#*#=#-#;# 2 $ $ ",
" - $ ~ g g g g g g g g g g g g g g g g g g g g g g g g g g >#,#'#)#!#!#~#{#]#g g g g g g g g g g h ^#n n n n o p M /# 2 $ $ ",
" - $ (#C C C C C C C C C C C C C C C C C C C C C C C C C C _#!#!#!#!#!#:#<#[#C C C C C C C C C C }#L n n n n o p #.|# 2 $ $ ",
" - $ 1#2#3#4#5#6#7#T T T T T T T T T T T T T T T T T T T T 8#!#!#9#0#a#b#<#c#T T T T T T T T T T d#e#n n n n o p #.f# 2 $ $ ",
" - $ g#h#i#7+Y j#k#=.=.=.=.=.=.=.=.=.=.=.=.l#m#n#n#n#o#p#q#r#!#s#t#u#t#v#<#w#=.=.=.=.=.=.=.=.=.=.x#e#n n n n o p z.y# 2 $ $ ",
" - $ g#z#7+A#B#C#D#1.1.1.1.1.1.1.1.1.1.1.1.E#F#F#F#F#G#H#I#J#!#s#K#u#t#v#<#L#1.1.1.1.1.1.1.1.1.1.M#e#n n n *+o p z.N# 2 $ $ ",
" - $ O#z#7+P#l.C#Q#h.h.h.h.h.h.h.h.h.h.h.h.R#F#F#F#F#G#H#S#J#!#s#K#u#t#v#<#T#h.h.h.h.h.h.h.h.h.h.U#V#n n C.l+n p z.N# 2 $ $ ",
" - $ O#W#7+P#l.C#X#w.w.w.w.w.w.w.w.w.w.w.w.R#F#F#F#F#G#H#S#Y#!#s#K#u#t#v#<#T#w.w.w.w.w.w.w.w.w.w.Z#V#n n `#~.n p z.y# 2 $ $ ",
" - $ $.$7+P#l.C#+$F.F.F.F.F.F.F.F.F.F.F.F.R#F#F#F#F#G#H#@$Y#!#s#K#u#t#v#<##$F.F.F.F.F.F.F.F.F.F.$$%$n n q.l+n p z.N# 2 $ $ ",
" - $ $&$7+P#l.*$=$M.M.M.M.M.M.M.M.M.M.M.M.-$F#;$>$,$'$H#@$)$!#s#K#u#t#v#<#!$M.M.M.M.M.M.M.M.M.M.~$%$n n q.l+n p R {$ 2 $ $ ",
" - $ ]$^$7+/$l.*$($W.W.W.W.W.W.W.W.W.W.W.W.-$F#>$_$:$<$[$@$}$!#s#K#u#t#v#<#|$W.W.W.W.W.W.W.W.W.W.1$%$n n q.l+n p R 2$ 2 $ $ ",
" - $ ]$^$7+3$l.*$4$#+#+#+#+#+#+#+#+#+#+#+#+5$F#6$:$:$<$[$@$}$!#s#t#7$8$v#<#9$#+#+#+#+#+#+#+#+#+#+0$%$n n q.l+n p a$b$ 2 $ $ ",
" - $ ]$c$7+3$l.*$4$d$d$d$d$d$d$d$d$d$d$d$d$5$F#e$_$:$<$[$@$}$!#f$g$h$i$j$<#9$d$d$d$d$d$d$d$d$d$d$k$%$n n l$l+n p a$m$ 2 $ $ ",
" - $ n$o$7+3$l.*$p$q$q$q$q$q$q$q$q$q$q$q$q$5$F#e$_$:$r$[$@$s$!#!#!#!#!#:#<#t$q$q$q$q$q$q$q$q$q$q$u$v$n n w$x$o p a$m$ 2 $ $ ",
" - $ y$z$7+3$l.*$A$4+4+4+4+4+4+4+4+4+4+4+4+5$F#e$_$:$B$C$@$s$!#!#!#!#!#:#<#D$4+4+4+4+4+4+4+4+4+4+E$g+n n n n o p a$m$ 2 $ $ ",
" - $ y$F$7+G$l.H$I$d+d+d+d+d+d+d+d+d+d+d+d+J$F#K$_$:$B$C$@$L$!#!#!#!#!#:#<#M$d+d+d+d+d+d+d+d+d+d+N$g+n n n n o p O$P$ 2 $ $ ",
" - $ y$Q$X 7+X H$I$n+n+n+n+n+n+n+n+n+n+n+n+R$F#S$_$:$B$C$@$L$!#!#!#!#!#:#<#T$n+n+n+n+n+n+n+n+n+n+U$q+n n n n o p V$W$ 2 $ $ ",
" - $ X$Y$X X Y H$Z$v+v+v+v+v+v+v+v+v+v+v+v+R$F#;$`$_$r$[$@$L$!#!#!#!#!#:#<#T$v+v+v+v+v+v+v+v+v+v+ %q+n n n n o p V$W$ 2 $ $ ",
" - $ .%Y$X X Y H$+%A+A+A+A+A+A+A+A+A+A+A+A+@%F##%K$$%%%H#@$&%!#!#!#!#!#:#<#*%A+A+A+A+A+A+A+A+A+A+=%-%n n n n o p V$W$ 2 $ $ ",
" - $ ;%Y$X X Y H$>%F+F+F+F+F+F+F+F+F+F+F+F+@%F#F#F#F#G#H#@$&%!#!#!#!#!#:#<#,%F+F+F+F+F+F+F+F+F+F+'%)%n n n n o p !%~% 2 $ $ ",
" - $ ;%{%X X Y H$]%^%^%^%^%^%^%^%^%^%^%^%^%@%F#F#F#F#G#H#@$/%!#!#!#!#!#:#<#(%^%^%^%^%^%^%^%^%^%^%_%)%n n n n o p !%k@ 2 $ $ ",
" - $ ;%:%X X Y H$<%[%[%[%[%[%[%[%[%[%[%[%[%@%F#F#F#F#G#H#@$/%!#!#!#!#!#:#<#}%[%[%[%[%[%[%[%[%[%[%|%1%n n n n o p !%k@ 2 $ $ ",
" - $ $2%X X Y H$3%.@.@.@.@.@.@.@.@.@.@.@.@4%F#F#F#F#G#H#@$/%!#!#!#!#!#:#<#5%.@.@.@.@.@.@.@.@.@.@6%7%n n n n o p !%k@ 2 $ $ ",
" - $ $8%X X Y H$3%%@%@%@%@%@%@%@%@%@%@%@%@9%0%F#F#F#G#H#@$a%!#!#!#!#!#:#<#b%%@%@%@%@%@%@%@%@%@%@c%7%n n n n o p ~@l@ 2 $ $ ",
" - $ d%e%0@0@f%g%h%7@7@7@7@7@7@7@7@7@7@7@7@i%j%k%k%k%l%m%n%o%p%p%p%p%q%r%s%t%7@7@7@7@7@7@7@7@7@7@7@u%v%v%v%v%v%w%x%y% 2 $ $ ",
" - z%@ 2 $ $ ",
" . = A%u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@+ $ $ ",
". B%C@$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ",
"+ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ "};

821
assets/bookshelf_02.xpm Normal file
View File

@ -0,0 +1,821 @@
/* XPM */
static char * bookshelf_02_xpm[] = {
"64 64 754 2",
" c #9E7449",
". c #9D7348",
"+ c #835A32",
"@ c #9C7247",
"# c #845B33",
"$ c #754C24",
"% c #875E36",
"& c #774E26",
"* c #795028",
"= c #835A31",
"- c #865D35",
"; c #744C24",
"> c #744B24",
", c #734B24",
"' c #8F663C",
") c #634020",
"! c #603E1F",
"~ c #5F3E1F",
"{ c #593A1E",
"] c #58391E",
"^ c #55371E",
"/ c #52351D",
"( c #50351D",
"_ c #4B311C",
": c #4D311C",
"< c #472E1B",
"[ c #452D1A",
"} c #45353C",
"| c #465294",
"1 c #47549A",
"2 c #425095",
"3 c #3C4B8D",
"4 c #4A393E",
"5 c #9B7248",
"6 c #8F663D",
"7 c #4A301B",
"8 c #412A1A",
"9 c #602C1F",
"0 c #A5312D",
"a c #A7312D",
"b c #A8312E",
"c c #AE322F",
"d c #AA312E",
"e c #9A2620",
"f c #92261E",
"g c #482A1A",
"h c #412B1B",
"i c #43549A",
"j c #456CD1",
"k c #466ED2",
"l c #3A66CA",
"m c #2D5FC2",
"n c #404D8D",
"o c #49301B",
"p c #402A19",
"q c #442A1A",
"r c #4A2A1B",
"s c #492A1A",
"t c #432A19",
"u c #A5302C",
"v c #DC363A",
"w c #DB3539",
"x c #CA2124",
"y c #C72023",
"z c #75271C",
"A c #49382D",
"B c #554840",
"C c #65574F",
"D c #827870",
"E c #837972",
"F c #5E524E",
"G c #4F4340",
"H c #4458A0",
"I c #598BDE",
"J c #3C67CA",
"K c #404D90",
"L c #7D3224",
"M c #A6302D",
"N c #B33230",
"O c #C03434",
"P c #C73435",
"Q c #C33334",
"R c #A72623",
"S c #98251E",
"T c #66281A",
"U c #3F2918",
"V c #3E3118",
"W c #325214",
"X c #2D6A11",
"Y c #2D6B11",
"Z c #2C6210",
"` c #354213",
" . c #AC332E",
".. c #C82023",
"+. c #83261C",
"@. c #402919",
"#. c #422A1B",
"$. c #462A1E",
"%. c #442A1C",
"&. c #B4B2B0",
"*. c #F9FAFA",
"=. c #FAFBFB",
"-. c #FBFCFB",
";. c #FBFCFC",
">. c #DBE5F8",
",. c #D7E1F5",
"'. c #7689C7",
"). c #598CDE",
"!. c #3C68CA",
"~. c #3F4D8F",
"{. c #A9352E",
"]. c #CC2427",
"^. c #C92023",
"/. c #97241E",
"(. c #3E2818",
"_. c #3D2D18",
":. c #187C0B",
"<. c #0A8D07",
"[. c #088E07",
"}. c #048204",
"|. c #087301",
"1. c #A5512A",
"2. c #E03C41",
"3. c #E44147",
"4. c #DD373B",
"5. c #88251D",
"6. c #83374D",
"7. c #B84572",
"8. c #BC4774",
"9. c #C24978",
"0. c #CC4C7E",
"a. c #C64A7A",
"b. c #B23C65",
"c. c #AB3A60",
"d. c #552B28",
"e. c #BFBDBC",
"f. c #FEFFFF",
"g. c #F8FBFE",
"h. c #EEF4FE",
"i. c #F5F9FE",
"j. c #DFE9FC",
"k. c #DCE7FC",
"l. c #90A6E2",
"m. c #AA372E",
"n. c #98241E",
"o. c #3D2817",
"p. c #3B2E17",
"q. c #13800A",
"r. c #088F07",
"s. c #057401",
"t. c #A5532A",
"u. c #E34046",
"v. c #E7464C",
"w. c #DD383C",
"x. c #982726",
"y. c #3B3033",
"z. c #3B2F32",
"A. c #3C2A22",
"B. c #B74572",
"C. c #F5589B",
"D. c #F4579A",
"E. c #E74986",
"F. c #E44884",
"G. c #913650",
"H. c #BFBEBC",
"I. c #F2F7FE",
"J. c #DDE8FC",
"K. c #EDF3FD",
"L. c #A7B7E8",
"M. c #3E4D90",
"N. c #AC392E",
"O. c #DE393D",
"P. c #992823",
"Q. c #5D514A",
"R. c #7F766F",
"S. c #5F5A51",
"T. c #158812",
"U. c #09A008",
"V. c #09A308",
"W. c #09A508",
"X. c #048404",
"Y. c #E23F45",
"Z. c #C82227",
"`. c #795F90",
" + c #0781CA",
".+ c #067CC4",
"++ c #265682",
"@+ c #F5599C",
"#+ c #F4589A",
"$+ c #E64885",
"%+ c #AD3C62",
"&+ c #C6C3C2",
"*+ c #F4F8FE",
"=+ c #DEE8FC",
"-+ c #A8B8E8",
";+ c #3C5094",
">+ c #9B7249",
",+ c #AC382E",
"'+ c #E23F44",
")+ c #B36A66",
"!+ c #F6F7F7",
"~+ c #E0E9F5",
"{+ c #52A45D",
"]+ c #089007",
"^+ c #0AAF09",
"/+ c #0AB009",
"(+ c #C6242B",
"_+ c #526EAA",
":+ c #0084CF",
"<+ c #007FC8",
"[+ c #166498",
"}+ c #B84674",
"|+ c #F666AA",
"1+ c #F871B7",
"2+ c #F55C9F",
"3+ c #AE3C63",
"4+ c #C6C4C2",
"5+ c #F6F9FE",
"6+ c #DEE9FC",
"7+ c #AB382E",
"8+ c #E03D42",
"9+ c #B97672",
"0+ c #FDFFFF",
"a+ c #E3EDF9",
"b+ c #5DA96A",
"c+ c #C6252E",
"d+ c #4871AF",
"e+ c #156499",
"f+ c #B74674",
"g+ c #F767AB",
"h+ c #F872B8",
"i+ c #F55FA3",
"j+ c #E13E43",
"k+ c #B97671",
"l+ c #DF3A3E",
"m+ c #C52732",
"n+ c #3877B8",
"o+ c #146399",
"p+ c #B74574",
"q+ c #AD3C63",
"r+ c #3B5094",
"s+ c #B97571",
"t+ c #E4EDFA",
"u+ c #5FAA6C",
"v+ c #3877B9",
"w+ c #B74573",
"x+ c #C6C3C1",
"y+ c #F7FAFE",
"z+ c #3B4F94",
"A+ c #B87571",
"B+ c #E5EEFB",
"C+ c #7DB58F",
"D+ c #136399",
"E+ c #AD3B63",
"F+ c #C5C3C1",
"G+ c #F9FBFE",
"H+ c #3F5295",
"I+ c #AE3C2F",
"J+ c #7FB590",
"K+ c #008ED3",
"L+ c #008ACC",
"M+ c #F873B9",
"N+ c #F561A5",
"O+ c #465696",
"P+ c #9C7349",
"Q+ c #DF3B40",
"R+ c #0098D6",
"S+ c #0094CF",
"T+ c #0B6BA6",
"U+ c #B74675",
"V+ c #F562A7",
"W+ c #AD3B62",
"X+ c #EAF1FD",
"Y+ c #465596",
"Z+ c #9C7249",
"`+ c #0AAA09",
" @ c #0AAE09",
".@ c #0AA909",
"+@ c #DF3C41",
"@@ c #0B6BA7",
"#@ c #AC3861",
"$@ c #BEBDBC",
"%@ c #FAFDFF",
"&@ c #E9F0FD",
"*@ c #598CDF",
"=@ c #3E6ACC",
"-@ c #465697",
";@ c #B87471",
">@ c #C52731",
",@ c #3976B8",
"'@ c #0A6AA7",
")@ c #B74575",
"!@ c #BDBDBC",
"~@ c #FDFEFF",
"{@ c #3E6BCC",
"]@ c #4D60A3",
"^@ c #9C734C",
"/@ c #B87470",
"(@ c #E34045",
"_@ c #DD393D",
":@ c #516EAA",
"<@ c #0A6AA6",
"[@ c #F664A7",
"}@ c #E0EAFC",
"|@ c #5465A6",
"1@ c #9C744D",
"2@ c #E6454B",
"3@ c #B77470",
"4@ c #037500",
"5@ c #A35629",
"6@ c #B64575",
"7@ c #F664A8",
"8@ c #F76EB3",
"9@ c #F662A6",
"0@ c #AC3761",
"a@ c #FCFEFF",
"b@ c #B24230",
"c@ c #DC373B",
"d@ c #B77370",
"e@ c #007500",
"f@ c #A15C28",
"g@ c #096AA6",
"h@ c #F5589C",
"i@ c #AB3761",
"j@ c #BDBCBC",
"k@ c #3B66CA",
"l@ c #5D66A1",
"m@ c #9D744C",
"n@ c #B64475",
"o@ c #65689C",
"p@ c #9D744B",
"q@ c #086AA6",
"r@ c #B67270",
"s@ c #AB3661",
"t@ c #9D744A",
"u@ c #B6726F",
"v@ c #746A97",
"w@ c #076AA6",
"x@ c #AA3761",
"y@ c #BCBBBB",
"z@ c #FDFEFD",
"A@ c #FDFDFD",
"B@ c #FCFDFC",
"C@ c #DDE6F9",
"D@ c #A7B6E4",
"E@ c #496CCE",
"F@ c #4B6CCE",
"G@ c #4B6CCD",
"H@ c #4366C6",
"I@ c #3860BF",
"J@ c #796B93",
"K@ c #B14532",
"L@ c #DA3A3B",
"M@ c #D93A3A",
"N@ c #CA2B29",
"O@ c #C52D28",
"P@ c #B27068",
"Q@ c #EDE8E4",
"R@ c #F0EBE7",
"S@ c #D7D7DB",
"T@ c #83A57C",
"U@ c #42871F",
"V@ c #43871F",
"W@ c #528625",
"X@ c #5A8529",
"Y@ c #597D28",
"Z@ c #597527",
"`@ c #9D6939",
" # c #C05B42",
".# c #B6573A",
"+# c #B3573C",
"@# c #7F7185",
"## c #737C9F",
"$# c #737A9A",
"%# c #736F82",
"&# c #AA6062",
"*# c #D0677B",
"=# c #CF677A",
"-# c #C7616D",
";# c #C16368",
"># c #A05F51",
",# c #A7907D",
"'# c #C8B4A4",
")# c #C1AB97",
"!# c #BBA188",
"~# c #BAA087",
"{# c #AB8E75",
"]# c #A9896E",
"^# c #9E7F69",
"/# c #927363",
"(# c #9B7456",
"_# c #9C7455",
":# c #9B7354",
"<# c #9B7353",
"[# c #9D744E",
"}# c #875E35",
"|# c #9E7248",
"1# c #A17248",
"2# c #A07248",
"3# c #9F744A",
"4# c #A27B55",
"5# c #A07952",
"6# c #9D764A",
"7# c #9C7548",
"8# c #9C7448",
"9# c #9D7448",
"0# c #8B6239",
"a# c #8B633A",
"b# c #8C633A",
"c# c #92693F",
"d# c #946A40",
"e# c #966C42",
"f# c #986E44",
"g# c #996F44",
"h# c #9C7348",
"i# c #8F653C",
"j# c #764D25",
"k# c #774E27",
"l# c #825931",
"m# c #6E4823",
"n# c #6E4723",
"o# c #6B4622",
"p# c #694421",
"q# c #684421",
"r# c #644121",
"s# c #7A5530",
"t# c #452D1B",
"u# c #442D1A",
"v# c #432C1A",
"w# c #422C1A",
"x# c #452C1B",
"y# c #4E2C1C",
"z# c #512C1C",
"A# c #4C2B1A",
"B# c #432B1A",
"C# c #7B5937",
"D# c #412B1A",
"E# c #402E27",
"F# c #3E363A",
"G# c #324D68",
"H# c #2E5D8A",
"I# c #2D6499",
"J# c #2D6397",
"K# c #314D6B",
"L# c #3B373D",
"M# c #402E26",
"N# c #422B1A",
"O# c #832E25",
"P# c #B23230",
"Q# c #CF3537",
"R# c #D83639",
"S# c #D73538",
"T# c #BE2223",
"U# c #9D251F",
"V# c #805837",
"W# c #3F3226",
"X# c #37433B",
"Y# c #344943",
"Z# c #3E3326",
"`# c #443021",
" $ c #54473F",
".$ c #5A4D44",
"+$ c #73675F",
"@$ c #827971",
"#$ c #7E746D",
"$$ c #5D514C",
"%$ c #50433F",
"&$ c #463328",
"*$ c #2E5F8F",
"=$ c #0682CB",
"-$ c #0283CD",
";$ c #0084CE",
">$ c #0179C0",
",$ c #0574B9",
"'$ c #2E5785",
")$ c #453124",
"!$ c #4E3E36",
"~$ c #402A1A",
"{$ c #B33231",
"]$ c #C62023",
"^$ c #8E5838",
"/$ c #5F3D1F",
"($ c #3E3025",
"_$ c #12858B",
":$ c #059098",
"<$ c #04939B",
"[$ c #0E7A76",
"}$ c #3E3022",
"|$ c #A09C99",
"1$ c #F8F9F9",
"2$ c #FAFAFA",
"3$ c #E3EBF9",
"4$ c #D8E3F6",
"5$ c #999BA6",
"6$ c #2C6499",
"7$ c #007AC1",
"8$ c #0076BC",
"9$ c #3C628F",
"0$ c #CAC8C7",
"a$ c #DDE0E6",
"b$ c #82828A",
"c$ c #452919",
"d$ c #B93332",
"e$ c #955738",
"f$ c #5E3D1F",
"g$ c #3D2E18",
"h$ c #344B14",
"i$ c #2D6412",
"j$ c #2D6212",
"k$ c #344327",
"l$ c #078F97",
"m$ c #01A2A9",
"n$ c #01A8AF",
"o$ c #087D78",
"p$ c #3D2F23",
"q$ c #E6EFFD",
"r$ c #A7ACBA",
"s$ c #2B6399",
"t$ c #008FD3",
"u$ c #0093D5",
"v$ c #0095D5",
"w$ c #007BC2",
"x$ c #476994",
"y$ c #442819",
"z$ c #B83232",
"A$ c #965738",
"B$ c #5E3D1E",
"C$ c #2C6911",
"D$ c #0B8C07",
"E$ c #088D07",
"F$ c #04761F",
"G$ c #019097",
"H$ c #01A3AA",
"I$ c #01A9AF",
"J$ c #3C2F22",
"K$ c #AFADBC",
"L$ c #B2436E",
"M$ c #B64370",
"N$ c #AE3B62",
"O$ c #8F344E",
"P$ c #2E6399",
"Q$ c #0086D0",
"R$ c #00A7DC",
"S$ c #00A9DD",
"T$ c #007CC2",
"U$ c #A7AFC4",
"V$ c #415298",
"W$ c #41539A",
"X$ c #3D4F96",
"Y$ c #364A8F",
"Z$ c #403B65",
"`$ c #A35739",
" % c #2A6A10",
".% c #0AA609",
"+% c #099E08",
"@% c #00771F",
"#% c #3A2E22",
"$% c #E7B3D2",
"%% c #F35698",
"&% c #E64986",
"*% c #E04782",
"=% c #41649A",
"-% c #00A8DC",
";% c #466994",
">% c #A8B8E7",
",% c #456DD1",
"'% c #4972D3",
")% c #3D67CC",
"!% c #394F98",
"~% c #B83335",
"{% c #A45739",
"]% c #5D3C1E",
"^% c #0AAB09",
"/% c #099F08",
"(% c #392E21",
"_% c #E9B3D3",
":% c #E24783",
"<% c #4D79D6",
"[% c #3E69CC",
"}% c #38529D",
"|% c #B83336",
"1% c #296A0F",
"2% c #382D21",
"3% c #40649A",
"4% c #456994",
"5% c #4E7AD7",
"6% c #3754A5",
"7% c #B83439",
"8% c #E23E44",
"9% c #E7454B",
"0% c #5D3C1D",
"a% c #286A0F",
"b% c #077D78",
"c% c #372C21",
"d% c #E24782",
"e% c #3657AC",
"f% c #B7343B",
"g% c #276A0F",
"h% c #362C20",
"i% c #F65CA0",
"j% c #F663A7",
"k% c #F666AB",
"l% c #F45FA2",
"m% c #40639A",
"n% c #B25739",
"o% c #5C3B1D",
"p% c #266A0E",
"q% c #0AA808",
"r% c #352B20",
"s% c #F567AB",
"t% c #3F639A",
"u% c #446894",
"v% c #B7333B",
"w% c #B5573A",
"x% c #09A708",
"y% c #067D78",
"z% c #332C21",
"A% c #F661A5",
"B% c #00A8DD",
"C% c #00A6DC",
"D% c #4C77D5",
"E% c #C92123",
"F% c #B2593B",
"G% c #25690E",
"H% c #057D79",
"I% c #2E3329",
"J% c #F660A3",
"K% c #0085CF",
"L% c #0091D4",
"M% c #008DD2",
"N% c #0088D0",
"O% c #007AC2",
"P% c #4B76D5",
"Q% c #355AB5",
"R% c #B7343E",
"S% c #E03C42",
"T% c #AF5B3D",
"U% c #5B3B1C",
"V% c #25690D",
"W% c #2D3329",
"X% c #F569AD",
"Y% c #3E639A",
"Z% c #436894",
"`% c #355DBE",
" & c #B73441",
".& c #DE383D",
"+& c #DE3A3E",
"@& c #5B3A1C",
"#& c #24690D",
"$& c #01AAB0",
"%& c #2C3329",
"&& c #F56AAE",
"*& c #E74987",
"=& c #B63441",
"-& c #23690D",
";& c #09A608",
">& c #01ACB3",
",& c #047D79",
"'& c #2B3229",
")& c #F65EA2",
"!& c #3D639A",
"~& c #C82224",
"{& c #AC5F3F",
"]& c #22690C",
"^& c #01ADB3",
"/& c #2A3228",
"(& c #F65DA0",
"_& c #426894",
":& c #C82324",
"<& c #AA6140",
"[& c #5A3A1C",
"}& c #21690C",
"|& c #293128",
"1& c #F872B7",
"2& c #345DBE",
"3& c #B63340",
"4& c #5C3B1C",
"5& c #01ABB2",
"6& c #283027",
"7& c #F55B9E",
"8& c #F35799",
"9& c #3C629A",
"0& c #4B75D5",
"a& c #588ADE",
"b& c #315DBE",
"c& c #AD323F",
"d& c #5E3C1D",
"e& c #01929B",
"f& c #01929A",
"g& c #047C78",
"h& c #273027",
"i& c #416894",
"j& c #3D67CB",
"k& c #305DBE",
"l& c #AA313E",
"m& c #C82525",
"n& c #A56844",
"o& c #20690B",
"p& c #01919A",
"q& c #019099",
"r& c #262F27",
"s& c #3B629A",
"t& c #416794",
"u& c #A56944",
"v& c #1F690B",
"w& c #252F27",
"x& c #E8B8D8",
"y& c #AA303E",
"z& c #1E690B",
"A& c #242E26",
"B& c #E6BCDB",
"C& c #F55A9C",
"D& c #406794",
"E& c #1E690A",
"F& c #232E26",
"G& c #3A629A",
"H& c #2F5DBE",
"I& c #C72825",
"J& c #77512D",
"K& c #756E34",
"L& c #738234",
"M& c #738134",
"N& c #737638",
"O& c #738378",
"P& c #73847A",
"Q& c #738379",
"R& c #737864",
"S& c #75593A",
"T& c #AE9D91",
"U& c #D5C9C1",
"V& c #C7BEC0",
"W& c #C1BABF",
"X& c #C79DA7",
"Y& c #CF687B",
"Z& c #CE6679",
"`& c #C4616B",
" * c #796B7A",
".* c #737C9E",
"+* c #737795",
"@* c #737591",
"#* c #7A6E76",
"$* c #D2C6BE",
"%* c #CBC2C0",
"&* c #A39BB0",
"** c #7C70A0",
"=* c #7A6E9C",
"-* c #776A96",
";* c #776993",
">* c #A45A44",
",* c #B4583A",
"'* c #9F7348",
")* c #825A32",
"!* c #8A6138",
"~* c #865D34",
" . + ",
" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ # $ ",
" % & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & * = $ $ ",
" - $ $ $ $ $ $ $ ; ; ; ; ; ; > > > > > > > > > > > > , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ; ' ' $ $ ",
" - ; ) ! ! ! ~ { ] ] ] ] ] ^ / / / / / ( _ _ _ _ _ : < [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ } | 1 1 1 2 3 4 5 6 $ $ ",
" - > 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 0 a b c d e f g 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 h i j j k k l m n 5 6 $ $ ",
" - > o p q g r s t p p p p p p p p p p p p u v v v v w x y z p p p p p p p p p p p p A B C D E D F G H j k I I J m K 5 6 $ $ ",
" - > L M N O P Q R S T U U U V W X Y Y Z ` .v v v v w x ..+.U U U U U @.#.$.%.@.U U &.*.=.-.;.=.>.,.'.j k ).).!.m ~.5 6 $ $ ",
" - > {.v v v v w ].^./.(.(._.:.<.[.[.[.}.|.1.v v 2.3.4.x ..5.(.(.(.6.7.8.9.0.a.b.c.d.e.f.f.g.h.i.j.k.l.j k ).).!.m ~.5 6 $ $ ",
" - > m.v v v v w ].^.n.o.o.p.q.[.[.[.r.}.s.t.v v u.v.w.x ^.x.y.z.A.B.C.C.C.C.D.E.F.G.H.f.f.I.J.K.j.J.L.j k ).).!.m M.5 6 $ $ ",
" - > N.v v 2.u.O.].^.P.Q.R.S.T.r.U.V.W.X.s.t.v v Y.v.w.x Z.`. +.+++7.C.C.@+@+#+E.$+%+&+f.f.*+=+K.j.J.-+j k ).).!.m ;+>+6 $ $ ",
" - > ,+v v '+v.2.].^.)+!+=.~+{+]+^+/+^+X.s.t.v v '+v.w.x (+_+:+<+[+}+C.C.|+1+2+E.$+3+4+f.f.5+6+K.j.J.-+j k ).).!.m ;+>+6 $ $ ",
" - > 7+v v '+v.8+].^.9+-.0+a+b+]+^+/+^+X.s.t.v v '+v.O.x c+d+:+<+e+f+C.C.g+h+i+E.$+3+4+f.f.5+6+K.j.J.-+j k ).).!.m ;+>+6 $ $ ",
" - > 7+v v j+v.j+].^.k+-.0+a+b+]+^+/+^+X.s.t.v v '+v.l+x m+n+:+<+o+p+C.C.g+h+i+E.$+q+&+f.f.5+6+K.j.J.-+j k ).).!.m r+>+6 $ $ ",
" - > 7+v v 8+v.j+].^.s+-.0+t+u+]+^+/+^+X.s.t.v v '+v.l+x m+v+:+<+o+w+C.C.g+h+i+E.$+q+x+f.f.y+6+K.j.J.-+j k ).).!.m z+>+6 $ $ ",
" - > N.v v 8+v.j+].^.A+-.0+B+C+]+^+/+^+X.s.t.v v '+v.l+x m+v+:+<+D+w+C.C.g+h+i+E.$+E+F+f.f.G+6+K.j.J.-+j k ).).!.m H+>+6 $ $ ",
" - ; I+v v 8+v.j+].^.A+-.0+B+J+]+^+/+^+X.s.t.v v '+v.l+x m+v+K+L+D+w+C.C.g+M+N+E.$+E+F+f.f.G+6+K.6+J.-+j k ).).!.m O+P+6 $ $ ",
" - ; I+v v 8+v.j+].^.A+-.0+B+J+]+^+/+^+X.s.t.v v '+v.Q+x m+v+R+S+T+U+C.C.g+M+V+E.$+W+F+f.f.G+6+X+6+J.-+j k ).).!.m Y+Z+6 $ $ ",
" - ; I+v v 8+v.j+].^.A+-.0+B+J+r.`+ @.@X.s.t.v v '+v.+@x m+v+R+S+@@U+C.C.g+M+V+E.$+#@$@f.f.%@6+&@6+J.-+j k ).*@=@m -@P+6 $ $ ",
" - ; I+v v 8+v.j+].^.;@-.0+B+J+[.r.]+r.}.s.t.v v '+v.+@x >@,@R+S+'@)@C.C.g+M+V+E.$+#@!@f.f.~@j.&@6+J.-+j k ).*@{@m ]@^@6 $ $ ",
" - ; I+v v 8+v.j+].^./@-.0+B+J+[.[.[.[.}.s.t.v v Q+(@_@x (+:@R+S+<@)@C.C.g+M+[@E.$+#@!@f.f.~@}@X+6+J.-+j k ).*@{@m |@1@6 $ $ ",
" - ; I+v v 2.2@j+].^.3@-.0+B+J+[.[.[.[.}.4@5@v v v v w x (+_+R+S+<@6@C.C.7@8@9@E.$+0@!@f.f.f.~@a@6+J.-+j k ).*@{@m |@1@6 $ $ ",
" - $ b@v v v c@v ].^.d@-.0+B+J+[.[.[.[.}.e@f@v v v v w x (+_+R+S+g@6@C.C.h@@+#+E.$+i@!@f.f.f.f.~@j.J.-+j k I I {@m |@1@6 $ $ ",
" - $ b@v v v v w ].^.d@-.0+B+J+[.[.[.[.}.e@f@v v v v w x (+_+K+L+g@6@C.C.C.C.D.E.$+i@j@f.f.f.f.~@j.J.-+j j k k k@m l@m@6 $ $ ",
" - $ b@v v v v w ].^.d@-.0+B+J+[.[.[.[.}.e@f@v v v v w x (+_+:+<+g@n@C.C.C.C.D.E.$+i@j@f.f.f.f.~@j.J.-+j j j j l m o@p@6 $ $ ",
" - $ b@v v v v w ].^.d@-.0+B+J+[.[.[.[.}.e@f@v v v v w x (+_+:+<+q@n@C.C.C.C.D.E.$+i@j@f.f.f.f.~@j.J.-+j j j j l m o@p@6 $ $ ",
" - $ b@v v v v w ].^.r@-.0+B+J+[.[.[.[.}.e@f@v v v v w x (+_+:+<+q@n@C.C.C.C.D.E.$+s@j@f.f.f.f.~@j.J.-+j j j j l m o@t@6 $ $ ",
" - $ b@v v v v w ].^.u@-.0+B+J+[.[.[.[.}.e@f@v v v v w x (+_+:+<+q@n@C.C.C.C.D.E.$+s@j@f.f.f.f.~@j.J.-+j j j j l m v@ 6 $ $ ",
" - $ b@v v v v w ].^.u@-.0+B+J+[.[.[.[.}.e@f@v v v v w x (+_+:+<+w@n@C.C.C.C.D.E.$+x@y@z@A@B@B@;.C@>.D@E@F@G@G@H@I@J@ 6 $ $ ",
" - $ K@L@L@L@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@`@ # # # # #.#+#@###$#%#&#*#*#*#*#=#-#;#>#,#'#)#!#!#~#{#]#^#/#(#_#_#:#<#[# 6 $ $ ",
" % }#|#1#1#1#1#1#2#2#3#4#4#5#6#7#7#8#9#9#9# 6 $ $ ",
" ' 0#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#b#' 6 6 6 6 6 6 6 c#d#d#d#d#d#d#d#e#f#f#f#f#f#f#f#g#h#. . . . . . . . . . . i#$ $ ",
" - $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ j#j#j#j#j#j#j#j#j#& & & & & & & & & & & & & & & & & & k#l#}#$ $ ",
" - $ ; > > , , , , , , , , , , , , , , , , , , , , , , , m#n#n#n#o#p#p#p#q#r#r#r#r#) ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! s#. 6 $ $ ",
" - $ ) _ o t#[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ u#u#u#u#u#v#v#v#v#v#v#v#v#w#w#w#w#w#w#w#w#w#x#y#z#z#z#A#B#C# 6 $ $ ",
" - $ ~ D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#E#F#G#H#I#J#K#L#M#D#D#D#D#D#D#D#D#D#D#N#O#P#Q#R#R#S#T#U#V# 6 $ $ ",
" - $ ~ p p p p p W#X#Y#Z#p `# $.$+$@$#$$$%$&$p p p p p p p *$=$-$;$:+:+>$,$'$)$ $!$~$p p p p p p q {$v v v v w x ]$^$ 6 $ $ ",
" - $ /$U U U U ($_$:$<$[$}$|$1$2$=.;.=.3$4$5$U U U U U U U 6$:+:+:+:+:+7$8$9$0$1$a$b$U U U U U U c$d$v v v v w x y e$ 6 $ $ ",
" - $ f$g$h$i$j$k$l$m$n$o$p$e.f.f.f.f.0+q$J.r$(.(.(.(.(.(.(.s$:+:+t$u$v$w$8$x$2$f.h.r$(.(.(.(.(.(.y$z$v v v v w x y A$ 6 $ $ ",
" - $ B$C$D$r.E$F$G$H$I$o$J$e.f.f.f.f.0+q$J.K$L$7.7.7.M$N$O$P$:+Q$R$S$R$T$8$x$2$f.h.U$V$W$W$W$X$Y$Z$z$v v v v w x ..`$ 6 $ $ ",
" - $ B$ %r..%+%@%G$H$I$o$#%$@f.f.f.f.0+q$J.$%C.C.C.C.%%&%*%=%:+Q$-%S$R$T$8$;%2$f.h.>%j j ,%'%)%m !%~%v v v c@w x ..{% 6 $ $ ",
" - $ ]% %r.^%/%@%G$H$I$o$(%$@f.f.f.f.0+q$J._%C.C.C.C.%%&%:%=%:+Q$-%S$R$T$8$;%*.f.h.-+j j <%I [%m }%|%v v j+2@v x ..{% 6 $ $ ",
" - $ ]%1%r.^%/%@%G$H$I$o$2%$@f.f.f.f.0+q$J._%C.C.C.C.%%&%:%3%:+Q$-%S$R$T$8$4%*.f.h.-+j j 5%I [%m 6%7%v v 8%9%v x ..`$ 6 $ $ ",
" - $ 0%a%r.^%/%@%G$H$I$b%c%$@f.f.f.f.0+q$J._%C.C.C.C.%%&%d%3%:+Q$-%S$R$T$8$4%*.f.h.-+j j 5%I [%m e%f%v v 8+2@v x ..{% 6 $ $ ",
" - $ 0%g%r.^%/%@%G$H$I$b%h%$@f.f.f.f.0+q$J._%C.i%j%k%l%&%d%m%:+Q$-%S$R$T$8$4%*.f.h.-+j j 5%I [%m e%f%v v 8+2@v x ^.n% 6 $ $ ",
" - $ o%p%r.q%/%@%G$H$I$b%r%$@f.f.f.f.0+q$J._%C.j%h+M+s%E.d%t%:+Q$-%S$R$T$8$u%*.f.h.-+j j 5%I [%m e%v%v v 8+2@v x ^.w% 6 $ $ ",
" - $ o%p%r.x%/%@%G$H$I$y%z%$@f.f.f.f.0+q$J._%C.A%M+M+s%E.d%t%:+Q$R$B%C%T$8$u%*.f.h.-+j j D%I [%m e%v%v v 8+2@v x E%F% 6 $ $ ",
" - $ o%G%r.x%/%@%G$H$I$H%I%$@f.f.f.f.0+q$J._%C.J%h+M+s%E.d%t%:+K%L%M%N%O%8$u%*.f.h.-+j j P%I [%m Q%R%v v S%2@v x E%T% 6 $ $ ",
" - $ U%V%r.x%/%@%G$H$I$H%W%$@f.f.f.f.0+q$J._%C.J%h+M+X%E.d%Y%:+:+:+:+:+7$8$Z%*.f.h.-+j j P%I [%m `% &v v .&+&w x E%T% 6 $ $ ",
" - $ @&#&r.x%/%@%G$H$$&H%%&!@f.f.f.f.0+q$J._%C.J%h+M+&&*&d%Y%:+:+:+:+:+7$8$Z%*.f.h.-+j j P%I [%m `%=&v v v v w x E%T% 6 $ $ ",
" - $ @&-&r.;&/%@%G$H$>&,&'&!@f.f.f.f.0+q$J._%C.)&h+M+&&*&d%!&:+:+:+:+:+7$8$Z%*.f.h.-+j j P%I [%m `%=&v v v v w x ~&{& 6 $ $ ",
" - $ @&]&[.r.[.@%G$H$^&,&/&!@f.f.f.f.0+q$J._%C.(&h+M+&&*&d%!&:+:+:+:+:+7$8$_&*.f.h.-+j j P%I [%m `%=&v v v v w x :&<& 6 $ $ ",
" - $ [&}&[.[.E$@%G$H$^&,&|&!@f.f.f.f.0+q$J._%C.i%1&h+X%E.d%!&:+:+:+:+:+7$8$_&*.f.h.-+j j P%I [%m 2&3&v v v v w x :&<& 6 $ $ ",
" - $ 4&}&[.[.E$@%G$m$5&,&6&j@f.f.f.f.0+q$J._%C.@+)&7&8&&%d%9&:+:+:+:+:+7$8$_&*.f.h.-+j j 0&a&[%m b&c&v v v v w x :&<& 6 $ $ ",
" - $ d&}&[.[.E$@%G$e&f&g&h&j@f.f.f.f.0+q$J._%C.C.C.C.%%&%d%9&:+:+:+:+:+7$8$i&*.f.h.-+j j j k j&m k&l&v v v v w x m&n& 6 $ $ ",
" - $ d&o&[.[.E$@%G$p&q&g&r&j@f.f.f.f.0+q$J._%C.C.C.C.%%&%d%s&:+:+:+:+:+7$8$t&*.f.h.-+j j j j j&m k&l&v v v v w x m&u& 6 $ $ ",
" - $ d&v&[.[.E$@%G$p&q&g&w&j@f.f.f.f.0+q$J.x&@+C.C.C.%%&%d%s&:+:+:+:+:+7$8$t&*.f.h.-+j j j j j&m k&y&v v v v w x m&u& 6 $ $ ",
" - $ 0%z&[.[.E$@%G$p&q&g&A&j@f.f.f.f.0+q$J.B&C&C.C.C.%%&%d%s&:+:+:+:+:+7$8$D&*.f.h.-+j j j j j&m k&y&v v v v w x m&u& 6 $ $ ",
" - $ 0%E&[.[.E$@%G$p&q&g&F&j@f.f.f.f.0+q$J.B&C&C.C.C.%%&%d%G&:+:+:+:+:+7$8$D&*.f.h.-+j j j j j&m H&y&v v v v w x I&2# 6 $ $ ",
" - $ J&K&L&L&M&N&O&P&Q&R&S&T&U&U&U&U&U&V&W&X&Y&*#*#*#Z&-#`& *########.*+*@*#*$*U&%*&*********=*-*;*>* # # # # #.#,*'* 6 $ $ ",
" - )*@ 6 $ $ ",
" . = !*a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#+ $ $ ",
". ~*j#$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ",
"+ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ "};

753
assets/bookshelf_03.xpm Normal file
View File

@ -0,0 +1,753 @@
/* XPM */
static char * bookshelf_03_xpm[] = {
"64 64 686 2",
" c #9E7449",
". c #9D7348",
"+ c #835A32",
"@ c #9C7247",
"# c #845B33",
"$ c #754C24",
"% c #875E36",
"& c #774E26",
"* c #795028",
"= c #835A31",
"- c #865D35",
"; c #744C24",
"> c #744B24",
", c #734B24",
"' c #8E653C",
") c #8F663C",
"! c #634020",
"~ c #603E1F",
"{ c #5F3E1F",
"] c #593A1E",
"^ c #58391E",
"/ c #55371E",
"( c #52351D",
"_ c #50351D",
": c #4B311C",
"< c #462E1B",
"[ c #452D1A",
"} c #413B30",
"| c #336B6D",
"1 c #336E72",
"2 c #336766",
"3 c #335F58",
"4 c #473D2D",
"5 c #9B7247",
"6 c #8F663D",
"7 c #4A301B",
"8 c #412A1A",
"9 c #412B1B",
"0 c #296E72",
"a c #01919A",
"b c #01939B",
"c c #02888A",
"d c #027D78",
"e c #386058",
"f c #9B7248",
"g c #49301B",
"h c #402A19",
"i c #3F2C19",
"j c #3F2F19",
"k c #3F3019",
"l c #49382D",
"m c #554840",
"n c #65574F",
"o c #827870",
"p c #837972",
"q c #5E524E",
"r c #4F433F",
"s c #247377",
"t c #01B0B6",
"u c #02898C",
"v c #37615A",
"w c #425017",
"x c #2D6B11",
"y c #20730E",
"z c #187C0B",
"A c #14810A",
"B c #167D0A",
"C c #1E640A",
"D c #2B590E",
"E c #373D15",
"F c #3F2918",
"G c #3F291A",
"H c #3F2A1D",
"I c #3F2B22",
"J c #3F2A1F",
"K c #B4B2B0",
"L c #F9FAFA",
"M c #FAFBFB",
"N c #FBFCFB",
"O c #FBFCFC",
"P c #DBE5F8",
"Q c #D6E1F5",
"R c #629CA6",
"S c #01B1B7",
"T c #366159",
"U c #3A6C14",
"V c #088E07",
"W c #088D07",
"X c #017901",
"Y c #007500",
"Z c #2B580F",
"` c #3E2818",
" . c #403E67",
".. c #425299",
"+. c #42559D",
"@. c #4357A1",
"#. c #435CA9",
"$. c #4259A4",
"%. c #364C92",
"&. c #37498D",
"*. c #3D2E35",
"=. c #BFBDBC",
"-. c #FEFFFF",
";. c #F8FBFE",
">. c #EEF4FE",
",. c #F5F9FE",
"'. c #DFE9FC",
"). c #DBE7FB",
"!. c #7FB7C5",
"~. c #3E6E14",
"{. c #2A590E",
"]. c #3D2817",
"^. c #415299",
"/. c #456CD1",
"(. c #446BD0",
"_. c #2E60C3",
":. c #2D5EC0",
"<. c #374172",
"[. c #BFBEBC",
"}. c #F2F7FE",
"|. c #DDE8FC",
"1. c #EDF3FD",
"2. c #A1C2D2",
"3. c #34625A",
"4. c #426E15",
"5. c #099B08",
"6. c #09A408",
"7. c #089507",
"8. c #2D5A16",
"9. c #5D514A",
"0. c #7F766F",
"a. c #605652",
"b. c #3E2A1D",
"c. c #3C2717",
"d. c #40529A",
"e. c #466DD1",
"f. c #466ED2",
"g. c #446CD1",
"h. c #2D5FC2",
"i. c #384B8E",
"j. c #C6C3C2",
"k. c #F4F8FE",
"l. c #DEE8FC",
"m. c #A2C3D3",
"n. c #2E655D",
"o. c #416E15",
"p. c #09A008",
"q. c #0AB009",
"r. c #6E8362",
"s. c #F6F7F7",
"t. c #E0E8F5",
"u. c #6A6363",
"v. c #3B2616",
"w. c #507DD8",
"x. c #598BDE",
"y. c #4871D3",
"z. c #384B8F",
"A. c #C6C4C2",
"B. c #F6F9FE",
"C. c #DEE9FC",
"D. c #2D655D",
"E. c #099E08",
"F. c #7A8C6F",
"G. c #FDFFFF",
"H. c #E4ECFA",
"I. c #736D6F",
"J. c #3A2516",
"K. c #507ED8",
"L. c #5A8CDF",
"M. c #4A75D4",
"N. c #374B8F",
"O. c #798C6F",
"P. c #726D6F",
"Q. c #392415",
"R. c #3F529A",
"S. c #2C655D",
"T. c #406E14",
"U. c #099C08",
"V. c #736E70",
"W. c #372415",
"X. c #364A8F",
"Y. c #C6C3C1",
"Z. c #F7FAFE",
"`. c #436F15",
" + c #788C6F",
".+ c #E5EDFB",
"++ c #898A92",
"@+ c #362314",
"#+ c #3E519A",
"$+ c #4B75D4",
"%+ c #354A8F",
"&+ c #C5C3C1",
"*+ c #F9FBFE",
"=+ c #31675E",
"-+ c #4A7017",
";+ c #788B6E",
">+ c #8A8B93",
",+ c #352214",
"'+ c #5A8DDF",
")+ c #4C78D5",
"!+ c #386A60",
"~+ c #9B7348",
"{+ c #8A8A93",
"]+ c #342113",
"^+ c #3D519A",
"/+ c #4D79D6",
"(+ c #344A8F",
"_+ c #EAF1FD",
":+ c #332012",
"<+ c #30488F",
"[+ c #BEBDBC",
"}+ c #FAFDFF",
"|+ c #E9F0FD",
"1+ c #028C8F",
"2+ c #497017",
"3+ c #778B6E",
"4+ c #898A93",
"5+ c #321F12",
"6+ c #3C519A",
"7+ c #BDBDBC",
"8+ c #FDFEFF",
"9+ c #028D90",
"0+ c #39766A",
"a+ c #9C744A",
"b+ c #497016",
"c+ c #311E11",
"d+ c #4E7AD6",
"e+ c #2F478E",
"f+ c #E0EAFC",
"g+ c #407B6D",
"h+ c #4A7016",
"i+ c #0AAE09",
"j+ c #099F08",
"k+ c #778A6E",
"l+ c #301E10",
"m+ c #4F7BD7",
"n+ c #5686DC",
"o+ c #FCFEFF",
"p+ c #547319",
"q+ c #088F07",
"r+ c #089007",
"s+ c #898992",
"t+ c #2F1D10",
"u+ c #3B509A",
"v+ c #456DD1",
"w+ c #2E478E",
"x+ c #557319",
"y+ c #768A6D",
"z+ c #888992",
"A+ c #2E1C0F",
"B+ c #BDBCBC",
"C+ c #02888B",
"D+ c #4E7A6A",
"E+ c #758A6D",
"F+ c #2D1B0F",
"G+ c #3A509A",
"H+ c #2D478E",
"I+ c #02878A",
"J+ c #597968",
"K+ c #9D744A",
"L+ c #878992",
"M+ c #2B1A0E",
"N+ c #2C478E",
"O+ c #75896D",
"P+ c #878892",
"Q+ c #2A190E",
"R+ c #39509A",
"S+ c #2C468E",
"T+ c #5A7968",
"U+ c #75896C",
"V+ c #868891",
"W+ c #29190D",
"X+ c #395099",
"Y+ c #2B468E",
"Z+ c #6F7965",
"`+ c #74896C",
" @ c #28180D",
".@ c #2E5FC1",
"+@ c #2C478D",
"@@ c #BCBBBB",
"#@ c #FDFEFD",
"$@ c #FDFDFD",
"%@ c #FCFDFC",
"&@ c #DDE6F9",
"*@ c #A2C1CF",
"=@ c #169098",
"-@ c #209098",
";@ c #208788",
">@ c #217D76",
",@ c #757863",
"'@ c #59731D",
")@ c #238D0F",
"!@ c #238C0F",
"~@ c #20790A",
"{@ c #26750D",
"]@ c #778565",
"^@ c #EDE8E4",
"/@ c #F0EBE7",
"(@ c #D8D7DB",
"_@ c #8A807D",
":@ c #513822",
"<@ c #5C4127",
"[@ c #62462B",
"}@ c #63472B",
"|@ c #735333",
"1@ c #765535",
"2@ c #79647A",
"3@ c #7C70A0",
"4@ c #776A96",
"5@ c #7A6B8D",
"6@ c #7C6366",
"7@ c #A7907D",
"8@ c #C8B4A4",
"9@ c #C1AB97",
"0@ c #BBA188",
"a@ c #BAA087",
"b@ c #AB8E75",
"c@ c #A9896E",
"d@ c #9A8164",
"e@ c #8B7857",
"f@ c #9A764F",
"g@ c #9B754F",
"h@ c #9B754D",
"i@ c #9B744C",
"j@ c #875E35",
"k@ c #9B7347",
"l@ c #9B7548",
"m@ c #9B7447",
"n@ c #9B7448",
"o@ c #9D754A",
"p@ c #A27B55",
"q@ c #A07952",
"r@ c #9D744B",
"s@ c #9C7348",
"t@ c #8B6239",
"u@ c #8B633A",
"v@ c #8C633A",
"w@ c #936940",
"x@ c #946A40",
"y@ c #966C42",
"z@ c #986E44",
"A@ c #996F44",
"B@ c #8F653C",
"C@ c #764D25",
"D@ c #774E27",
"E@ c #825931",
"F@ c #6E4823",
"G@ c #6E4723",
"H@ c #6B4622",
"I@ c #694421",
"J@ c #684421",
"K@ c #644121",
"L@ c #7A5530",
"M@ c #452D1B",
"N@ c #442D1A",
"O@ c #432C1A",
"P@ c #422C1A",
"Q@ c #452C1B",
"R@ c #4E2C1C",
"S@ c #512C1C",
"T@ c #4C2B1A",
"U@ c #432B1A",
"V@ c #7B5937",
"W@ c #412B1A",
"X@ c #402F19",
"Y@ c #3E3818",
"Z@ c #335215",
"`@ c #306313",
" # c #2E6B12",
".# c #2E6A12",
"+# c #314F13",
"@# c #3B3717",
"## c #402E19",
"$# c #422B1A",
"%# c #832E25",
"&# c #B23230",
"*# c #CF3537",
"=# c #D83639",
"-# c #D73538",
";# c #BE2223",
"># c #9D251F",
",# c #805837",
"'# c #3F3226",
")# c #37433B",
"!# c #344943",
"~# c #3E3326",
"{# c #443021",
"]# c #54473F",
"^# c #5A4D44",
"/# c #73675F",
"(# c #827971",
"_# c #7E746D",
":# c #5D514C",
"<# c #50433F",
"[# c #463328",
"}# c #2F6612",
"|# c #0E8B08",
"1# c #0A8D07",
"2# c #037B02",
"3# c #057301",
"4# c #2E5610",
"5# c #453124",
"6# c #4E3E36",
"7# c #402A1A",
"8# c #442A1A",
"9# c #B33231",
"0# c #DC363A",
"a# c #DB3539",
"b# c #CA2124",
"c# c #C62023",
"d# c #8E5838",
"e# c #5F3D1F",
"f# c #3E3025",
"g# c #12858B",
"h# c #059098",
"i# c #04939B",
"j# c #0E7A76",
"k# c #3E3022",
"l# c #A09C99",
"m# c #F8F9F9",
"n# c #FAFAFA",
"o# c #E3EBF9",
"p# c #D8E3F6",
"q# c #999BA6",
"r# c #027C02",
"s# c #3C612C",
"t# c #CAC8C7",
"u# c #DDE0E6",
"v# c #82828A",
"w# c #452919",
"x# c #B93332",
"y# c #C72023",
"z# c #955738",
"A# c #5E3D1F",
"B# c #3D2E18",
"C# c #344B14",
"D# c #2D6412",
"E# c #2D6212",
"F# c #344327",
"G# c #078F97",
"H# c #01A2A9",
"I# c #01A8AF",
"J# c #087D78",
"K# c #3D2F23",
"L# c #E6EFFD",
"M# c #A7ACBA",
"N# c #2C6B11",
"O# c #099708",
"P# c #099D08",
"Q# c #027D02",
"R# c #47693C",
"S# c #442819",
"T# c #B83232",
"U# c #965738",
"V# c #5E3D1E",
"W# c #2C6911",
"X# c #0B8C07",
"Y# c #04761F",
"Z# c #019097",
"`# c #01A3AA",
" $ c #01A9AF",
".$ c #3C2F22",
"+$ c #AFADBC",
"@$ c #B2436E",
"#$ c #B84572",
"$$ c #B64370",
"%$ c #AE3B62",
"&$ c #8F344E",
"*$ c #2F6B13",
"=$ c #027E02",
"-$ c #A7AFC4",
";$ c #415298",
">$ c #41539A",
",$ c #3D4F96",
"'$ c #403B65",
")$ c #C82023",
"!$ c #A35739",
"~$ c #2A6A10",
"{$ c #0AA609",
"]$ c #00771F",
"^$ c #3A2E22",
"/$ c #E7B3D2",
"($ c #F5589B",
"_$ c #F35698",
":$ c #E64986",
"<$ c #E04782",
"[$ c #416B20",
"}$ c #0AAF09",
"|$ c #46683C",
"1$ c #A8B8E7",
"2$ c #4972D3",
"3$ c #3D67CC",
"4$ c #394F98",
"5$ c #B83335",
"6$ c #DC373B",
"7$ c #A45739",
"8$ c #5D3C1E",
"9$ c #0AAB09",
"0$ c #392E21",
"a$ c #E9B3D3",
"b$ c #E24783",
"c$ c #426B20",
"d$ c #A8B8E8",
"e$ c #3E69CC",
"f$ c #38529D",
"g$ c #B83336",
"h$ c #E13E43",
"i$ c #E6454B",
"j$ c #296A0F",
"k$ c #382D21",
"l$ c #45683C",
"m$ c #4E7AD7",
"n$ c #3754A5",
"o$ c #B83439",
"p$ c #E23E44",
"q$ c #E7454B",
"r$ c #5D3C1D",
"s$ c #286A0F",
"t$ c #077D78",
"u$ c #372C21",
"v$ c #E24782",
"w$ c #3657AC",
"x$ c #B7343B",
"y$ c #E03D42",
"z$ c #276A0F",
"A$ c #362C20",
"B$ c #F65CA0",
"C$ c #F663A7",
"D$ c #F666AB",
"E$ c #F45FA2",
"F$ c #406B20",
"G$ c #C92023",
"H$ c #B25739",
"I$ c #5C3B1D",
"J$ c #266A0E",
"K$ c #0AA808",
"L$ c #352B20",
"M$ c #F872B8",
"N$ c #F873B9",
"O$ c #F567AB",
"P$ c #E74986",
"Q$ c #406A1F",
"R$ c #44683C",
"S$ c #B7333B",
"T$ c #B5573A",
"U$ c #09A708",
"V$ c #067D78",
"W$ c #332C21",
"X$ c #F661A5",
"Y$ c #0AAD09",
"Z$ c #4C77D5",
"`$ c #C92123",
" % c #B2593B",
".% c #25690E",
"+% c #057D79",
"@% c #2E3329",
"#% c #F660A3",
"$% c #3F6A1F",
"%% c #099A08",
"&% c #099608",
"*% c #089107",
"=% c #4B76D5",
"-% c #355AB5",
";% c #B7343E",
">% c #E03C42",
",% c #AF5B3D",
"'% c #5B3B1C",
")% c #25690D",
"!% c #2D3329",
"~% c #F569AD",
"{% c #43683B",
"]% c #355DBE",
"^% c #B73441",
"/% c #DE383D",
"(% c #DE3A3E",
"_% c #5B3A1C",
":% c #24690D",
"<% c #01AAB0",
"[% c #2C3329",
"}% c #F56AAE",
"|% c #E74987",
"1% c #43673B",
"2% c #B63441",
"3% c #23690D",
"4% c #09A608",
"5% c #01ACB3",
"6% c #047D79",
"7% c #2B3229",
"8% c #F65EA2",
"9% c #3E6A1F",
"0% c #C82224",
"a% c #AC5F3F",
"b% c #22690C",
"c% c #01ADB3",
"d% c #2A3228",
"e% c #F65DA0",
"f% c #3E6A1E",
"g% c #42673B",
"h% c #C82324",
"i% c #AA6140",
"j% c #5A3A1C",
"k% c #21690C",
"l% c #293128",
"m% c #F872B7",
"n% c #3D6A1E",
"o% c #345DBE",
"p% c #B63340",
"q% c #5C3B1C",
"r% c #01ABB2",
"s% c #283027",
"t% c #F5599C",
"u% c #F55B9E",
"v% c #F35799",
"w% c #4B75D5",
"x% c #588ADE",
"y% c #315DBE",
"z% c #AD323F",
"A% c #5E3C1D",
"B% c #01929B",
"C% c #01929A",
"D% c #047C78",
"E% c #273027",
"F% c #41673B",
"G% c #3D67CB",
"H% c #305DBE",
"I% c #AA313E",
"J% c #C82525",
"K% c #A56844",
"L% c #20690B",
"M% c #019099",
"N% c #262F27",
"O% c #3C6A1E",
"P% c #A56944",
"Q% c #1F690B",
"R% c #252F27",
"S% c #E8B8D8",
"T% c #3C691E",
"U% c #AA303E",
"V% c #1E690B",
"W% c #242E26",
"X% c #E6BCDB",
"Y% c #F55A9C",
"Z% c #3B691E",
"`% c #40673B",
" & c #1E690A",
".& c #232E26",
"+& c #2F5DBE",
"@& c #C72825",
"#& c #A07248",
"$& c #77512D",
"%& c #756E34",
"&& c #738234",
"*& c #738134",
"=& c #737638",
"-& c #738378",
";& c #73847A",
">& c #738379",
",& c #737864",
"'& c #75593A",
")& c #AE9D91",
"!& c #D5C9C1",
"~& c #C7BEC0",
"{& c #C1BABF",
"]& c #C79DA7",
"^& c #CF687B",
"/& c #D0677B",
"(& c #CE6679",
"_& c #C7616D",
":& c #C4616B",
"<& c #796F38",
"[& c #737833",
"}& c #737533",
"|& c #7A6E42",
"1& c #D2C6BE",
"2& c #CBC2C0",
"3& c #A39BB0",
"4& c #7A6E9C",
"5& c #776993",
"6& c #A45A44",
"7& c #C05B42",
"8& c #B6573A",
"9& c #B4583A",
"0& c #9F7348",
"a& c #825A32",
"b& c #8A6138",
"c& c #865D34",
" . + ",
" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ # $ ",
" % & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & * = $ $ ",
" - $ $ $ $ $ $ $ ; ; ; ; ; ; > > > > > > > > > > > > , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ; ' ) $ $ ",
" - ; ! ~ ~ ~ { ] ^ ^ ^ ^ ^ / ( ( ( ( ( _ : : : : : : < [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ } | 1 1 1 2 3 4 5 6 $ $ ",
" - > 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 0 a a b b c d e f 6 $ $ ",
" - > g h i j k j i h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h l m n o p o q r s a b t t u d v f 6 $ $ ",
" - > w x y z A B C D E F F F F F F F F F F F F F F F F F F F F F F F F G H I J G F F K L M N O M P Q R a b S S u d T f 6 $ $ ",
" - > U V V V V W X Y Z ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ...+.@.#.$.%.&.*.=.-.-.;.>.,.'.).!.a b S S u d T f 6 $ $ ",
" - > ~.V V V V W X Y {.].].].].].].].].].].].].].].].].].].].].].].^././././.(._.:.<.[.-.-.}.|.1.'.|.2.a b S S u d 3.f 6 $ $ ",
" - > 4.V V 5.6.7.X Y 8.9.0.a.b.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.d././.e.f.g._.h.i.j.-.-.k.l.1.'.|.m.a b S S u d n.f 6 $ $ ",
" - > o.V V p.q.5.X Y r.s.M t.u.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.d././.w.x.y._.h.z.A.-.-.B.C.1.'.|.m.a b S S u d D.f 6 $ $ ",
" - > o.V V p.q.E.X Y F.N G.H.I.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.d././.K.L.M._.h.N.A.-.-.B.C.1.'.|.m.a b S S u d D.f 6 $ $ ",
" - > o.V V p.q.p.X Y O.N G.H.P.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.R././.K.L.M._.h.N.j.-.-.B.C.1.'.|.m.a b S S u d S.f 6 $ $ ",
" - > T.V V U.q.p.X Y O.N G.H.V.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.R././.K.L.M._.h.X.Y.-.-.Z.C.1.'.|.m.a b S S u d S.f 6 $ $ ",
" - > `.V V U.q.p.X Y +N G..+++@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+#+/./.K.L.$+_.h.%+&+-.-.*+C.1.'.|.m.a b S S u d =+f 6 $ $ ",
" - ; -+V V U.q.p.X Y ;+N G..+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+#+/./.K.'+)+_.h.%+&+-.-.*+C.1.C.|.m.a b S S u d !+~+6 $ $ ",
" - ; -+V V U.q.p.X Y ;+N G..+{+]+]+]+]+]+]+]+]+]+]+]+]+]+]+]+]+]+]+^+/./.K.'+/+_.h.(+&+-.-.*+C._+C.|.m.a b S S u d !+~+6 $ $ ",
" - ; -+V V U.q.p.X Y ;+N G..+{+:+:+:+:+:+:+:+:+:+:+:+:+:+:+:+:+:+:+^+/./.K.'+/+_.h.<+[+-.-.}+C.|+C.|.m.a b S S 1+d !+~+6 $ $ ",
" - ; 2+V V U.q.p.X Y 3+N G..+4+5+5+5+5+5+5+5+5+5+5+5+5+5+5+5+5+5+5+6+/./.K.'+/+_.h.<+7+-.-.8+'.|+C.|.m.a b S S 9+d 0+a+6 $ $ ",
" - ; b+V V U.q.p.X Y 3+N G..+++c+c+c+c+c+c+c+c+c+c+c+c+c+c+c+c+c+c+6+/./.K.'+d+_.h.e+7+-.-.8+f+_+C.|.m.a b S S 9+d g+a+6 $ $ ",
" - ; h+V V U.i+j+X Y k+N G..+++l+l+l+l+l+l+l+l+l+l+l+l+l+l+l+l+l+l+6+/./.m+n+/+_.h.e+7+-.-.-.8+o+C.|.m.a b S S 9+d g+a+6 $ $ ",
" - $ p+V V q+r+V X Y k+N G..+s+t+t+t+t+t+t+t+t+t+t+t+t+t+t+t+t+t+t+u+/./.v+e.g._.h.w+7+-.-.-.-.8+'.|.m.a b t t 9+d g+a+6 $ $ ",
" - $ x+V V V V W X Y y+N G..+z+A+A+A+A+A+A+A+A+A+A+A+A+A+A+A+A+A+A+u+/./././.(._.h.w+B+-.-.-.-.8+'.|.m.a a b b C+d D+a+6 $ $ ",
" - $ x+V V V V W X Y E+N G..+z+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G+/./././.(._.h.H+B+-.-.-.-.8+'.|.m.a a a a I+d J+K+6 $ $ ",
" - $ x+V V V V W X Y E+N G..+L+M+M+M+M+M+M+M+M+M+M+M+M+M+M+M+M+M+M+G+/./././.(._.h.N+B+-.-.-.-.8+'.|.m.a a a a I+d J+K+6 $ $ ",
" - $ x+V V V V W X Y O+N G..+P+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+R+/./././.(._.h.S+B+-.-.-.-.8+'.|.m.a a a a I+d T+K+6 $ $ ",
" - $ x+V V V V W X Y U+N G..+V+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+X+/./././.(._.h.Y+B+-.-.-.-.8+'.|.m.a a a a I+d Z+ 6 $ $ ",
" - $ x+V V V V W X Y `+N G..+V+ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @X+/./././.(._..@+@@@#@$@%@%@O &@P *@=@-@-@-@;@>@,@ 6 $ $ ",
" - $ '@)@)@)@)@!@~@{@]@^@/@(@_@:@:@<@[@[@}@|@1@1@1@1@1@1@1@1@1@1@1@2@3@3@3@3@3@4@5@6@7@8@9@0@0@a@b@c@d@e@f@g@g@h@i@a+ 6 $ $ ",
" % j@k@l@l@l@l@l@m@n@o@p@p@q@r@s@s@. . . . 6 $ $ ",
" ) t@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@v@) 6 6 6 6 6 6 6 w@x@x@x@x@x@x@x@y@z@z@z@z@z@z@z@A@s@. . . . . . . . . . . B@$ $ ",
" - $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ C@C@C@C@C@C@C@C@C@& & & & & & & & & & & & & & & & & & D@E@j@$ $ ",
" - $ ; > > , , , , , , , , , , , , , , , , , , , , , , , F@G@G@G@H@I@I@I@J@K@K@K@K@! ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ L@. 6 $ $ ",
" - $ ! : g M@[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ N@N@N@N@N@O@O@O@O@O@O@O@O@P@P@P@P@P@P@P@P@P@Q@R@S@S@S@T@U@V@ 6 $ $ ",
" - $ { W@W@W@W@W@W@W@W@W@W@W@W@W@W@W@W@W@W@W@W@W@W@W@W@W@W@X@Y@Z@`@ #.#+#@###W@W@W@W@W@W@W@W@W@W@$#%#&#*#=#=#-#;#>#,# 6 $ $ ",
" - $ { h h h h h '#)#!#~#h {#]#^#/#(#_#:#<#[#h h h h h h h }#|#1#V V W 2#3#4#5#]#6#7#h h h h h h 8#9#0#0#0#0#a#b#c#d# 6 $ $ ",
" - $ e#F F F F f#g#h#i#j#k#l#m#n#M O M o#p#q#F F F F F F F x V V V V V r#Y s#t#m#u#v#F F F F F F w#x#0#0#0#0#a#b#y#z# 6 $ $ ",
" - $ A#B#C#D#E#F#G#H#I#J#K#=.-.-.-.-.G.L#|.M#` ` ` ` ` ` ` N#V V O#U.P#Q#Y R#n#-.>.M#` ` ` ` ` ` S#T#0#0#0#0#a#b#y#U# 6 $ $ ",
" - $ V#W#X#q+W Y#Z#`# $J#.$=.-.-.-.-.G.L#|.+$@$#$#$#$$$%$&$*$V r+i+q.i+=$Y R#n#-.>.-$;$>$>$>$,$X.'$T#0#0#0#0#a#b#)$!$ 6 $ $ ",
" - $ V#~$q+{$E.]$Z#`# $J#^$[+-.-.-.-.G.L#|./$($($($($_$:$<$[$V r+}$q.i+=$Y |$n#-.>.1$/./.v+2$3$h.4$5$0#0#0#6$a#b#)$7$ 6 $ $ ",
" - $ 8$~$q+9$j+]$Z#`# $J#0$[+-.-.-.-.G.L#|.a$($($($($_$:$b$c$V r+}$q.i+=$Y |$L -.>.d$/././+x.e$h.f$g$0#0#h$i$0#b#)$7$ 6 $ $ ",
" - $ 8$j$q+9$j+]$Z#`# $J#k$[+-.-.-.-.G.L#|.a$($($($($_$:$b$[$V r+}$q.i+=$Y l$L -.>.d$/./.m$x.e$h.n$o$0#0#p$q$0#b#)$!$ 6 $ $ ",
" - $ r$s$q+9$j+]$Z#`# $t$u$[+-.-.-.-.G.L#|.a$($($($($_$:$v$[$V r+}$q.i+=$Y l$L -.>.d$/./.m$x.e$h.w$x$0#0#y$i$0#b#)$7$ 6 $ $ ",
" - $ r$z$q+9$j+]$Z#`# $t$A$[+-.-.-.-.G.L#|.a$($B$C$D$E$:$v$F$V r+}$q.i+=$Y l$L -.>.d$/./.m$x.e$h.w$x$0#0#y$i$0#b#G$H$ 6 $ $ ",
" - $ I$J$q+K$j+]$Z#`# $t$L$[+-.-.-.-.G.L#|.a$($C$M$N$O$P$v$Q$V r+}$q.i+=$Y R$L -.>.d$/./.m$x.e$h.w$S$0#0#y$i$0#b#G$T$ 6 $ $ ",
" - $ I$J$q+U$j+]$Z#`# $V$W$[+-.-.-.-.G.L#|.a$($X$N$N$O$P$v$Q$V r+i+}$Y$=$Y R$L -.>.d$/./.Z$x.e$h.w$S$0#0#y$i$0#b#`$ % 6 $ $ ",
" - $ I$.%q+U$j+]$Z#`# $+%@%[+-.-.-.-.G.L#|.a$($#%M$N$O$P$v$$%V q+%%&%*%r#Y R$L -.>.d$/./.=%x.e$h.-%;%0#0#>%i$0#b#`$,% 6 $ $ ",
" - $ '%)%q+U$j+]$Z#`# $+%!%[+-.-.-.-.G.L#|.a$($#%M$N$~%P$v$$%V V V V V r#Y {%L -.>.d$/./.=%x.e$h.]%^%0#0#/%(%a#b#`$,% 6 $ $ ",
" - $ _%:%q+U$j+]$Z#`#<%+%[%7+-.-.-.-.G.L#|.a$($#%M$N$}%|%v$$%V V V V V r#Y 1%L -.>.d$/./.=%x.e$h.]%2%0#0#0#0#a#b#`$,% 6 $ $ ",
" - $ _%3%q+4%j+]$Z#`#5%6%7%7+-.-.-.-.G.L#|.a$($8%M$N$}%|%v$9%V V V V V r#Y 1%L -.>.d$/./.=%x.e$h.]%2%0#0#0#0#a#b#0%a% 6 $ $ ",
" - $ _%b%V q+V ]$Z#`#c%6%d%7+-.-.-.-.G.L#|.a$($e%M$N$}%|%v$f%V V V V V r#Y g%L -.>.d$/./.=%x.e$h.]%2%0#0#0#0#a#b#h%i% 6 $ $ ",
" - $ j%k%V V W ]$Z#`#c%6%l%7+-.-.-.-.G.L#|.a$($B$m%M$~%P$v$n%V V V V V r#Y g%L -.>.d$/./.=%x.e$h.o%p%0#0#0#0#a#b#h%i% 6 $ $ ",
" - $ q%k%V V W ]$Z#H#r%6%s%B+-.-.-.-.G.L#|.a$($t%8%u%v%:$v$n%V V V V V r#Y g%L -.>.d$/./.w%x%e$h.y%z%0#0#0#0#a#b#h%i% 6 $ $ ",
" - $ A%k%V V W ]$Z#B%C%D%E%B+-.-.-.-.G.L#|.a$($($($($_$:$v$n%V V V V V r#Y F%L -.>.d$/././.f.G%h.H%I%0#0#0#0#a#b#J%K% 6 $ $ ",
" - $ A%L%V V W ]$Z#a M%D%N%B+-.-.-.-.G.L#|.a$($($($($_$:$v$O%V V V V V r#Y F%L -.>.d$/./././.G%h.H%I%0#0#0#0#a#b#J%P% 6 $ $ ",
" - $ A%Q%V V W ]$Z#a M%D%R%B+-.-.-.-.G.L#|.S%t%($($($_$:$v$T%V V V V V r#Y F%L -.>.d$/./././.G%h.H%U%0#0#0#0#a#b#J%P% 6 $ $ ",
" - $ r$V%V V W ]$Z#a M%D%W%B+-.-.-.-.G.L#|.X%Y%($($($_$:$v$Z%V V V V V r#Y `%L -.>.d$/./././.G%h.H%U%0#0#0#0#a#b#J%P% 6 $ $ ",
" - $ r$ &V V W ]$Z#a M%D%.&B+-.-.-.-.G.L#|.X%Y%($($($_$:$v$Z%V V V V V r#Y `%L -.>.d$/./././.G%h.+&U%0#0#0#0#a#b#@&#& 6 $ $ ",
" - $ $&%&&&&&*&=&-&;&>&,&'&)&!&!&!&!&!&~&{&]&^&/&/&/&(&_&:&<&&&&&&&&&&&[&}&|&1&!&2&3&3@3@3@3@4&4@5&6&7&7&7&7&7&8&9&0& 6 $ $ ",
" - a&@ 6 $ $ ",
" . = b&u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@u@+ $ $ ",
". c&C@$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ",
"+ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ "};

124
assets/cobblestone.xpm Normal file
View File

@ -0,0 +1,124 @@
/* XPM */
static char * cobblestone_xpm[] = {
"64 64 57 1",
" c #636363",
". c #5F5F5F",
"+ c #575757",
"@ c #5B5B5B",
"# c #727272",
"$ c #7A7A7A",
"% c #787878",
"& c #6A6A6A",
"* c #626262",
"= c #5E5E5E",
"- c #686868",
"; c #6D6D6D",
"> c #767676",
", c #6F6F6F",
"' c #6B6B6B",
") c #5C5C5C",
"! c #565656",
"~ c #545454",
"{ c #747474",
"] c #818181",
"^ c #848484",
"/ c #7B7B7B",
"( c #797979",
"_ c #707070",
": c #5A5A5A",
"< c #525252",
"[ c #676767",
"} c #585858",
"| c #656565",
"1 c #606060",
"2 c #555555",
"3 c #7E7E7E",
"4 c #646464",
"5 c #717171",
"6 c #6C6C6C",
"7 c #595959",
"8 c #515151",
"9 c #777777",
"0 c #757575",
"a c #7D7D7D",
"b c #666666",
"c c #808080",
"d c #838383",
"e c #535353",
"f c #7F7F7F",
"g c #6E6E6E",
"h c #4E4E4E",
"i c #828282",
"j c #7C7C7C",
"k c #505050",
"l c #696969",
"m c #4C4C4C",
"n c #737373",
"o c #5D5D5D",
"p c #4D4D4D",
"q c #4F4F4F",
"r c #616161",
" .+@#$$$$%& *=@@-;>,'*)+!~{]^/$$$$$$$$$$$(--(_:!!<,>_[ ",
" .!}#$$$(--&;>_;| 1@+!!!2*3^3$$$$$$$$$$$${4;(;}!=(5; ",
" *}+5$$$$((#64 .7!!!!!!!89^]$$$$$$$$$$$$$;40('7>0_- ",
" :!-$$aa$$& =}!!!!!!!!!8bc^/$$$$$$$$$$$$%4'$$((_,4 ",
" :!|(/]^d/(- 17!!!!!!!!!!!~e/^3$$$$$$$$$$$$(-4($${_& ",
" :+b(ad^f3a$g )!!!!!!!!!!!!!h6i]$$$$$$$$$$$(' '$$$5_& ",
" :}'$f^ij$$9$, @!!!!!!!!!!!!!k)3^/$$$$$$$$$0-4_(%%$>_6 ",
":}5$]^c$$$$(004@!!!!!!!!!!!!!8h>df$$$$$$$(g4l{{-::0$5,4 ",
"@#aida$$$$$(_(4)!!!!!!!!!!!!!2mbfi$$$$$$n[b5#[)!!2@(9_l :",
"9ad]/$$$$$$([('o!!!!!!!!!!!!!!p2(dj$$$9'b_5[.+!!!!8*(ng :*",
"cd3$$$$$$$$(b9,o!!!!!!!!!!!!!!hhn3f$(,-_#-*:!!!!!!!q,%_[ *@6(",
"ia$$$$$$$$$(l_9=!!!!!!!!!!!!2<pm[$f{_{0& .+!!!!!!!!<!%0; r.#$c",
"/$$$$$$$$$$$';( !!!!!!!!~88hmmmh[$$((g4*:!!!!!!!!!!!hb(#b r|%$]]",
"$$$$$$$$$$$$'|(;!2e88qpphqq~*b&>($$9l 1+!!!!!!!!!!!!<q{(g|_(/]3$",
"$$$$$((((9#,44((l[bbbb-;0%%9>00{5_%5 *+!!!!!!!!!!!!!!p*$$($/cj$$",
"5,,,;l|4||44bg$$$$$$(900#_g&lb44 b%[ :!!!!!!!!!!!!!!8q($$$a$(%0",
",,,,,,,_n9(((($$$$05__;&b4 rl{4r+!!!!!!!!!!!!!h+($$$#____",
",,,,,,g6'll[|4|-($5_;4 o5g .!!!!!!!!!!!!<h,$$$$$((%0",
" *1oo):+++!!!!!'${_& *o9& :!!!!!!!!!!2p.((,{$>|444",
"@++!!!!!!!!!!!!!~>%_6 )b%-*}!!!!!!!!!q!%(54|%(- =",
"!!!!!!!!!!!!!!!!e1(n,4 r}#>|1+!!!!!!!eq_$n[ b({4 }",
"!!!!!!!!!!!!!!!!!k5%_l *+|${4=!!!!!!2h'${' 1g$6 o",
"!!!!!!!!!!!!!!!!!8@({g *:+6$${4:!!!!!q1(>,4 on%b ",
"o!!!!!!!!!!!!!!!!2hg%_b 17:5//>${ }!!!<)(9_- *r({4",
"*+!!!!!!!!!!!!!!!!k}({' o+*9fa$0n$nr+!~@%(56 ol(6",
"4o!!!!!!!!!!!!!!!!ep6(_| 17:,a]j$$${n${.!o9$n,b *:n$",
"{ }!!!!!!!!!!!!!!!!p2%>& *)}|(]]/$$$$$,{$0&(${_& ..(",
"$;=!!!!!!!!!!!!!!!!kp'$#4 .71#3df$$$$$$$('{$$$9_,4 :l",
"5(l7!!!!!!!!!!!!!!!<m!(%l *@og/i^a$$$$$$$$$(l{$$#_& 1+",
"o(>r!!!!!!!!!!!!!!!2mp;$01 ,(3^da$$$$$$$$$$$>b0$0_6 @",
"!-$n:!!!!!!!!!!!!!eqmm4$$(($]^dj$$$$$$$$$$$$${[9$n_[ *",
"@}n$&+!!!!!!!~<8qhq< -9$$$$f^^j$$$$$$$$$$$$$$$,l((5g4 ",
"*+1(( 2eee8qq+ b-5%($$$$$($/i^a$$$$$$$$$$$$$$$(&&(9_' ",
" )+,$(>{{9(((($$/aff3$$${b;9jddj$$$$$$$$$$$$$$$%['(>_[ ",
" *+&$$$$$jffciddcfa/$#$9|**4#/ii/$$$$$$$$$$$$$$${45$n,| ",
" r+#/fcd^dd]fa/$$$$$n0(l*7+7=&%]]$$$$$$$$$$$$$$$$_4{(#;4 ",
" oo(]^^cf/$$$$$$$$$9;(; :!!!!}1{]]$$$$$$$$$$$$$$$(&40%5& ",
" :;3^c/$$$$$$$$$$$('9{4)!!!!!!!7'f]$$$$$$$$$$$$$$$04-(9_- ",
"*@(d]$$$$$$$$$$$$$5g(b1!!!!!!!!!!1a]$$$$$$$$$$$$(#& 4,$9_'4 ",
"=6fi$$$$$$$$$$$$$0[(6*+!!!!!!!!!!2)$c$$$$$$$(0_'|-g_9$j(9n;| ",
"=(dj$$$$$$$$$$$$(ln{ :!!!!!!!!!!!!87(3$$(n_,__#%$3f]ca$$#5>_[ ",
"gfa$$$$$$$$$$$$$;&%[=!!!!!!!!!!!!!qh;$(0((((($$]di3/$$$$${'9064 ",
"$c$$$$$$$$$$$$${|>g1+!!!!!!!!!!!!qhl($$(0{,&|_$d3$$$$$$$$${[{(ng",
"j$$$$$$$$$$$$$>|_0 7!!!!!!!!!!!2qqg$a%(ng[ b$d/$$$$$$$$$${|{$$",
"0,_59(($$$$$$(ll(&@!!!!!!!!!!!ep7nac/_(n& o(d/$$$$$$$$$$$#4{$",
"(({;||b;,5>((&40n1!!!!!!!!!!!8h1$]f$$_{0& =0ia$$$$$$$$$$${45$",
"4bg5%n,[4 444 _(|+!!!!!!!!!2qkg3da$$$,,0& o'cf$$$$$$$$$$$,4(6",
"oo. 4&5%9_gb4&(_:!!!!!!!!!ep)>]ij$$$$,,0& =&ff$$$$$$$$$$(-g{4",
"!!!+7o146{((($(r!!!!!!!!2kq[jd]/$$$$$5l>& 1 /]$$$$$$$$$$9|>l=",
"!!!!!!!+@.[#(${!~~22!!!<p+5c^]$$$$$$$n|9& @b$i3$$$$$$$$$,;{*+",
"!!!!!!!!!!+:|($0-bo<qqqq.(]^]$$$$$$$${|(& .*%$/c]j$$$$$$(->')!",
"!!!!!!!!!!!!@({##{{{>%%((f^i$$$$$$$$$>|%& 1*%5|6(aif/$$$${g9*+!",
"!!!!!!!!!!!!49_,&&&lll&n$f^f$$$$$$$$$>40g 1 %&:!!}'(fia$$$g%,:!!",
"!!!!!!!!!!!2b{_l *o%j^3$$$$$$$$$>4##r|%&:!!!!e!;$f]j(#(4!!!",
"!!!!!!!!!!!<65,4 @l$df$$$$$$$$$>4_0_(&=!!!!!!2k@5/3%(%@!!!",
"!!!!!!!!!!!<9_' =7%ff$$$$$$$$9& 5$(&1+!!!!!!!!<qb($$>+!!!",
"!!!!!!!!!!22{_l *+&j]$$$$$$9g4|,($# }!!!!!!!!!!8q>$$$572!",
"2!!!!!!!!!<|0_| })(]$$$(06|l5($$$# }!!!!!!!!!!k+($%($%.<",
"k<!!!!!!!!k'n, o+5a/(5l&_%jf3a(g(&.!!!!!!!!!!pl$9l*l>(,",
"0oq<!!!!!2q%_' o!b$$5n$3ci3/$$${'%-)!!!!!!!!<<%(,4 *o&(",
",%g2qe!!!8o(_l =!}($a]dcj$$$$$$$g'0|7!!!!!!!q-$n[ .o",
"}*0%bqqe2h&(_| r@!+*(a^]/$$$$$$$$$(l;{*+!!!!!~~%>; r",
"*:7g({1hmk%%_4 .@+}*_($a^f$$$$$$$$$$$0|n{1!!!!!8&%_[ ",
" )+*%$#r-$96 *o}!1'9/fj%$^c$$$$$$$$$$$$,40#)!!!2+%n; "};

124
assets/cobblestone_01.xpm Normal file
View File

@ -0,0 +1,124 @@
/* XPM */
static char * cobblestone_01_xpm[] = {
"64 64 57 1",
" c #636363",
". c #5F5F5F",
"+ c #575757",
"@ c #5B5B5B",
"# c #727272",
"$ c #7A7A7A",
"% c #787878",
"& c #6A6A6A",
"* c #626262",
"= c #5E5E5E",
"- c #686868",
"; c #6D6D6D",
"> c #767676",
", c #6F6F6F",
"' c #6B6B6B",
") c #5C5C5C",
"! c #565656",
"~ c #545454",
"{ c #747474",
"] c #818181",
"^ c #848484",
"/ c #7B7B7B",
"( c #797979",
"_ c #707070",
": c #5A5A5A",
"< c #525252",
"[ c #676767",
"} c #585858",
"| c #656565",
"1 c #606060",
"2 c #555555",
"3 c #7E7E7E",
"4 c #646464",
"5 c #717171",
"6 c #6C6C6C",
"7 c #595959",
"8 c #515151",
"9 c #777777",
"0 c #757575",
"a c #7D7D7D",
"b c #666666",
"c c #808080",
"d c #838383",
"e c #535353",
"f c #7F7F7F",
"g c #6E6E6E",
"h c #4E4E4E",
"i c #828282",
"j c #7C7C7C",
"k c #505050",
"l c #696969",
"m c #4C4C4C",
"n c #737373",
"o c #5D5D5D",
"p c #4D4D4D",
"q c #616161",
"r c #4F4F4F",
" .+@#$$$$%& *=@@-;>,'*)+!~{]^/$$$$$$$$$$$(--(_:!!<,>_[ ",
" .!}#$$$(--&;>_;| 1@+!!!2*3^3$$$$$$$$$$$${4;(;}!=(5; ",
" *}+5$$$$((#64 .7!!!!!!!89^]$$$$$$$$$$$$$;40('7>0_- ",
" :!-$$aa$$& =}!!!!!!!!!8bc^/$$$$$$$$$$$$%4'$$((_,4 ",
" :!|(/]^d/(- 17!!!!!!!!!!!~e/^3$$$$$$$$$$$$(-4($${_& ",
" :+b(ad^f3a$g )!!!!!!!!!!!!!h6i]$$$$$$$$$$$(' '$$$5_& ",
" :}'$f^ij$$9$, @!!!!!!!!!!!!!k)3^/$$$$$$$$$0-4_($($>_6 ",
":}5$]^c$$$$(004@!!!!!!!!!!!!!8h>df$$$$$$$(g4l0a3/59$5,4 ",
"@#aida$$$$$(_(4)!!!!!!!!!!!!!2mbfi$$$$$$n[b#a]3$$%'(9_l :",
"9ad]/$$$$$$([('o!!!!!!!!!!!!!!p2(dj$$$9'b5ai]/$$$$_;$ng :*",
"cd3$$$$$$$$(b9,o!!!!!!!!!!!!!!hhn3f$(,-5jida$$$$$$([{%_[ *@6(",
"ia$$$$$$$$$(l_9=!!!!!!!!!!!!2<pm[$f{_{j]^]/$$$$$$$$5-(0; q.#$c",
"/$$$$$$$$$$$';( !!!!!!!!~88hmmmh[$$$$c^da$$$$$$$$$$([,$#b q|%$]]",
"$$$$$$$$$$$$'|(;!2e88rpphrr~*b&>($$/i^]/$$$$$$$$$$$$549(g|_(/]3$",
"$$$$$((((9#,44((l[bbbb-;>((/3ff3j$(3^d/$$$$$$$$$$$$$(|;$$($/cj$$",
"5,,,;l|4||44bg$$$$$$/3fcidiffj$$$$#$i^a$$$$$$$$$$$$$$g4($$$a$(%0",
",,,,,,,_n9(((($$$$cd^d]fj$$$$$$$$$9,a^d/$$$$$$$$$$$$(--($$$#____",
",,,,,,g6'll[|4|-($^^]/$$$$$$$$$$$$$,{f^]$$$$$$$$$$$$#4{$$$$$((%0",
" *1oo):+++!!!!!'$c^f$$$$$$$$$$$$$$%-(]^a$$$$$$$$$$%|6$(,{$>|444",
"@++!!!!!!!!!!!!!~>j^]$$$$$$$$$$$$$$$;;$idj$$$$$$$$$'[((54|%(- =",
"!!!!!!!!!!!!!!!!e1$]^/$$$$$$$$$$$$$$>|0jdi$$$$$$$$n|0$n[ b({4 }",
"!!!!!!!!!!!!!!!!!k5a^f$$$$$$$$$$$$$$(46$a^c$$$$$$9b#${' 1g$6 o",
"!!!!!!!!!!!!!!!!!8@(]i$$$$$$$$$$$$$(&45$$ada$$$$(&6$>,4 on%b ",
"o!!!!!!!!!!!!!!!!2hgjda$$$$$$$$$$$0-|{//>$ad/$$$_&(9_- *q({4",
"*+!!!!!!!!!!!!!!!!k}(c]$$$$$$$$$(,4&%fa$0n$a]$$0'((56 ol(6",
"4o!!!!!!!!!!!!!!!!ep6/d/$$$$$$$0l|na]j$$${n$af(g%$n,b *:n$",
"{ }!!!!!!!!!!!!!!!!p2%3f$$$$$(g|6$]]/$$$$$,{$j>(${_& ..(",
"$;=!!!!!!!!!!!!!!!!kp'$]/$$${-l0fdf$$$$$$$('{$$$9_,4 :l",
"5(l7!!!!!!!!!!!!!!!<m!(j3$%6-#/i^a$$$$$$$$$(l{$$#_& 1+",
"o(>q!!!!!!!!!!!!!!!2mp;$/#6#(3^da$$$$$$$$$$$>b0$0_6 @",
"!-$n:!!!!!!!!!!!!!ermm4$$($$]^dj$$$$$$$$$$$$${[9$n_[ *",
"@}n$&+!!!!!!!~<8rhr< -9$$$$f^^j$$$$$$$$$$$$$$$,l((5g4 ",
"*+1(( 2eee8rr+ b-5%($$$$$$$/i^a$$$$$$$$$$$$$$$(&&(9_' ",
" )+,$(>{{9(((($$/aff3$$$adc/jddj$$$$$$$$$$$$$$$%['(>_[ ",
" *+&$$$$$jffciddcfa/$#$jdddd3jii/$$$$$$$$$$$$$$${45$n,| ",
" q+#/fcd^dd]fa/$$$$$n0$idj$jc]j]]$$$$$$$$$$$$$$$$_4{(#;4 ",
" oo(]^^cf/$$$$$$$$$9;$c^a$$$$/fa]]$$$$$$$$$$$$$$$(&40%5& ",
" :;3^c/$$$$$$$$$$$('9a^f$$$$$$$//c]$$$$$$$$$$$$$$$04-(9_- ",
"*@(d]$$$$$$$$$$$$$5g/d]$$$$$$$$$$#a]$$$$$$$$$$$$(#& 4,$9_'4 ",
"=6fi$$$$$$$$$$$$$0[(]d/$$$$$$$$$$%'/c$$$$$$$(0_'|-g_9$j(9n;| ",
"=(dj$$$$$$$$$$$$(lnada$$$$$$$$$$$$,l$3$$(n_,__#%$3f]ca$$#5>_[ ",
"gfa$$$$$$$$$$$$$;&$dc$$$$$$$$$$$$('4n$(0(($$$$$]di3/$$$$${'9064 ",
"$c$$$$$$$$$$$$${|9ci$$$$$$$$$$$$(&45$$$/fc]3${$d3$$$$$$$$${[{(ng",
"j$$$$$$$$$$$$$>|_jdj$$$$$$$$$$$9l4{$a%$ida$$(g$d/$$$$$$$$$${|{$$",
"0,_59(($$$$$$(ll$]3$$$$$$$$$$${|l>ac/_(]f$$$$6$d/$$$$$$$$$$$#4{$",
"(({;||b;,5>((&403]$$$$$$$$$$(g|6/]f$$_{cf$$$$_9ia$$$$$$$$$$${45$",
"4bg5%n,[4 444 _$i/$$$$$$$$$9&|{3da$$$,,ff$$$$,_cf$$$$$$$$$$$,4(6",
"oo. 4&5%9_gb4&(3a$$$$$$$$$n|&%]ij$$$$,,ff$$$$5,ff$$$$$$$$$$(-g{4",
"!!!+7o146{((($$f$$$$$$$$('|_jd]/$$$$$5l3f$$$${6/]$$$$$$$$$$9|>l=",
"!!!!!!!+@.[#($({{0>9(((#b-0c^]$$$$$$$n|/f$$$$;;$i3$$$$$$$$$,;{*+",
"!!!!!!!!!!+:|($9__6b||||6(]^]$$$$$$$${|$f$$${'($/c]j$$$$$$(->')!",
"!!!!!!!!!!!!@({##{009((($f^i$$$$$$$$$>|(f$${'%5|6(aif/$$$${g9*+!",
"!!!!!!!!!!!!49_,&&&lll&n$f^f$$$$$$$$$>4>3$06%&:!!}'(fia$$$g%,:!!",
"!!!!!!!!!!!2b{_l *o%j^3$$$$$$$$$>4#j0g%&:!!!!e!;$f]j(#(4!!!",
"!!!!!!!!!!!<65,4 @l$df$$$$$$$$$>4_/0(&=!!!!!!2k@5/3%(%@!!!",
"!!!!!!!!!!!<9_' =7%ff$$$$$$$$9& 5$(&1+!!!!!!!!<rb($$>+!!!",
"!!!!!!!!!!22{_l *+&j]$$$$$$9g4|,($# }!!!!!!!!!!8r>$$$572!",
"2!!!!!!!!!<|0_| })(]$$$(06|l5($$$# }!!!!!!!!!!k+($%($%.<",
"k<!!!!!!!!k'n, o+5a/(5l&_%jf3a(g(&.!!!!!!!!!!pl$9l*l>(,",
"0or<!!!!!2r%_' o!b$$5n$3ci3/$$${'%-)!!!!!!!!<<%(,4 *o&(",
",%g2re!!!8o(_l =!}($a]dcj$$$$$$$g'0|7!!!!!!!r-$n[ .o",
"}*0%brre2h&(_| q@!+*(a^]/$$$$$$$$$(l;{*+!!!!!~~%>; q",
"*:7g({1hmk%%_4 .@+}*_($a^f$$$$$$$$$$$0|n{1!!!!!8&%_[ ",
" )+*%$#q-$96 *o}!1'9/fj%$^c$$$$$$$$$$$$,40#)!!!2+%n; "};

124
assets/cobblestone_02.xpm Normal file
View File

@ -0,0 +1,124 @@
/* XPM */
static char * cobblestone_02_xpm[] = {
"64 64 57 1",
" c #636363",
". c #5F5F5F",
"+ c #575757",
"@ c #5B5B5B",
"# c #727272",
"$ c #7A7A7A",
"% c #787878",
"& c #6A6A6A",
"* c #626262",
"= c #5E5E5E",
"- c #686868",
"; c #6D6D6D",
"> c #767676",
", c #6F6F6F",
"' c #6B6B6B",
") c #5C5C5C",
"! c #565656",
"~ c #545454",
"{ c #747474",
"] c #818181",
"^ c #848484",
"/ c #7B7B7B",
"( c #797979",
"_ c #707070",
": c #5A5A5A",
"< c #525252",
"[ c #676767",
"} c #585858",
"| c #656565",
"1 c #606060",
"2 c #555555",
"3 c #7E7E7E",
"4 c #646464",
"5 c #717171",
"6 c #6C6C6C",
"7 c #595959",
"8 c #515151",
"9 c #777777",
"0 c #757575",
"a c #7D7D7D",
"b c #666666",
"c c #808080",
"d c #838383",
"e c #535353",
"f c #7F7F7F",
"g c #6E6E6E",
"h c #4E4E4E",
"i c #828282",
"j c #7C7C7C",
"k c #505050",
"l c #696969",
"m c #4C4C4C",
"n c #737373",
"o c #5D5D5D",
"p c #4D4D4D",
"q c #616161",
"r c #4F4F4F",
" .+@#$$$$%& *=@@-;>,'*)+!~{]^/$$$$$$$$$$$(--(_:!!<,>_[ ",
" .!}#$$$(--&;>_;| 1@+!!!2*3^3$$$$$$$$$$$${4;(;}!=(5; ",
" *}+5$$$$((#64 .7!!!!!!!89^]$$$$$$$$$$$$$;40('7>0_- ",
" :!-$$aa$$& =}!!!!!!!!!8bc^/$$$$$$$$$$$$%4'$$((_,4 ",
" :!|(/]^d/(- 17!!!!!!!!!!!~e/^3$$$$$$$$$$$$(-4($${_& ",
" :+b(ad^f3a$g )!!!!!!!!!!!!!h6i]$$$$$$$$$$$(' '$$$5_& ",
" :}'$f^ij$$9$, @!!!!!!!!!!!!!k)3^/$$$$$$$$$0-4_((%$>_6 ",
":}5$]^c$$$$(004@!!!!!!!!!!!!!8h>df$$$$$$$(g4l09_b >$5,4 ",
"@#aida$$$$$(_(4)!!!!!!!!!!!!!2mbfi$$$$$$n[b5>5- **(9_l :",
"9ad]/$$$$$$([('o!!!!!!!!!!!!!!p2(dj$$$9'b_0#64 o[(ng :*",
"cd3$$$$$$$$(b9,o!!!!!!!!!!!!!!hhn3f$(,-5>#,[ *75%_[ *@6(",
"ia$$$$$$$$$(l_9=!!!!!!!!!!!!2<pm[$f{_{9n_64 =o(0; q.#$c",
"/$$$$$$$$$$$';( !!!!!!!!~88hmmmh[$$$(0_,[ *7&$#b q|%$]]",
"$$$$$$$$$$$$'|(;!2e88rpphrr~*b&>($$(#_;4 =}>(g|_(/]3$",
"$$$$$((((9#,44((l[bbbb-;0%%9>00{5_%>_,4 *+[$$($/cj$$",
"5,,,;l|4||44bg$$$$$$(900#_g&lb44 b%#_[ )}($$$a$(%0",
",,,,,,,_n9(((($$$$05__;&b4 ql9_g4 7=($$$#____",
",,,,,,g6'll[|4|-($5_;4 o50_6 =+5$$$$$((%0",
" *1oo):+++!!!!!'${_& *o%n_[ *+4((,{$>|444",
"@++!!!!!!!!!!!!!~>%_6 )b(#,| :o%(54|%(- =",
"!!!!!!!!!!!!!!!!e1(n,4 q}#%5;4 .}#$n[ b({4 }",
"!!!!!!!!!!!!!!!!!k5%_l *+|$9_' q}g${' 1g$6 o",
"!!!!!!!!!!!!!!!!!8@({g *:+6$$9_[ :|(>,4 on%b ",
"o!!!!!!!!!!!!!!!!2hg%_b 1}:5%_#$9,| o*(9_- *q({4",
"*+!!!!!!!!!!!!!!!!k}({' o+*>{- qg$9;4 1*%(56 ol(6",
"4o!!!!!!!!!!!!!!!!ep6(_| 17:g>gb 1g$9'* 9$n,b *:n$",
"{ }!!!!!!!!!!!!!!!!p2%>& *)}|0#64 =_$%g(${_& ..(",
"$;=!!!!!!!!!!!!!!!!kp'$#4 .7150_l )5$$$9_,4 :l",
"5(l7!!!!!!!!!!!!!!!<m!(%l *@og9n_[ *@5$$#_& 1+",
"o(>q!!!!!!!!!!!!!!!2mp;$01 ,(9_,b q:#$0_6 @",
"!-$n:!!!!!!!!!!!!!ermm4$$((${_gb .)>$n_[ *",
"@}n$&+!!!!!!!~<8rhr< -9$$$$>__b o1%(5g4 ",
"*+1(( 2eee8rr+ b-5%($$$$$$$(#_[ :*(9_' ",
" )+,$(>{{9(((($$/aff3$$$95{(%5,| *}4(>_[ ",
" *+&$$$$$jffciddcfa/$#$%5,,_>%#;4 1+6(n,| ",
" q+#/fcd^dd]fa/$$$$$n0$n,b4b'#%n;4 o}5(#;4 ",
" oo(]^^cf/$$$$$$$$$9;${_[ 4'>n64 :}n%5& ",
" :;3^c/$$$$$$$$$$$('99_l |_n;4 1!=%9_- ",
"*@(d]$$$$$$$$$$$$$5g(56 b0;4 *=7!+&$9_'4 ",
"=6fi$$$$$$$$$$$$$0[({,4 **{g4 *1o@7=l'0$j(9n;| ",
"=(dj$$$$$$$$$$$$(ln9_[ o19_4 41. &&g9$af]ca$$#5>_[ ",
"gfa$$$$$$$$$$$$$;&(5' :+_$#_9(%(($$]di3/$$$$${'9064 ",
"$c$$$$$$$$$$$$${|>{;4 *:};$$$(0{,&|_$d3$$$$$$$$${[{(ng",
"j$$$$$$$$$$$$$>|_%_b q775$a%(ng[ b$d/$$$$$$$$$${|{$$",
"0,_59(($$$$$$(ll(#- .+1{ac/_(n& o(d/$$$$$$$$$$$#4{$",
"(({;||b;,5>((&4096 )}|$]f$$_{0& =0ia$$$$$$$$$$${45$",
"4bg5%n,[4 444 _(_4 q:753da$$$,,0& o'cf$$$$$$$$$$$,4(6",
"oo. 4&5%9_gb4&(0[ .+*9]ij$$$$,,0& =&ff$$$$$$$$$$(-g{4",
"!!!+7o146{((($$6 *@}'jd]/$$$$$5l>& 1 /]$$$$$$$$$$9|>l=",
"!!!!!!!+@.[#($>q11qq***=}=nc^]$$$$$$$n|9& @b$i3$$$$$$$$$,;{*+",
"!!!!!!!!!!+:|($>'& @}}}}|(]^]$$$$$$$${|(& .*%$/c]j$$$$$$(->')!",
"!!!!!!!!!!!!@({##{0{>%%($f^i$$$$$$$$$>|%& 1*%5|6(aif/$$$${g9*+!",
"!!!!!!!!!!!!49_,&&&lll&n$f^f$$$$$$$$$>40g 1 %&:!!}'(fia$$$g%,:!!",
"!!!!!!!!!!!2b{_l *o%j^3$$$$$$$$$>4##q|%&:!!!!e!;$f]j(#(4!!!",
"!!!!!!!!!!!<65,4 @l$df$$$$$$$$$>4_0_(&=!!!!!!2k@5/3%(%@!!!",
"!!!!!!!!!!!<9_' =7%ff$$$$$$$$9& 5$(&1+!!!!!!!!<rb($$>+!!!",
"!!!!!!!!!!22{_l *+&j]$$$$$$9g4|,($# }!!!!!!!!!!8r>$$$572!",
"2!!!!!!!!!<|0_| })(]$$$(06|l5($$$# }!!!!!!!!!!k+($%($%.<",
"k<!!!!!!!!k'n, o+5a/(5l&_%jf3a(g(&.!!!!!!!!!!pl$9l*l>(,",
"0or<!!!!!2r%_' o!b$$5n$3ci3/$$${'%-)!!!!!!!!<<%(,4 *o&(",
",%g2re!!!8o(_l =!}($a]dcj$$$$$$$g'0|7!!!!!!!r-$n[ .o",
"}*0%brre2h&(_| q@!+*(a^]/$$$$$$$$$(l;{*+!!!!!~~%>; q",
"*:7g({1hmk%%_4 .@+}*_($a^f$$$$$$$$$$$0|n{1!!!!!8&%_[ ",
" )+*%$#q-$96 *o}!1'9/fj%$^c$$$$$$$$$$$$,40#)!!!2+%n; "};

79
assets/cyan_concrete.xpm Normal file
View File

@ -0,0 +1,79 @@
/* XPM */
static char * cyan_concrete_xpm[] = {
"64 64 12 1",
" c #17A1B0",
". c #129FAE",
"+ c #109EAD",
"@ c #16A1B0",
"# c #139FAE",
"$ c #15A0AF",
"% c #119EAD",
"& c #14A0AF",
"* c #119FAE",
"= c #13A0AF",
"- c #16A0AF",
"; c #149FAE",
" .++++@ #+$ @%. ",
" &++*%+. @++$ .+@ ",
" $+.@ $+= $+++# $+$ ",
" -%& -.$ .--#+%$ $+. ",
" .$ @*$ &$ @=+.- *+& ",
" .& -%$ $. @#%#@ .++# ",
" ## $%$ -%$ $*+& &++++$ ",
" &. &+$ @*% #++#+*$#++$ ",
" $%@ .+=-*+& $+++$ $%+$ ",
" $%$ @+++++@ ;+& #+$ ",
" $+# $+++. %* $%# ",
" @%% +++& $+$ -..- ",
" @*+$ @+++& .. #%& ",
"$ .+. &+++% $+$ $+.",
"+#@ @.++$ %++++. *# ;+",
";%+.;%++% #++++++. &+- #.",
" &*++++% $++.$@#++. @+# @. ",
" $%+++$ @%+# $++.@ #+- #$ ",
" ;+++$ .+& $%+*$ $+# @# ",
" $%++$ .+& @*++$ @%+- #@ ",
" #+++$ &+# @*++.%+. -# ",
" @%&&#%# &+. @%++++$ #@ ",
" &$ @#.- &+. &+++% $# ",
" @# $%#@ #++@ &+++*@ .@ ",
" ;@ -.+#;.++$ .+++++& $# ",
" @$ .+++++ @++.%+++%&@ %- ",
" $ .++++# &+. @&#+++#$ ;# ",
" -- $++**+%$ *+$ $#++%&@ $+$ ",
" $ &+%@ $#+*$ -+. &*++%%+$ ",
" $@ %+$ $.+*$ #+$ $+++++.& ",
" $# &+. $.+%& @+. %.;*++++.&@",
"+%+& @++@ &+++#- .+& @%@ @&.++++",
"*++# .+# @#++++++ &# #+;&",
" $%+$ &++ $.+++# .- %$ ",
" #+$ $++& &++; -. $. ",
" $%$ @*++ -.+$ #$ #- ",
" -.& .++# .+.@ @% -# ",
" ..@ .+++; .+++$ &# #@ ",
" .%;.++.+% $.+++++.- %- @# ",
" .+++$ .+$ &+++#-$.++; &% #- ",
" @++$ @+# $.++.- $.+%& -+; -. ",
" +# &+@ #++*$ $++%++.- .; ",
" &. +# $%++& @.++++++++++% ",
" @%- #+@ $.++.@ %+++.#&&&#+& ",
" .$ @+# -#++%$ $+.@ $%- ",
" $. #+$ @#+++.@ $%+- $. ",
" @*@ &+*&#++++$ -%+$ $# ",
" .& $+++%%++; @*+# && ",
" &. $%+#$ $+. @*+% #$ ",
" $%$ &%%#@ $%. @.+++$ #$",
"$ $+# $#++.@ -*& .+;@#%= .",
"+&&++@ $=%++++$ @.$ .%$ @..- ",
"++++.$&#%#&@ #+; @%$ @..@ $*$ ",
"++++++.& &% $%$ @*. #.@ ",
"+++%&@ #& $%$ -.= $.$ ",
"+*$ . #+& $%$ #.@ $",
"$ $& @++#%$ $%& @.+",
" #@ #+++$ @..$ &+%-",
" -# $.+#+# .+++%- ",
" #$ $.%& $%@ ++%- ",
" $. &*+#@ .# $++$ ",
" +.-#++#@ $+$ %+$ ",
" $++++.$ #% #+$ ",
" *+++& @+# $+# "};

37
assets/e.xpm Normal file
View File

@ -0,0 +1,37 @@
static char *east[] = {
"32 32 2 1",
". c #FFFFFF",
"# c #00FF00",
"................................",
"................................",
"................................",
"................................",
"....########################....",
"....########################....",
"..........................##....",
"..........................##....",
"..........................##....",
"..........................##....",
"..........................##....",
"..........................##....",
"..........................##....",
"..........................##....",
"..........##################....",
"..........##################....",
"..........................##....",
"..........................##....",
"..........................##....",
"..........................##....",
"..........................##....",
"..........................##....",
"..........................##....",
"..........................##....",
"....########################....",
"....########################....",
"................................",
"................................",
"................................",
"................................",
"................................",
"................................"
};

File diff suppressed because it is too large Load Diff

37
assets/n.xpm Normal file
View File

@ -0,0 +1,37 @@
static char *north[] = {
"32 32 2 1",
". c #FFFFFF",
"# c #00ff95ff",
"................................",
"................................",
"................................",
"................................",
".....##..................##.....",
".....##.................###.....",
".....##................####.....",
".....##...............#####.....",
".....##..............######.....",
".....##.............####.##.....",
".....##............####..##.....",
".....##...........####...##.....",
".....##..........####....##.....",
".....##.........####.....##.....",
".....##........####......##.....",
".....##.......####.......##.....",
".....##......####........##.....",
".....##.....####.........##.....",
".....##....####..........##.....",
".....##...####...........##.....",
".....##..####............##.....",
".....##.####.............##.....",
".....######..............##.....",
".....#####...............##.....",
".....####................##.....",
".....###.................##.....",
".....##..................##.....",
"................................",
"................................",
"................................",
"................................",
"................................"
};

37
assets/s.xpm Normal file
View File

@ -0,0 +1,37 @@
static char *south[] = {
"32 32 2 1",
". c #FFFFFF",
"# c #FF0000",
"................................",
"................................",
"................................",
"................................",
"........################........",
"......####################......",
"....##..................##......",
"..##....................##......",
"..##....................##......",
"........................##......",
"........................##......",
"......................##........",
"..................####..........",
"..................####..........",
"................####............",
"............######..............",
"..........######................",
"........######..................",
"........####....................",
"........##......................",
"......##........................",
"......##........................",
"......##....................##..",
"......##....................##..",
"......##..................##....",
"......####################......",
"..........##############........",
"................................",
"................................",
"................................",
"................................",
"................................"
};

37
assets/test/east.xpm Normal file
View File

@ -0,0 +1,37 @@
static char *east[] = {
"32 32 2 1",
". c #FFFFFF",
"# c #00FF00",
"................................",
"................................",
"................................",
"................................",
"....########################....",
"....########################....",
"..........................##....",
"..........................##....",
"..........................##....",
"..........................##....",
"..........................##....",
"..........................##....",
"..........................##....",
"..........................##....",
"..........##################....",
"..........##################....",
"..........................##....",
"..........................##....",
"..........................##....",
"..........................##....",
"..........................##....",
"..........................##....",
"..........................##....",
"..........................##....",
"....########################....",
"....########################....",
"................................",
"................................",
"................................",
"................................",
"................................",
"................................"
};

37
assets/test/north.xpm Normal file
View File

@ -0,0 +1,37 @@
static char *north[] = {
"32 32 2 1",
". c #FFFFFF",
"# c #00ff95ff",
"................................",
"................................",
"................................",
"................................",
".....##..................##.....",
".....##.................###.....",
".....##................####.....",
".....##...............#####.....",
".....##..............######.....",
".....##.............####.##.....",
".....##............####..##.....",
".....##...........####...##.....",
".....##..........####....##.....",
".....##.........####.....##.....",
".....##........####......##.....",
".....##.......####.......##.....",
".....##......####........##.....",
".....##.....####.........##.....",
".....##....####..........##.....",
".....##...####...........##.....",
".....##..####............##.....",
".....##.####.............##.....",
".....######..............##.....",
".....#####...............##.....",
".....####................##.....",
".....###.................##.....",
".....##..................##.....",
"................................",
"................................",
"................................",
"................................",
"................................"
};

37
assets/test/south.xpm Normal file
View File

@ -0,0 +1,37 @@
static char *south[] = {
"32 32 2 1",
". c #FFFFFF",
"# c #FF0000",
"................................",
"................................",
"................................",
"................................",
"........################........",
"......####################......",
"....##..................##......",
"..##....................##......",
"..##....................##......",
"........................##......",
"........................##......",
"......................##........",
"..................####..........",
"..................####..........",
"................####............",
"............######..............",
"..........######................",
"........######..................",
"........####....................",
"........##......................",
"......##........................",
"......##........................",
"......##....................##..",
"......##....................##..",
"......##..................##....",
"......####################......",
"..........##############........",
"................................",
"................................",
"................................",
"................................",
"................................"
};

37
assets/test/west.xpm Normal file
View File

@ -0,0 +1,37 @@
static char *north[] = {
"32 32 2 1",
". c #FFFFFF",
"# c #0000FF",
"................................",
"................................",
"................................",
"................................",
"................................",
"................................",
"................................",
"................................",
"................................",
"................................",
"....##...................##.....",
"....##...................##.....",
"....##...................##.....",
"....##...................##.....",
"....##.........#.........##.....",
"....##........###........##.....",
"....##.......#####.......##.....",
"....##......#######......##.....",
"....##.....####.####.....##.....",
"....##....####...####....##.....",
"....##...####.....####...##.....",
"....##..####.......####..##.....",
"....##.####.........####.##.....",
"....######...........######.....",
"....#####.............#####.....",
"....####...............####.....",
"....###.................###.....",
"....##...................##.....",
"................................",
"................................",
"................................",
"................................"
};

37
assets/w.xpm Normal file
View File

@ -0,0 +1,37 @@
static char *north[] = {
"32 32 2 1",
". c #FFFFFF",
"# c #0000FF",
"................................",
"................................",
"................................",
"................................",
"................................",
"................................",
"................................",
"................................",
"................................",
"................................",
"....##...................##.....",
"....##...................##.....",
"....##...................##.....",
"....##...................##.....",
"....##.........#.........##.....",
"....##........###........##.....",
"....##.......#####.......##.....",
"....##......#######......##.....",
"....##.....####.####.....##.....",
"....##....####...####....##.....",
"....##...####.....####...##.....",
"....##..####.......####..##.....",
"....##.####.........####.##.....",
"....######...........######.....",
"....#####.............#####.....",
"....####...............####.....",
"....###.................###.....",
"....##...................##.....",
"................................",
"................................",
"................................",
"................................"
};

68
cub3d.h
View File

@ -1,68 +0,0 @@
// cub3d.h
#ifndef CUB3D_H
# define CUB3D_H
# include <math.h>
# include <stdlib.h>
# include <stdbool.h>
# include "mlx.h"
# define WIN_W 1280
# define WIN_H 720
typedef struct s_img {
void *ptr;
char *addr;
int bpp;
int line_len;
int endian;
} t_img;
typedef struct s_tex {
t_img img;
int w, h;
} t_tex;
typedef struct s_keys {
bool w, a, s, d, left, right;
} t_keys;
typedef struct s_app {
void *mlx;
void *win;
t_img frame;
// map
char **map; // rectangle, accès map[y][x]
int map_w, map_h;
// player
double px, py; // position
double dirx, diry; // direction
double planex, planey; // caméra (FOV ~66° => plane longueur ~0.66)
// movement
double move_speed;
double rot_speed;
// textures (N,E,S,W) supposées chargées via parsing
t_tex tex[4];
// zbuffer pour sprites/doors bonus
double *zbuf;
t_keys keys;
} t_app;
// utils
void put_pixel(t_img *img, int x, int y, int color);
int get_tex_color(t_tex *t, int tx, int ty);
// hooks
int key_press(int keycode, t_app *a);
int key_release(int keycode, t_app *a);
int close_win(t_app *a);
// loop
int update(t_app *a);
void render_frame(t_app *a);
#endif

60
gnl/Makefile Normal file
View File

@ -0,0 +1,60 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# Makefile :+: :+: :+: #
# +:+ +:+ +:+ #
# By: lfirmin lfirmim@student.42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2024/08/12 07:07:31 by lfirmin #+# #+# #
# Updated: 2024/08/12 09:15:05 by lfirmin ### ########.fr #
# #
# **************************************************************************** #
NAME = gnl.a
SRCS_DIR = srcs/
INCS_DIR = includes/
OBJ_DIR = obj/
SRC = get_next_line.c get_next_line_utils.c
CC = cc
CFLAGS = -Wall -Wextra -Werror -fPIE
INCLUDE = -I $(INCS_DIR)
SRCS = $(addprefix $(SRCS_DIR), $(SRC))
OBJ = $(addprefix $(OBJ_DIR), $(SRC:.c=.o))
# Colors
GREEN = \033[0;32m
YELLOW = \033[0;33m
RESET = \033[0m
WHITE = \033[0;97m
# Loading animation
LOADING_CHARS = ⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏
all: $(NAME)
$(NAME): $(OBJ)
@printf "$(YELLOW)Compiling get_next_line, Please wait...$(RESET)"
@for char in $(LOADING_CHARS); do \
printf "\r$(YELLOW)Compiling get_next_line, Please wait... $$char$(RESET)"; \
sleep 0.1; \
done
@ar rc $(NAME) $(OBJ)
@ranlib $(NAME)
@printf "\r$(GREEN)fine ! $(WHITE)get_next_line compiled successfully ! $(RESET)\n"
$(OBJ_DIR)%.o: $(SRCS_DIR)%.c
@mkdir -p $(OBJ_DIR)
@$(CC) $(CFLAGS) $(INCLUDE) -c $< -o $@
clean:
@rm -rf $(OBJ_DIR)
@printf "$(WHITE)Clean process completed for $(GREEN)get_next_line.$(RESET)\n"
fclean: clean
@rm -f $(NAME)
@printf "$(WHITE)Full clean process completed for $(GREEN)get_next_line.$(RESET)\n"
re: fclean all
.PHONY: all clean fclean re

View File

@ -0,0 +1,32 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* get_next_line.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: abelghou <abelghou@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/07/21 19:32:47 by abelghou #+# #+# */
/* Updated: 2024/07/23 20:47:15 by abelghou ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef GET_NEXT_LINE_H
# define GET_NEXT_LINE_H
# ifndef BUFFER_SIZE
# define BUFFER_SIZE 1000
# endif
# include <stdlib.h>
# include <unistd.h>
# include <stdio.h>
# include <fcntl.h>
char *ft_substr(char const *s, unsigned int start, size_t len);
int ft_strlen_g(const char *str);
char *ft_strchr_gnl(const char *s, int i);
char *ft_strdup_g(const char *s);
char *ft_strjoin(char const *s1, char const *s2);
char *get_next_line(int fd);
#endif

41
gnl/readme.md Normal file
View File

@ -0,0 +1,41 @@
# get_next_line
A function that reads a line from a file descriptor.
## 💡 About
The get_next_line project is a programming function that reads a line ending with a newline character from a file descriptor. When calling the function in a loop, it will then allow you to read the text file pointed to by the file descriptor, one line at a time until the end of the file.
## 🛠️ Function Prototype
```c
char *get_next_line(int fd);
```
## 📋 Usage
```c
#include "get_next_line.h"
#include <fcntl.h>
int main(void)
{
int fd;
char *line;
fd = open("test.txt", O_RDONLY);
while ((line = get_next_line(fd)) != NULL)
{
printf("%s", line);
free(line);
}
close(fd);
return (0);
}
```
## ⚠️ Return Value
* The line that was read when successful
* NULL if there is nothing else to read or if an error occurred
## 📊 Expected Behavior
* Repeated calls to get_next_line() should let you read the text file pointed to by the file descriptor, one line at a time
* The function should return the line that was read
* If there is nothing else to read or if an error occurred, it should return NULL
* The returned line should include the terminating \n character, except if the end of file was reached and does not end with a \n character

109
gnl/srcs/get_next_line.c Normal file
View File

@ -0,0 +1,109 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* get_next_line.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: abelghou <abelghou@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/07/17 21:31:24 by abelghou #+# #+# */
/* Updated: 2024/07/24 18:17:55 by abelghou ### ########.fr */
/* */
/* ************************************************************************** */
#include "../include/get_next_line.h"
static char *sort_and_store(int fd, char *buf, char *backup)
{
int read_line;
char *char_temp;
read_line = 1;
while (read_line != 0)
{
read_line = read(fd, buf, BUFFER_SIZE);
if (read_line == -1)
return (0);
else if (read_line == 0)
break ;
buf[read_line] = '\0';
if (!backup)
backup = ft_strdup_g("");
if (!backup)
return (NULL);
char_temp = backup;
backup = ft_strjoin(char_temp, buf);
free(char_temp);
char_temp = NULL;
if (ft_strchr_gnl (buf, '\n'))
break ;
}
return (backup);
}
static char *extract(char *line)
{
size_t count;
char *backup;
count = 0;
while (line[count] != '\n' && line[count] != '\0')
count++;
if (line[count] == '\0' || line[1] == '\0')
return (0);
backup = ft_substr(line, count + 1, ft_strlen_g(line) - count);
if (!backup)
return (NULL);
if (*backup == '\0')
{
free (backup);
backup = NULL;
}
line[count + 1] = '\0';
return (backup);
}
char *get_next_line(int fd)
{
char *line;
char *buf;
char *temp;
static char *backup;
if (fd == -2)
{
if (backup)
free(backup);
backup = NULL;
return (NULL);
}
if (fd < 0 || BUFFER_SIZE <= 0)
return (free(backup), backup = NULL, NULL);
buf = (char *)malloc(sizeof(char) * (BUFFER_SIZE + 1));
if (!buf)
return (free(backup), backup = NULL, NULL);
line = sort_and_store(fd, buf, backup);
free(buf);
buf = NULL;
if (!line)
return (free(backup), backup = NULL, NULL);
backup = extract(line);
temp = ft_strdup_g(line);
free(line);
if (!temp)
return (free(backup), backup = NULL, NULL);
return (temp);
}
// int main()
// {
// int fd;
// char *line;
// fd = open("fd.txt", O_RDONLY);
// while((line = get_next_line(fd)) != NULL)
// {
// printf("%s", line);
// free(line);
// }
// line = get_next_line(fd);
// close(fd);
// }

View File

@ -0,0 +1,106 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* get_next_line_utils.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: abelghou <abelghou@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/07/21 19:34:18 by abelghou #+# #+# */
/* Updated: 2024/07/23 20:06:41 by abelghou ### ########.fr */
/* */
/* ************************************************************************** */
#include "../include/get_next_line.h"
char *ft_substr(char const *s, unsigned int start, size_t len)
{
size_t i;
size_t j;
char *str;
str = (char *)malloc(sizeof(*s) * (len + 1));
if (str == 0)
return (NULL);
i = 0;
j = 0;
while (s[i])
{
if (i >= start && j < len)
{
str[j] = s[i];
j++;
}
i++;
}
str[j] = '\0';
return (str);
}
int ft_strlen_g(const char *str)
{
int i;
i = 0;
while (str[i])
i++;
return (i);
}
char *ft_strchr_gnl(const char *s, int i)
{
while (*s)
{
if (*s == i)
return ((char *)s);
s++;
}
if (i == '\0')
return ((char *)s);
return (0);
}
char *ft_strdup_g(const char *s)
{
int i;
int j;
char *str;
i = 0;
j = ft_strlen_g(s);
str = (char *)malloc(sizeof(*str) * (j + 1));
if (!str)
return (NULL);
while (i < j)
{
str[i] = s[i];
i++;
}
str[i] = '\0';
return (str);
}
char *ft_strjoin(char const *s1, char const *s2)
{
int i;
int j;
char *str;
i = 0;
j = 0;
str = (char *)malloc(sizeof(char) * (ft_strlen_g(s1) \
+ ft_strlen_g(s2) + 1));
if (str == NULL)
return (NULL);
while (s1[i] != '\0')
{
str[i] = s1[i];
i++;
}
while (s2[j] != '\0')
{
str[i + j] = s2[j];
j++;
}
str[i + j] = '\0';
return (str);
}

64
includes/cub.h Normal file
View File

@ -0,0 +1,64 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* cub.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/08/22 14:56:25 by lfirmin #+# #+# */
/* Updated: 2025/10/07 12:14:42 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef CUB_H
# define CUB_H
# include "parsing.h"
# include "../libft/include/libft.h"
# include "../gnl/include/get_next_line.h"
# include "exec.h"
# include "keys.h"
# define ERROR_PREFIX "Error\n"
# define ERROR_EXT "Invalid file extension. Only .cub files are accepted."
# define ERROR_EMPT_PATH "Invalid map file path."
# define ERROR_INIT_DATA "Initialization of the data structure failed."
# define ERROR_INIT_TEX "Initialization of the textures structure failed."
# define ERROR_INIT_PARS "Initialization of the parsing structure failed."
# define ERROR_EMPTY "You have provided an empty file."
# define ERROR_COL "The RGB values provided are not valid or absent."
# define ERROR_NULL_P "Player not found or multiple players."
# define ERROR_BAD_CHAR "Invalid character in map."
# define ERROR_POS "Player position not found."
# define ERROR_ALLOC "Allocation failed."
# define ERROR_PLAYER "Player not found or multiple players."
# define ERROR_CHAR "Invalid character in map."
# define ERROR_DOUBLE "Multiple images/colors have been provided \
for the same texture."
# define ERROR_NOT_CLOSE "Map is not closed by walls."
# define ERROR_NOT_XMP "The texture file is not an xpm image."
# define ERR_I_N "Texture file provided for north is absent or inaccessible"
# define ERR_I_S "Texture file provided for south is absent or inaccessible"
# define ERR_I_E "Texture file provided for east is absent or inaccessible"
# define ERR_I_W "Texture file provided for west is absent or inaccessible"
typedef struct s_data
{
char **map;
char *map_path;
t_textures *texture;
t_data_parsing parsing;
} t_data;
//utils
void ft_error(char *message);
void free_char_array(char **array);
int ft_arrlen(char **arr);
void print_array(char **array);
int ft_strlen_2d(char **str);
//init
int init_data(t_data *data, char *path);
void free_data(t_data *data);
#endif

157
includes/exec.h Normal file
View File

@ -0,0 +1,157 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* cub3d.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: jle-neze <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/09/12 18:17:48 by jle-neze #+# #+# */
/* Updated: 2025/09/12 18:17:51 by jle-neze ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef EXEC_H
# define EXEC_H
# include <stdlib.h>
# include <stdint.h>
# include <math.h>
# include <../minilibx-linux/mlx.h>
/* Image (framebuffer) */
typedef struct s_img
{
void *ptr;
char *addr;
int bpp;
int line_len;
int endian;
int w;
int h;
} t_img;
/* Contexte MLX */
typedef struct s_mlx
{
void *mlx;
void *win;
int w;
int h;
t_img frame;
} t_mlx;
/* Couleurs de base */
typedef struct s_colors
{
int floor;
int ceil;
int wall_nsew[4]; /* 0:N 1:S 2:E 3:W → couleurs simples pour linstant */
} t_colors;
/* Entrées clavier (état des touches) */
typedef struct s_input
{
int w;
int a;
int s;
int d;
int left;
int right;
} t_input;
/* Monde (map) */
typedef struct s_world
{
int w;
int h;
char **grid; /* '0' vide, '1' mur */
} t_world;
/* Caméra / joueur (Raycasting) */
typedef struct s_cam
{
double pos_x;
double pos_y;
double dir_x;
double dir_y;
double plane_x;
double plane_y;
} t_cam;
typedef struct s_tex
{
void *ptr;
char *addr;
int bpp;
int line_len;
int endian;
int w;
int h;
} t_tex;
/* State principal */
typedef struct s_data t_data;
typedef struct s_game
{
t_mlx gfx;
t_colors colors;
t_input in;
t_world world;
t_cam cam;
double move_speed;
double rot_speed;
/* --- Textures --- */
t_tex tex[4]; /* 0:N 1:S 2:E 3:W */
int has_tex; /* 1 si chargées OK */
/* Pour le cleanup */
t_data *data; /* pointeur vers data pour cleanup */
} t_game;
/* init.c */
int init_window(t_game *g, int w, int h, char *title);
void cleanup_window(t_game *g);
/* hooks.c */
int on_destroy(t_game *g);
int on_keydown(int key, t_game *g);
int on_keyup(int key, t_game *g);
void setup_hooks(t_game *g);
/* image.c */
void img_put_pixel(t_img *img, int x, int y, int color);
/* draw.c */
void draw_background(t_game *g);
void draw_vline(t_game *g, int x, int y0, int y1, int color);
/* world.c */
int world_init_demo(t_world *w);
void world_free(t_world *w);
/* player.c */
void player_init(t_game *g, double px, double py, double dx, double dy);
void player_update(t_game *g);
/* raycast.c */
void raycast_frame(t_game *g);
/* loop.c */
int game_loop(t_game *g);
/* textures.c */
int textures_load(t_game *g, const char *no, const char *so,
const char *we, const char *ea);
void textures_free(t_game *g);
unsigned int tex_get_pixel(t_tex *t, int x, int y);
/* draw.c */
void draw_background(t_game *g);
void draw_vline(t_game *g, int x, int y0, int y1, int color);
void draw_tex_vline(t_game *g, int x, int y0, int y1,
t_tex *tex, int tex_x, double step, double tex_pos);
#endif

35
includes/keys.h Normal file
View File

@ -0,0 +1,35 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* keys.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: jle-neze <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/09/12 18:18:03 by jle-neze #+# #+# */
/* Updated: 2025/09/12 18:18:07 by jle-neze ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef KEYS_H
# define KEYS_H
/* ESC */
# ifdef __APPLE__
# define KEY_ESC 53
# define KEY_W 13
# define KEY_A 0
# define KEY_S 1
# define KEY_D 2
# define KEY_LEFT 123
# define KEY_RIGHT 124
# else
# define KEY_ESC 65307
# define KEY_W 119
# define KEY_A 100 // a inverse au d car cest la camera qui deplace
# define KEY_S 115
# define KEY_D 97 // a inverse au d car cest la camera qui deplace
# define KEY_LEFT 65361
# define KEY_RIGHT 65363
# endif
#endif

89
includes/parsing.h Normal file
View File

@ -0,0 +1,89 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* parsing.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/08/22 14:08:04 by lfirmin #+# #+# */
/* Updated: 2025/10/07 12:16:07 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef PARSING_H
# define PARSING_H
# include <stdio.h>
# include <stdlib.h>
# include <unistd.h>
# include <fcntl.h>
struct s_data;
typedef struct s_data t_data;
typedef struct s_textures
{
char *north;
char *south;
char *east;
char *west;
int floor[3];
int ceiling[3];
} t_textures;
typedef struct s_data_parsing
{
char **raw_map;
int fd_map;
int fd_map_dup;
int player[3];
} t_data_parsing;
//player -> 0 = x, 1 = y, 2 = head
//parsing
int parsing(t_data *data);
//check_file
int check_extension(char *map_path);
int check_file(char *map_path, t_data_parsing *parsing);
//get_map
int get_map(t_data *data);
int line_counter(int fd);
int put_map_on_array(t_data *data);
char *clean_line(char *raw_line);
//init_parsing
int init_parsing(t_data_parsing *parsing);
int init_textures(t_textures *textures);
int free_textures(t_textures *textures);
//line_detect
int is_config_line(char *line);
int is_empty_line(char *line);
int is_texture_line(char *line);
int is_color_line(char *line);
int check_extension_2(char *str);
//get_textures
int get_texture_path(char *line, t_textures *texture, int *j);
int validate_and_convert_rgb(char **parts, int rgb[3]);
int get_rgb_values(char *line, int rgb[3]);
int is_valid_number(char *str);
//check_colors
int check_colors(t_textures *texture);
int is_rgb(int color[3]);
// check_map
int check_map_char(char **map);
void find_player_pos(char **map, int *player);
int flood_fill(char **map_cp, int x, int y);
int rep_ex_wall(char **map_cp, int x, int y);
int check_char_and_count(char c, int *p);
//check_map_2
int hasivalidchar(char **map);
int validate_map(char **map, int *player);
#endif

46
input.c
View File

@ -1,46 +0,0 @@
// input.c
#include "cub3d.h"
#ifdef __APPLE__
# define KEY_ESC 53
# define KEY_W 13
# define KEY_A 0
# define KEY_S 1
# define KEY_D 2
# define KEY_LEFT 123
# define KEY_RIGHT 124
#else
# define KEY_ESC 65307
# define KEY_W 119
# define KEY_A 97
# define KEY_S 115
# define KEY_D 100
# define KEY_LEFT 65361
# define KEY_RIGHT 65363
#endif
int key_press(int key, t_app *a){
if (key == KEY_ESC) close_win(a);
if (key == KEY_W) a->keys.w = true;
if (key == KEY_S) a->keys.s = true;
if (key == KEY_A) a->keys.a = true;
if (key == KEY_D) a->keys.d = true;
if (key == KEY_LEFT) a->keys.left = true;
if (key == KEY_RIGHT) a->keys.right = true;
return 0;
}
int key_release(int key, t_app *a){
if (key == KEY_W) a->keys.w = false;
if (key == KEY_S) a->keys.s = false;
if (key == KEY_A) a->keys.a = false;
if (key == KEY_D) a->keys.d = false;
if (key == KEY_LEFT) a->keys.left = false;
if (key == KEY_RIGHT) a->keys.right = false;
return 0;
}
int close_win(t_app *a){
if (a->zbuf) free(a->zbuf);
if (a->frame.ptr) mlx_destroy_image(a->mlx, a->frame.ptr);
if (a->win) mlx_destroy_window(a->mlx, a->win);
exit(0);
return 0;
}

68
libft/Makefile Normal file
View File

@ -0,0 +1,68 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# Makefile :+: :+: :+: #
# +:+ +:+ +:+ #
# By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2024/05/19 12:59:31 by lfirmin #+# #+# #
# Updated: 2025/04/19 11:53:48 by lfirmin ### ########.fr #
# #
# **************************************************************************** #
NAME = libft.a
HEADER = ./include
SRCS_DIR = ./srcs/
SRC = ft_isalnum.c ft_isprint.c ft_memcmp.c ft_putchar_fd.c ft_split.c \
ft_strlcat.c ft_strncmp.c ft_substr.c ft_atoi.c ft_isalpha.c \
ft_itoa.c ft_memcpy.c ft_putendl_fd.c ft_strchr.c ft_strlcpy.c \
ft_strnstr.c ft_tolower.c ft_bzero.c ft_isascii.c ft_strtrim.c \
ft_memmove.c ft_putnbr_fd.c ft_strdup.c ft_strlen.c ft_strrchr.c \
ft_toupper.c ft_calloc.c ft_isdigit.c ft_memchr.c ft_memset.c \
ft_putstr_fd.c ft_strjoin.c ft_strmapi.c ft_striteri.c \
ft_lstnew_bonus.c ft_lstadd_front_bonus.c ft_lstsize_bonus.c \
ft_lstlast_bonus.c ft_lstadd_back_bonus.c ft_lstdelone_bonus.c \
ft_lstclear_bonus.c ft_lstiter_bonus.c ft_lstmap_bonus.c ft_strcmp.c \
ft_atoll.c ft_straddchar.c ft_strcpy.c ft_arrcpy.c
SRCS = $(addprefix $(SRCS_DIR), $(SRC))
CC = cc
CFLAGS = -Wall -Wextra -Werror -g3
INCLUDE = -I $(HEADER)
OBJ_DIR = obj/
OBJ = $(addprefix $(OBJ_DIR), $(SRC:.c=.o))
GREEN = \033[0;32m
YELLOW = \033[0;33m
RESET = \033[0m
WHITE = \033[0;97m
LOADING_CHARS = ⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏
all: $(NAME)
$(NAME): $(OBJ)
@printf "$(YELLOW)Compiling libft, Please wait...$(RESET)"
@for char in $(LOADING_CHARS); do \
printf "\r$(YELLOW)Compiling libft, Please wait... $$char$(RESET)"; \
sleep 0.1; \
done
@ar rc $(NAME) $(OBJ)
@ranlib $(NAME)
@printf "\r$(GREEN)Great news ! $(WHITE)Libft compiled successfully ! $(RESET)\n"
$(OBJ_DIR)%.o: $(SRCS_DIR)%.c
@mkdir -p $(OBJ_DIR)
@$(CC) $(CFLAGS) $(INCLUDE) -c $< -o $@
clean:
@rm -rf $(OBJ_DIR)
@printf "$(WHITE)Clean process completed for $(GREEN)Libft.$(RESET)\n"
fclean: clean
@rm -f $(NAME)
@printf "$(WHITE)Full clean process completed for $(GREEN)Libft.$(RESET)\n"
re: fclean all
.PHONY: all clean fclean re

55
libft/Readme.md Normal file
View File

@ -0,0 +1,55 @@
# Libft - 42 Project
## Description
Libft is the first project at 42 school. The aim is to recreate various standard C library functions, as well as additional functions that will be useful throughout the cursus. This library will be used in most of the future 42 projects.
## Functions
### Libc Functions
`ft_isalpha``ft_isdigit``ft_isalnum``ft_isascii``ft_isprint``ft_strlen``ft_memset``ft_bzero``ft_memcpy``ft_memmove``ft_strlcpy``ft_strlcat``ft_toupper``ft_tolower``ft_strchr``ft_strrchr``ft_strncmp``ft_memchr``ft_memcmp``ft_strnstr``ft_atoi``ft_calloc``ft_strdup`
### Additional Functions
`ft_substr``ft_strjoin``ft_strtrim``ft_split``ft_itoa``ft_strmapi``ft_striteri``ft_putchar_fd``ft_putstr_fd``ft_putendl_fd``ft_putnbr_fd`
### Bonus Functions
`ft_lstnew``ft_lstadd_front``ft_lstsize``ft_lstlast``ft_lstadd_back``ft_lstdelone``ft_lstclear``ft_lstiter``ft_lstmap`
## Getting Started
### Prerequisites
- GCC compiler
- Make
### Usage
1. Include the header in your source file:
```c
#include "libft.h"
```
### Compilation
1. Compilation:
```bash
make
```
## Cleaning
- Remove object files:
```bash
make clean
```
- Remove object files and library:
```bash
make fclean
```
- Recompile everything:
```bash
make re
```
## Testing
This project doesn't come with unit tests, but you can use external testers:
- [libft-unit-test](https://github.com/alelievr/libft-unit-test)
- [libft-war-machine](https://github.com/ska42/libft-war-machine)
- [Tripouille/libfTester](https://github.com/Tripouille/libftTester)

93
libft/include/libft.h Normal file
View File

@ -0,0 +1,93 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* libft.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/21 11:19:08 by lfirmin #+# #+# */
/* Updated: 2025/04/19 11:56:03 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef LIBFT_H
# define LIBFT_H
# include <stdlib.h>
# include <string.h>
# include <stddef.h>
# include <stdio.h>
# include <unistd.h>
# include <limits.h>
typedef struct v
{
char **array;
int i;
int j;
int start;
int end;
} t_split_struct;
typedef struct s_list
{
void *content;
struct s_list *next;
} t_list;
int ft_isalnum(int c);
int ft_isalpha(int c);
int ft_isascii(int c);
int ft_isdigit(int c);
int ft_isprint(int c);
int ft_atoi(const char *str);
int ft_memcmp(const void *ptr1, const void *ptr2, size_t num);
int ft_strncmp(const char *s1, const char *s2, unsigned int n);
int ft_toupper(int c);
int ft_tolower(int c);
int ft_lstsize(t_list *lst);
int ft_strcmp(char *s1, char *s2);
long long ft_atoll(const char *str);
size_t ft_strlen(const char *s);
size_t ft_strlcat(char *dst, const char *src, size_t size);
size_t ft_strlcpy(char *dst, const char *src, size_t dsts);
void *ft_bzero(void *s, size_t n);
void *ft_calloc(size_t count, size_t n);
void *ft_memchr(const void *s, int c, size_t n);
void *ft_memcpy(void *dest, const void *src, size_t len);
void *ft_memset(void *b, int c, size_t len);
void *ft_memmove(void *s1, const void *s2, size_t len);
void *ft_memset(void *str, int c, size_t n);
void ft_putchar_fd(char c, int fd);
void ft_putstr_fd(char *s, int fd);
void ft_putendl_fd(char *s, int fd);
void ft_putnbr_fd(int n, int fd);
void ft_striteri(char *s, void (*f)(unsigned int, char*));
void ft_lstadd_front(t_list **lst, t_list *new);
void ft_lstadd_back(t_list **lst, t_list *new);
void ft_lstdelone(t_list *lst, void (*del)(void*));
void ft_lstclear(t_list **lst, void (*del)(void*));
void ft_lstiter(t_list *lst, void (*f)(void *));
char *ft_strchr(char const *str, int c);
char *ft_strdup(const char *src);
char *ft_strjoin(const char *s1, const char *s2);
char *ft_strnstr(const char *hay, const char *need, size_t len);
char *ft_strrchr(const char *str, int c);
char *ft_strtrim(char const *s1, char const *set);
char *ft_substr(char const *s, unsigned int start, size_t len);
char **ft_split(char const *s, char c);
char *ft_strmapi(char const *s, char (*f)(unsigned int, char));
char *ft_itoa(int n);
char *ft_straddchar(char *str, char c);
char *ft_strcpy(char *dest, char *src);
char **ft_arrcpy(char **array);
t_list *ft_lstnew(void *content);
t_list *ft_lstlast(t_list *lst);
t_list *ft_lstmap(t_list *lst, void *(*f)(void *), \
void (*del)(void *));
#endif

41
libft/srcs/ft_arrcpy.c Normal file
View File

@ -0,0 +1,41 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_arrcpy.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/21 02:18:17 by lfirmin #+# #+# */
/* Updated: 2025/10/06 14:06:37 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
char **ft_arrcpy(char **array)
{
char **copy;
int i;
int len;
len = 0;
while (array[len])
len++;
copy = malloc(sizeof(char *) * (len + 1));
if (!copy)
return (NULL);
i = 0;
while (i < len)
{
copy[i] = ft_strdup(array[i]);
if (!copy[i])
{
while (i > 0)
free(copy[--i]);
free(copy);
return (NULL);
}
i++;
}
copy[i] = NULL;
return (copy);
}

40
libft/srcs/ft_atoi.c Normal file
View File

@ -0,0 +1,40 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_atoi.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/21 10:09:46 by lfirmin #+# #+# */
/* Updated: 2024/06/03 21:02:02 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
int ft_atoi(const char *str)
{
int i;
int s;
int m;
i = 0;
s = 0;
m = 0;
while ((str[i] <= 13 && str[i] >= 9) || str[i] == 32)
i++;
while (str[i] == '-' || str[i] == '+')
{
s++;
if (s >= 2)
return (0);
if (str[i] == '-')
m++;
i++;
}
s = 0;
while (str[i] >= 48 && str[i] <= 57)
s = s * 10 + (str[i++] - 48);
if (m % 2 == 1)
s = s * -1;
return (s);
}

38
libft/srcs/ft_atoll.c Normal file
View File

@ -0,0 +1,38 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_atoll.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/11/03 17:25:06 by lfirmin #+# #+# */
/* Updated: 2024/11/03 17:25:33 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
long long ft_atoll(const char *str)
{
long long result;
int sign;
result = 0;
sign = 1;
while (*str == ' ' || (*str >= 9 && *str <= 13))
str++;
if (*str == '-' || *str == '+')
{
if (*str == '-')
sign = -1;
str++;
}
while (*str >= '0' && *str <= '9')
{
if (result > INT_MAX || result < INT_MIN)
return (2147483648);
result = result * 10 + (*str - '0');
str++;
}
return (result * sign);
}

24
libft/srcs/ft_bzero.c Normal file
View File

@ -0,0 +1,24 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_bzero.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/21 00:20:00 by lfirmin #+# #+# */
/* Updated: 2024/05/30 19:49:23 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
void *ft_bzero(void *b, size_t len)
{
size_t i;
unsigned char *r;
r = (unsigned char *)b;
i = 0;
while (i < len)
r[i++] = '\0';
return (b);
}

31
libft/srcs/ft_calloc.c Normal file
View File

@ -0,0 +1,31 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_calloc.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/21 11:14:02 by lfirmin #+# #+# */
/* Updated: 2024/06/03 18:15:05 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
void *ft_calloc(size_t c, size_t s)
{
void *ptr;
long long int tmp1;
long long int tmp2;
tmp1 = (long long int)c;
tmp2 = (long long int)s;
if ((c > 4294967295 || s > 4294967295) && (tmp1 < 0 && tmp2 < 0))
return (NULL);
if (tmp1 * tmp2 < 0)
return (NULL);
ptr = malloc(c * s);
if (!ptr)
return (NULL);
ft_bzero(ptr, c * s);
return (ptr);
}

19
libft/srcs/ft_isalnum.c Normal file
View File

@ -0,0 +1,19 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_isalnum.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/20 02:29:49 by lfirmin #+# #+# */
/* Updated: 2024/05/22 09:59:44 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
int ft_isalnum(int c)
{
if ((c >= 97 && c <= 122) || (c >= 48 && c <= 57) || (c >= 65 && c <= 90))
return (1);
return (0);
}

19
libft/srcs/ft_isalpha.c Normal file
View File

@ -0,0 +1,19 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_isalpha.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/20 01:55:52 by lfirmin #+# #+# */
/* Updated: 2024/05/22 09:59:44 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
int ft_isalpha(int c)
{
if ((c >= 97 && c <= 122) || (c >= 65 && c <= 90))
return (1);
return (0);
}

19
libft/srcs/ft_isascii.c Normal file
View File

@ -0,0 +1,19 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_isascii.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/20 02:36:17 by lfirmin #+# #+# */
/* Updated: 2024/05/22 09:59:44 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
int ft_isascii(int c)
{
if (c >= 0 && c <= 127)
return (1);
return (0);
}

19
libft/srcs/ft_isdigit.c Normal file
View File

@ -0,0 +1,19 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_isdigit.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/20 02:31:51 by lfirmin #+# #+# */
/* Updated: 2024/05/22 09:59:44 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
int ft_isdigit(int c)
{
if (c >= 48 && c <= 57)
return (1);
return (0);
}

19
libft/srcs/ft_isprint.c Normal file
View File

@ -0,0 +1,19 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_isprint.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/20 02:38:24 by lfirmin #+# #+# */
/* Updated: 2024/05/23 06:21:54 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
int ft_isprint(int c)
{
if (((c >= 0 && c <= 31) || c >= 127 || c == EOF))
return (0);
return (1);
}

51
libft/srcs/ft_itoa.c Normal file
View File

@ -0,0 +1,51 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_itoa.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/24 12:59:00 by lfirmin #+# #+# */
/* Updated: 2024/05/29 10:31:36 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
static size_t ft_count(long int n)
{
size_t c;
c = 0;
if (n <= 0)
c = 1;
while (n != 0)
{
n = n / 10;
c++;
}
return (c);
}
char *ft_itoa(int n)
{
char *str;
size_t size;
long int num;
num = n;
size = ft_count(num);
str = (char *)malloc(size + 1);
if (!str)
return (NULL);
str[size] = '\0';
if (num < 0)
num = -num;
while (size--)
{
str[size] = num % 10 + '0';
num = num / 10;
if (n < 0 && size == 0)
str[size] = '-';
}
return (str);
}

View File

@ -0,0 +1,27 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_lstadd_back.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/01 02:01:18 by lfirmin #+# #+# */
/* Updated: 2024/06/03 15:59:33 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
void ft_lstadd_back(t_list **lst, t_list *new)
{
t_list *last;
if (!new)
return ;
if (!lst || !*lst)
{
*lst = new;
return ;
}
last = ft_lstlast(*lst);
last->next = new;
}

View File

@ -0,0 +1,21 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_lstadd_front.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/31 20:34:57 by lfirmin #+# #+# */
/* Updated: 2024/05/31 20:41:34 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
void ft_lstadd_front(t_list **lst, t_list *new)
{
if (lst && new)
{
new->next = *lst;
*lst = new;
}
}

View File

@ -0,0 +1,28 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_lstclear.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/01 20:46:07 by lfirmin #+# #+# */
/* Updated: 2024/06/01 20:51:07 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
void ft_lstclear(t_list **lst, void (*del)(void*))
{
t_list *t;
if (lst)
{
while (*lst)
{
t = (*lst)->next;
ft_lstdelone(*lst, del);
(*lst) = t;
}
(*lst) = NULL;
}
}

View File

@ -0,0 +1,20 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_lstdelone.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/01 20:32:56 by lfirmin #+# #+# */
/* Updated: 2024/06/01 20:32:56 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
void ft_lstdelone(t_list *lst, void (*del)(void*))
{
if (!lst || !del)
return ;
del(lst->content);
free(lst);
}

View File

@ -0,0 +1,23 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_lstiter.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/01 21:05:12 by lfirmin #+# #+# */
/* Updated: 2024/06/01 21:05:12 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
void ft_lstiter(t_list *lst, void (*f)(void *))
{
if (!lst || !f)
return ;
while (lst)
{
f(lst->content);
lst = lst->next;
}
}

View File

@ -0,0 +1,23 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_lstlast.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/01 01:52:09 by lfirmin #+# #+# */
/* Updated: 2024/06/01 01:57:22 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
t_list *ft_lstlast(t_list *lst)
{
while (lst)
{
if (!lst->next)
return (lst);
lst = lst->next;
}
return (lst);
}

View File

@ -0,0 +1,41 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_lstmap.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/02 18:21:09 by lfirmin #+# #+# */
/* Updated: 2024/06/03 15:53:13 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *))
{
t_list *new;
t_list *save;
if (!lst || !del || !f)
return (NULL);
new = ft_lstnew(lst->content);
if (!new)
return (NULL);
new->content = f(new->content);
save = new;
lst = lst->next;
while (lst)
{
new->next = ft_lstnew(lst->content);
if (!new->next)
{
ft_lstclear(&save, del);
return (NULL);
}
new->next->content = f(new->next->content);
new = new->next;
lst = lst->next;
}
new->next = NULL;
return (save);
}

View File

@ -0,0 +1,24 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_lstnew.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/31 18:41:23 by lfirmin #+# #+# */
/* Updated: 2024/05/31 20:33:26 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
t_list *ft_lstnew(void *content)
{
t_list *new;
new = (t_list *)malloc(sizeof(*new));
if (!new)
return (NULL);
new->content = content;
new->next = NULL;
return (new);
}

View File

@ -0,0 +1,27 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_lstsize.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/31 22:00:49 by lfirmin #+# #+# */
/* Updated: 2024/05/31 22:12:17 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
int ft_lstsize(t_list *lst)
{
int i;
t_list *count;
count = lst;
i = 0;
while (count)
{
count = count->next;
i++;
}
return (i);
}

26
libft/srcs/ft_memchr.c Normal file
View File

@ -0,0 +1,26 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_memchr.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/21 07:40:39 by lfirmin #+# #+# */
/* Updated: 2024/05/22 09:59:44 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
void *ft_memchr(const void *s, int c, size_t n)
{
unsigned char *str;
str = (unsigned char *)s;
while (n--)
{
if (*str == (unsigned char)c)
return (str);
str++;
}
return (NULL);
}

30
libft/srcs/ft_memcmp.c Normal file
View File

@ -0,0 +1,30 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_memcmp.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/21 07:57:58 by lfirmin #+# #+# */
/* Updated: 2024/05/22 11:34:35 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
int ft_memcmp(const void *ptr1, const void *ptr2, size_t num)
{
unsigned char *pt1;
unsigned char *pt2;
size_t i;
pt1 = (unsigned char *)ptr1;
pt2 = (unsigned char *)ptr2;
i = 0;
while (i < num)
{
if (pt1[i] != pt2[i])
return (pt1[i] - pt2[i]);
i++;
}
return (0);
}

32
libft/srcs/ft_memcpy.c Normal file
View File

@ -0,0 +1,32 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_memcpy.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: tordner <tordner@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/21 01:08:31 by lfirmin #+# #+# */
/* Updated: 2025/06/02 00:40:39 by tordner ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
void *ft_memcpy(void *dest, const void *src, size_t len)
{
size_t i;
unsigned char *r;
unsigned char *s;
i = 0;
r = (unsigned char *)dest;
s = (unsigned char *)src;
if (dest == (void *)0 && src == (void *)0)
return (dest);
while (i < len)
{
r[i] = s[i];
i++;
}
return (dest);
}

39
libft/srcs/ft_memmove.c Normal file
View File

@ -0,0 +1,39 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_memmov.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/21 01:26:13 by lfirmin #+# #+# */
/* Updated: 2024/05/22 09:59:44 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
void *ft_memmove(void *s1, const void *s2, size_t len)
{
unsigned char *dest;
unsigned char *src;
unsigned int i;
dest = (unsigned char *)s1;
src = (unsigned char *)s2;
i = 0;
if (dest == NULL && src == NULL)
return (NULL);
if (dest < src)
{
while (i < len)
{
dest[i] = src[i];
i++;
}
}
else
{
while (0 < len--)
dest[len] = src[len];
}
return (dest);
}

24
libft/srcs/ft_memset.c Normal file
View File

@ -0,0 +1,24 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_memset.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/20 02:42:40 by lfirmin #+# #+# */
/* Updated: 2024/05/22 09:59:44 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
void *ft_memset(void *b, int c, size_t len)
{
size_t i;
unsigned char *r;
i = 0;
r = (unsigned char *)b;
while (i < len)
r[i++] = (unsigned char)c;
return (b);
}

View File

@ -0,0 +1,17 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_putchar_fd.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/29 11:17:45 by lfirmin #+# #+# */
/* Updated: 2024/05/29 11:20:42 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
void ft_putchar_fd(char c, int fd)
{
write(fd, &c, 1);
}

View File

@ -0,0 +1,18 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_putendl_fd.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/29 11:35:44 by lfirmin #+# #+# */
/* Updated: 2024/05/29 11:38:36 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
void ft_putendl_fd(char *s, int fd)
{
ft_putstr_fd(s, fd);
ft_putchar_fd('\n', fd);
}

31
libft/srcs/ft_putnbr_fd.c Normal file
View File

@ -0,0 +1,31 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_putnbr_fd.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/29 11:42:38 by lfirmin #+# #+# */
/* Updated: 2024/05/29 11:56:04 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
void ft_putnbr_fd(int n, int fd)
{
long int nb;
nb = n;
if (nb < 0)
{
nb = -nb;
ft_putchar_fd('-', fd);
}
if (nb >= 10)
{
ft_putnbr_fd(nb / 10, fd);
ft_putnbr_fd(nb % 10, fd);
}
else
ft_putchar_fd(nb + '0', fd);
}

24
libft/srcs/ft_putstr_fd.c Normal file
View File

@ -0,0 +1,24 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_putstr_fd.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/29 11:27:05 by lfirmin #+# #+# */
/* Updated: 2024/05/29 11:33:18 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
void ft_putstr_fd(char *s, int fd)
{
int i;
i = 0;
while (s[i])
{
ft_putchar_fd(s[i], fd);
i++;
}
}

95
libft/srcs/ft_split.c Normal file
View File

@ -0,0 +1,95 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_split.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/22 05:56:37 by lfirmin #+# #+# */
/* Updated: 2024/06/04 12:08:51 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
static int ft_c(char const *s, char c)
{
int i;
int count;
count = 0;
i = 0;
while (s[i])
{
if (s[i] != c && (i == 0 || s[i - 1] == c))
count++;
i++;
}
return (count);
}
void init_split_struct(t_split_struct *v, char const *s, char c)
{
if (!s)
return ;
v->array = (char **)malloc((ft_c(s, c) + 1) * sizeof(char *));
if (!s || !v->array)
return ;
v->i = 0;
v->j = 0;
}
static char *ft_strncpy(char *dest, const char *src, unsigned int n)
{
unsigned int i;
i = 0;
while (src[i] != '\0' && i < n)
{
dest[i] = src[i];
++i;
}
while (i < n)
{
dest[i] = '\0';
i++;
}
return (dest);
}
char **free_split(char **array, size_t j)
{
while (j > 0)
{
free(array[--j]);
}
free(array);
return (NULL);
}
char **ft_split(char const *s, char c)
{
t_split_struct v;
init_split_struct(&v, s, c);
if (!s || !v.array)
return (NULL);
while (s[v.i])
{
while (s[v.i] == c && s[v.i])
v.i++;
v.start = v.i;
while (s[v.i] != c && s[v.i])
v.i++;
if (v.i > v.start)
{
v.array[v.j] = (char *)malloc(v.i - v.start + 1);
if (!v.array[v.j])
return (free_split(v.array, v.j));
ft_strncpy(v.array[v.j], &s[v.start], v.i - v.start);
v.array[v.j][v.i - v.start] = '\0';
v.j++;
}
}
v.array[v.j] = NULL;
return (v.array);
}

View File

@ -0,0 +1,37 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_straddchar.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/11/08 06:02:17 by lfirmin #+# #+# */
/* Updated: 2024/11/08 06:02:17 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
char *ft_straddchar(char *str, char c)
{
int i;
char *res;
if (!str)
return (NULL);
i = 0;
while (str[i])
i++;
res = (char *)malloc(sizeof(char) * (i + 2));
if (!res)
return (NULL);
i = 0;
while (str[i])
{
res[i] = str[i];
i++;
}
res[i] = c;
res[i + 1] = '\0';
return (res);
}

26
libft/srcs/ft_strchr.c Normal file
View File

@ -0,0 +1,26 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_strchr.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/21 06:46:40 by lfirmin #+# #+# */
/* Updated: 2024/05/24 08:51:25 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
char *ft_strchr(char const *str, int c)
{
while (*str)
{
if (*str == (char)c)
return ((char *)str);
str++;
}
if (*str == (char)c)
return ((char *)str);
else
return (NULL);
}

22
libft/srcs/ft_strcmp.c Normal file
View File

@ -0,0 +1,22 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_strcmp.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/10/19 21:01:26 by lfirmin #+# #+# */
/* Updated: 2024/10/19 21:01:26 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
int ft_strcmp(char *s1, char *s2)
{
int i;
i = 0;
while (s1[i] == s2[i] && s1[i] != '\0' && s2[i] != '\0')
i++;
return (s1[i] - s2[i]);
}

27
libft/srcs/ft_strcpy.c Normal file
View File

@ -0,0 +1,27 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_strcpy.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/04/19 11:53:24 by lfirmin #+# #+# */
/* Updated: 2025/04/19 11:58:04 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
char *ft_strcpy(char *dest, char *src)
{
size_t i;
i = 0;
while (src[i] != '\0')
{
dest[i] = src[i];
i++;
}
dest[i] = '\0';
return (dest);
}

34
libft/srcs/ft_strdup.c Normal file
View File

@ -0,0 +1,34 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_strdup.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/15 05:28:24 by lfirmin #+# #+# */
/* Updated: 2024/05/22 09:59:44 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
char *ft_strdup(const char *src)
{
char *dest;
int i;
int size;
size = 0;
while (src[size] != '\0')
size++;
dest = malloc(sizeof(char) * (size + 1));
if (dest == NULL)
return (NULL);
i = 0;
while (i != size)
{
dest[i] = src[i];
i++;
}
dest[i] = '\0';
return (dest);
}

27
libft/srcs/ft_striteri.c Normal file
View File

@ -0,0 +1,27 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_striteri.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/29 10:54:40 by lfirmin #+# #+# */
/* Updated: 2024/05/29 11:12:05 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
void ft_striteri(char *s, void (*f)(unsigned int, char*))
{
int i;
i = 0;
if (s)
{
while (s[i])
{
f(i, &s[i]);
++i;
}
}
}

34
libft/srcs/ft_strjoin.c Normal file
View File

@ -0,0 +1,34 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_strjoin.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/22 01:00:14 by lfirmin #+# #+# */
/* Updated: 2024/05/24 08:49:06 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
char *ft_strjoin(const char *s1, const char *s2)
{
char *res;
int i;
int j;
i = 0;
j = 0;
if (s1 == NULL && s2 == NULL)
return (NULL);
res = (char *) malloc((ft_strlen(s1) + ft_strlen(s2) + 1) * sizeof(char));
if (!res)
return (NULL);
while (s1[i])
res[j++] = s1[i++];
i = 0;
while (s2[i])
res[j++] = s2[i++];
res[j] = 0;
return (res);
}

32
libft/srcs/ft_strlcat.c Normal file
View File

@ -0,0 +1,32 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_strlcat.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/21 03:55:25 by lfirmin #+# #+# */
/* Updated: 2024/05/22 09:59:44 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
size_t ft_strlcat(char *dst, const char *src, size_t size)
{
size_t i;
size_t r;
size_t s;
i = 0;
r = ft_strlen(dst);
s = ft_strlen(src);
if (size <= r)
return (s + size);
while (r + i < size - 1 && src[i] != '\0')
{
dst[r + i] = src[i];
i++;
}
dst[r + i] = '\0';
return (r + s);
}

34
libft/srcs/ft_strlcpy.c Normal file
View File

@ -0,0 +1,34 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_strlcpy.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/21 02:18:17 by lfirmin #+# #+# */
/* Updated: 2024/05/30 18:36:18 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
size_t ft_strlcpy(char *dst, const char *src, size_t dsts)
{
size_t srcs;
size_t i;
ft_strlen(src);
if (!src || !dst)
return (0);
srcs = ft_strlen(src);
i = 0;
if (dsts != 0)
{
while (src[i] != '\0' && i < (dsts - 1))
{
dst[i] = src[i];
i++;
}
dst[i] = '\0';
}
return (srcs);
}

22
libft/srcs/ft_strlen.c Normal file
View File

@ -0,0 +1,22 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_strlen.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/19 23:16:45 by lfirmin #+# #+# */
/* Updated: 2024/05/23 07:36:59 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
size_t ft_strlen(const char *s)
{
int i;
i = 0;
while (s[i])
i++;
return ((size_t)i);
}

32
libft/srcs/ft_strmapi.c Normal file
View File

@ -0,0 +1,32 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_strmapi.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/28 15:10:42 by lfirmin #+# #+# */
/* Updated: 2024/05/28 17:00:27 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
char *ft_strmapi(char const *s, char (*f)(unsigned int, char))
{
char *str;
int i;
if (!s)
return (NULL);
str = (char *)malloc(ft_strlen(s) + 1);
if (!str)
return (NULL);
i = 0;
while (s[i])
{
str[i] = f(i, s[i]);
++i;
}
str[i] = '\0';
return (str);
}

32
libft/srcs/ft_strncmp.c Normal file
View File

@ -0,0 +1,32 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_strncmp.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/21 06:55:09 by lfirmin #+# #+# */
/* Updated: 2024/05/24 08:47:59 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
int ft_strncmp(const char *s1, const char *s2, unsigned int n)
{
unsigned int i;
unsigned char c1;
unsigned char c2;
i = 0;
if (n == 0)
return (0);
while (i < n)
{
c1 = (unsigned char)s1[i];
c2 = (unsigned char)s2[i];
if (c1 != c2 || c1 == '\0' || c2 == '\0')
return (c1 - c2);
i++;
}
return (0);
}

36
libft/srcs/ft_strnstr.c Normal file
View File

@ -0,0 +1,36 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_strnstr.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/21 08:22:59 by lfirmin #+# #+# */
/* Updated: 2024/05/22 09:59:44 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
char *ft_strnstr(const char *hay, const char *need, size_t len)
{
size_t i;
size_t n;
i = 0;
if (need[0] == '\0')
return ((char *)hay);
while (hay[i] != '\0')
{
n = 0;
while (hay[i + n] == need[n] && (i + n) < len)
{
if (hay[i + n] == '\0' && need[n] == '\0')
return ((char *)&hay[i]);
n++;
}
if (need[n] == '\0')
return ((char *)hay + i);
i++;
}
return (0);
}

35
libft/srcs/ft_strrchr.c Normal file
View File

@ -0,0 +1,35 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_strrchr.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/21 06:42:38 by lfirmin #+# #+# */
/* Updated: 2024/05/30 18:30:00 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
char *ft_strrchr(const char *str, int c)
{
int i;
int last_occurrence;
ft_strlen(str);
i = 0;
last_occurrence = -1;
if (str == NULL)
return (NULL);
while (str[i])
{
if (str[i] == (char)c)
last_occurrence = i;
i++;
}
if ((char)c == '\0')
return ((char *)&str[i]);
if (last_occurrence != -1)
return ((char *)&str[last_occurrence]);
return (NULL);
}

68
libft/srcs/ft_strtrim.c Normal file
View File

@ -0,0 +1,68 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_strtrim.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/23 21:32:01 by lfirmin #+# #+# */
/* Updated: 2024/05/31 02:04:11 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
static int is_in_set(char c, const char *set)
{
while (*set)
{
if (c == *set)
{
return (1);
}
set++;
}
return (0);
}
static char *ft_strncpy(char *dest, const char *src, unsigned int n)
{
unsigned int i;
i = 0;
while (src[i] != '\0' && i < n)
{
dest[i] = src[i];
++i;
}
while (i < n)
{
dest[i] = '\0';
i++;
}
return (dest);
}
char *ft_strtrim(const char *s1, const char *set)
{
size_t s;
size_t e;
size_t len;
char *str;
if (!s1 || !set)
return (NULL);
s = 0;
while (s1[s] && is_in_set(s1[s], set))
s++;
e = ft_strlen(s1);
while (e > s && is_in_set(s1[e - 1], set))
e--;
len = e - s;
str = (char *)malloc(sizeof(char) * (len + 1));
if (!str)
return (NULL);
ft_strncpy(str, s1 + s, len);
str[len] = '\0';
return (str);
}

34
libft/srcs/ft_substr.c Normal file
View File

@ -0,0 +1,34 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_substr.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/22 00:15:54 by lfirmin #+# #+# */
/* Updated: 2024/05/24 08:28:01 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
char *ft_substr(char const *s, unsigned int start, size_t len)
{
char *sub;
size_t i;
if ((ft_strlen(s) - start) < len)
len = ft_strlen(s) - start;
if (ft_strlen(s) < start)
return (ft_strdup(""));
i = 0;
sub = (char *) malloc(len + 1);
if (!sub)
return (NULL);
while (len > 0)
{
sub[i++] = s[start++];
len--;
}
sub[i] = '\0';
return (sub);
}

19
libft/srcs/ft_tolower.c Normal file
View File

@ -0,0 +1,19 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_tolower.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/21 04:50:40 by lfirmin #+# #+# */
/* Updated: 2024/05/22 11:09:36 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
int ft_tolower(int c)
{
if (c >= 65 && c <= 90)
return (c + 32);
return (c);
}

19
libft/srcs/ft_toupper.c Normal file
View File

@ -0,0 +1,19 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_toupper.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/21 04:50:40 by lfirmin #+# #+# */
/* Updated: 2024/05/22 09:59:44 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
int ft_toupper(int c)
{
if (c >= 97 && c <= 122)
return (c - 32);
return (c);
}

69
main.c
View File

@ -1,69 +0,0 @@
// main.c
#include "cub3d.h"
#include <stdio.h>
#include <string.h>
// ---- TEMP: petite map de test fermée (a remplacer par le parsing) ----
static char *gmap[] = {
"111111111111",
"100000000001",
"101111011101",
"100100010001",
"101100010001",
"100000000001",
"111111111111",
NULL
};
static int map_w(char **m){ int w=0; for(int i=0;m[0][i];++i) w++; return w; }
static int map_h(char **m){ int h=0; while(m[h]) h++; return h; }
// Charge texture XPM via mlx_xpm_file_to_image (ou via parsing)
static void load_tex(t_app *a, int id, const char *path){
t_tex *t = &a->tex[id];
t->img.ptr = mlx_xpm_file_to_image(a->mlx, (char*)path, &t->w, &t->h);
if (!t->img.ptr){ fprintf(stderr,"Texture load fail: %s\n", path); exit(1); }
t->img.addr = mlx_get_data_addr(t->img.ptr, &t->img.bpp, &t->img.line_len, &t->img.endian);
}
int main(void) {
t_app a;
memset(&a, 0, sizeof(a));
a.mlx = mlx_init();
if (!a.mlx) return 1;
a.win = mlx_new_window(a.mlx, WIN_W, WIN_H, "cub3d");
a.frame.ptr = mlx_new_image(a.mlx, WIN_W, WIN_H);
a.frame.addr = mlx_get_data_addr(a.frame.ptr, &a.frame.bpp, &a.frame.line_len, &a.frame.endian);
// map (remplace par le résultat de ton parsing)
a.map = gmap;
a.map_w = map_w(a.map);
a.map_h = map_h(a.map);
// player init (à placer selon la map/parsed spawn + direction N/E/S/W)
a.px = 2.5; a.py = 2.5;
a.dirx = -1.0; a.diry = 0.0;
a.planex = 0.0; a.planey = 0.66;
a.move_speed = 0.08;
a.rot_speed = 0.05;
a.zbuf = malloc(sizeof(double) * WIN_W);
if (!a.zbuf) return 1;
// charge 4 textures (exemples de chemins)
load_tex(&a, 0, "tex_north.xpm");
load_tex(&a, 1, "tex_east.xpm");
load_tex(&a, 2, "tex_south.xpm");
load_tex(&a, 3, "tex_west.xpm");
// hooks
mlx_hook(a.win, 2, 1L<<0, key_press, &a); // KeyPress
mlx_hook(a.win, 3, 1L<<1, key_release, &a); // KeyRelease
mlx_hook(a.win, 17, 0, close_win, &a); // DestroyNotify
mlx_loop_hook(a.mlx, update, &a);
mlx_loop(a.mlx);
return 0;
}

View File

@ -0,0 +1,21 @@
NO assets/test/north.xpm
SO assets/test/south.xpm
WE assets/test/west.xpm
EA assets/test/east.xpm
F 20,20,-20
C 200,200,200
11111
10001
10S01
10001
10001
10001
11001
10001
10001
10001
10001
10001
11111

View File

@ -0,0 +1,20 @@
NO assets/test/north.xpm
SO assets/test/south.xpm
WE assets/test/west.xpm
EA assets/test/east.xpm
C 200,200,200
11111
10001
10S01
10001
10001
10001
11001
10001
10001
10001
10001
10001
11111

View File

@ -0,0 +1,21 @@
NO assets/test/north.xpm
SO assets/test/south.xpm
WE assets/test/west.xpm
EA assets/test/east.xpm
F 20,20,20
C 200,200,
11111
10001
10S01
10001
10001
10001
11001
10001
10001
10001
10001
10001
11111

View File

@ -0,0 +1,21 @@
NO assets/test/north.xpm
SO assets/test/south.xpm
WE assets/test/west.xpm
EA assets/test/east.xpm
F 20,20
C 200,200,200
11111
10001
10S01
10001
10001
10001
11001
10001
10001
10001
10001
10001
11111

18
maps/bad/color_none.cub Normal file
View File

@ -0,0 +1,18 @@
NO assets/test/north.xpm
SO assets/test/south.xpm
WE assets/test/west.xpm
EA assets/test/east.xpm
11111
10001
10S01
10001
10001
10001
11001
10001
10001
10001
10001
10001
11111

View File

@ -0,0 +1,35 @@
NO assets/test/north.xpm
SO assets/test/south.xpm
WE assets/test/west.xpm
EA assets/test/east.xpm
F 20,20,20
C 200,200,200
11111
10001
10S01
10001
10001
10001
11001
10001
10001
10001
10001
10001
11111
1

21
maps/bad/filetype_missing Normal file
View File

@ -0,0 +1,21 @@
NO assets/test/north.xpm
SO assets/test/south.xpm
WE assets/test/west.xpm
EA assets/test/east.xpm
F 20,20,20
C 200,200,200
11111
10001
10S01
10001
10001
10001
11001
10001
10001
10001
10001
10001
11111

View File

@ -0,0 +1,21 @@
NO assets/test/north.xpm
SO assets/test/south.xpm
WE assets/test/west.xpm
EA assets/test/east.xpm
F 20,20,20
C 200,200,200
11111
10001
10S01
10001
10001
10001
11001
10001
10001
10001
10001
10001
11111

13
maps/bad/map_only.cub Normal file
View File

@ -0,0 +1,13 @@
11111
10001
10S01
10001
10001
10001
11001
10001
10001
10001
10001
10001
11111

View File

@ -0,0 +1,10 @@
NO assets/test/north.xpm
SO assets/test/south.xpm
WE assets/test/west.xpm
EA assets/test/east.xpm
F 20,20,20
C 200,200,200
111
111

View File

@ -0,0 +1,21 @@
NO assets/test/north.xpm
SO assets/test/south.xpm
WE assets/test/west.xpm
EA assets/test/east.xpm
F 20,20,20
C 200,200,200
11111
10001
10S01
10001
10001
10001
11E01
10001
10001
10001
10001
10001
11111

21
maps/bad/player_none.cub Normal file
View File

@ -0,0 +1,21 @@
NO assets/test/north.xpm
SO assets/test/south.xpm
WE assets/test/west.xpm
EA assets/test/east.xpm
F 20,20,20
C 200,200,200
11111
10001
10001
10001
10001
10001
11001
10001
10001
10001
10001
10001
11111

View File

@ -0,0 +1,21 @@
NO assets/test/north.xpm
SO assets/test/south.xpm
WE assets/test/west.xpm
EA assets/test/east.xpm
F 20,20,20
C 200,200,200
1S111
10001
10001
10001
10001
10001
11001
10001
10001
10001
10001
10001
11111

21
maps/bad/textures_dir.cub Normal file
View File

@ -0,0 +1,21 @@
NO assets/test/north.xpm
SO assets/test/south.xpm
WE assets/test/west.xpm
EA assets/test/
F 20,20,20
C 200,200,200
11111
10001
10S01
10001
10001
10001
11001
10001
10001
10001
10001
10001
11111

View File

@ -0,0 +1,22 @@
NO assets/test/north.xpm
SO assets/test/south.xpm
WE assets/test/west.xpm
EA assets/test/east.xpm
EA assets/test/east.xpm
F 20,20,20
C 200,200,200
11111
10001
10S01
10001
10001
10001
11001
10001
10001
10001
10001
10001
11111

View File

@ -0,0 +1,21 @@
NO assets/test/west.xpm
SO assets/test/west.xpm
WE assets/test/west.xpm
EA assets/test/forbidden.xpm
F 20,20,20
C 200,200,200
11111
10001
10S01
10001
10001
10001
11001
10001
10001
10001
10001
10001
11111

View File

@ -0,0 +1,21 @@
NO assets/test/north.xpm
SO assets/test/south.xpm
WE assets/test/x
EA assets/test/east.xpm
F 20,20,20
C 200,200,200
11111
10001
10S01
10001
10001
10001
11001
10001
10001
10001
10001
10001
11111

View File

@ -0,0 +1,20 @@
SO assets/test/south.xpm
WE assets/test/west.xpm
EA assets/test/east.xpm
F 20,20,20
C 200,200,200
11111
10001
10S01
10001
10001
10001
11001
10001
10001
10001
10001
10001
11111

Some files were not shown because too many files have changed in this diff Show More