diff options
Diffstat (limited to 'fuzz')
25 files changed, 309 insertions, 7 deletions
diff --git a/fuzz/Makefile.am b/fuzz/Makefile.am index b9798f9..8ea3fb0 100644 --- a/fuzz/Makefile.am +++ b/fuzz/Makefile.am @@ -19,18 +19,37 @@ LIBFUZZER_SRC: CLEANFILES = libFuzzer.a -noinst_PROGRAMS = xplist_fuzzer bplist_fuzzer +noinst_PROGRAMS = \ + xplist_fuzzer \ + bplist_fuzzer \ + jplist_fuzzer \ + oplist_fuzzer xplist_fuzzer_SOURCES = xplist_fuzzer.cc xplist_fuzzer_LDFLAGS = -static -xplist_fuzzer_LDADD = $(top_builddir)/src/libplist.la libFuzzer.a +xplist_fuzzer_LDADD = $(top_builddir)/src/libplist-2.0.la libFuzzer.a bplist_fuzzer_SOURCES = bplist_fuzzer.cc bplist_fuzzer_LDFLAGS = -static -bplist_fuzzer_LDADD = $(top_builddir)/src/libplist.la libFuzzer.a +bplist_fuzzer_LDADD = $(top_builddir)/src/libplist-2.0.la libFuzzer.a + +jplist_fuzzer_SOURCES = jplist_fuzzer.cc +jplist_fuzzer_LDFLAGS = -static +jplist_fuzzer_LDADD = $(top_builddir)/src/libplist-2.0.la libFuzzer.a + +oplist_fuzzer_SOURCES = oplist_fuzzer.cc +oplist_fuzzer_LDFLAGS = -static +oplist_fuzzer_LDADD = $(top_builddir)/src/libplist-2.0.la libFuzzer.a TESTS = fuzzers.test -EXTRA_DIST = bplist.dict xplist.dict init-fuzzers.sh test-fuzzers.sh fuzzers.test +EXTRA_DIST = \ + bplist.dict \ + xplist.dict \ + jplist.dict \ + oplist.dict \ + init-fuzzers.sh \ + test-fuzzers.sh \ + fuzzers.test endif diff --git a/fuzz/init-fuzzers.sh b/fuzz/init-fuzzers.sh index 4d28016..c9b1955 100755 --- a/fuzz/init-fuzzers.sh +++ b/fuzz/init-fuzzers.sh @@ -5,7 +5,7 @@ FUZZDIR=`dirname $0` cd ${FUZZDIR} -if ! test -x xplist_fuzzer || ! test -x bplist_fuzzer; then +if ! test -x xplist_fuzzer || ! test -x bplist_fuzzer || ! test -x jplist_fuzzer; then echo "ERROR: you need to build the fuzzers first." cd ${CURDIR} exit 1 @@ -19,5 +19,19 @@ mkdir -p bplist-input cp ../test/data/*.bplist bplist-input/ ./bplist_fuzzer -merge=1 bplist-input bplist-crashes bplist-leaks -dict=bplist.dict +mkdir -p jplist-input +mkdir -p jplist-crashes +mkdir -p jplist-leaks +cp ../test/data/j1.plist jplist-input/ +cp ../test/data/j2.plist jplist-input/ +./jplist_fuzzer -merge=1 jplist-input jplist-crashes jplist-leaks -dict=jplist.dict + +mkdir -p oplist-input +mkdir -p oplist-crashes +mkdir -p oplist-leaks +cp ../test/data/*.ostep oplist-input/ +cp ../test/data/test.strings oplist-input/ +./oplist_fuzzer -merge=1 oplist-input oplist-crashes oplist-leaks -dict=oplist.dict + cd ${CURDIR} exit 0 diff --git a/fuzz/jplist-crashes/clusterfuzz-testcase-minimized-jplist_fuzzer-4997614678966272 b/fuzz/jplist-crashes/clusterfuzz-testcase-minimized-jplist_fuzzer-4997614678966272 new file mode 100644 index 0000000..e9982b8 --- /dev/null +++ b/fuzz/jplist-crashes/clusterfuzz-testcase-minimized-jplist_fuzzer-4997614678966272 @@ -0,0 +1,65 @@ +{"Some AISCI stri,{}ng""e:sTt ASCII Stri{"":tring""e:sTt ASCII Stri{"":5}ome UTF8 stringq":["àéËçù","日I Stri""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,i,{}ng""e:sT. + + + + + + + + + + + + + + + +[ + + + + + + + + + + + + + + + +Stri:sTt ASCII Stri{"":5}ome UTF8 stringq":["àéËçù","日I Stri""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,i,{}ng""e:sT. + + + + + + + + + + + + + + + +[ + + + + + + + + + + + + + + + +Stri{"":5}ome UTF8 stringq":["àéËçù","日I Stri""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""0:""SCI stri,{}ng""e:sTt ASCII Stri{"":tring""e:sTt ASCII Stri{"":5}ome UTF8 stringq":["àéËçù","日I Stri""""""""""{""{,""""""""""""""""""{""{,"""""""""",0""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""0:""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""(Zߐtheyk Ѥन्दी"],"Keys & \"entiti]s\"":"helloִבְרִ*f(Zߐtheyk \nий ѯ-0.2e+3yk polski","\nTest A''I{"":0}oee UT0ссी"],"Keys & \"ti]s\"":"helloִבְרִ*f(Zߐtheyk \nий ѯзыothe""""""""""""""""""{""{,""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""0:""SCI stri,{}ng""e:sTt ASCII Stri{"":tring""e:sTt ASCII Stri{"":5}ome UTF8 stringq":["àéËçù","日I Stri""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""0:""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""(Zߐtheyk Ѥन्दी"],"Keys & \"entiti]s\"":"helloִבְרִ*f(Zߐtheyk \nий ѯ-0.2e+3yk pËçù","Test A''I{"":0}oee UT0ссी"],"Keys & \"ti]s\"":"helloִבְרִ*f(Zߐtheyk \nий ѯзыotheyk polski","\nह check this: falSs{"":5}ome UTF8 stringq":["àéËçù","日I Stri""""""""""{""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""0:""SCI stri,{}ng""e:sTt ASCII Stri{"":tring""e:sTt ASCII Stri{"":5}ome UTF8 stringq":["àéËçù","日I Stri""""""""""{""{,""""""""""""""""""{""{,"""""""""",0""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""0:""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""(Zߐtheyk Ѥन्दी"],"Keys & \"entiti]s\"":"helloִבְרִ*f(Zߐtheyk \nий ѯ-0.2e+3yk polski","\nTest A''I{"":0}oee UT0ссी"],"Keys & \"ti]s\"":"helloִבְרִ*f(Zߐtheyk \nий ѯзыothe""""""""""""""""""{""{,""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""0:""SCI stri,{}ng""e:sTt ASCII Stri{"":tring""e:sTt ASCII Stri{"":5}ome UTF8 stringq":["àéËçù","日I Stri""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""0:""""""""""{""{,""""""""""""""""""{""{,""""""""""""""""""{""{,""""""""""""""(Zߐtheyk Ѥन्दी"],"Keys & \"entiti]s\"":"helloִבְרִ*f(Zߐtheyk \nий ѯ-0.2e+3yk pËçù","Test A''I{"":0}oee UT0ссी"],"Keys & \"ti]s\"":"helloִבְרִ*f(Zߐtheyk \nий ѯзыotheyk polski","\nह check this: falSse2 !!!"}
\ No newline at end of file diff --git a/fuzz/jplist-crashes/clusterfuzz-testcase-minimized-jplist_fuzzer-5149455463088128 b/fuzz/jplist-crashes/clusterfuzz-testcase-minimized-jplist_fuzzer-5149455463088128 new file mode 100644 index 0000000..653c585 --- /dev/null +++ b/fuzz/jplist-crashes/clusterfuzz-testcase-minimized-jplist_fuzzer-5149455463088128 @@ -0,0 +1 @@ +{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\Xn!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!\\n!\n!"}{"\n\\\n!\n!n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}{"\n\\\n!\n!"}
\ No newline at end of file diff --git a/fuzz/jplist-crashes/clusterfuzz-testcase-minimized-jplist_fuzzer-5161359598288896 b/fuzz/jplist-crashes/clusterfuzz-testcase-minimized-jplist_fuzzer-5161359598288896 Binary files differnew file mode 100644 index 0000000..10c37ec --- /dev/null +++ b/fuzz/jplist-crashes/clusterfuzz-testcase-minimized-jplist_fuzzer-5161359598288896 diff --git a/fuzz/jplist-crashes/clusterfuzz-testcase-minimized-jplist_fuzzer-5486807695884288 b/fuzz/jplist-crashes/clusterfuzz-testcase-minimized-jplist_fuzzer-5486807695884288 new file mode 100644 index 0000000..e440e5c --- /dev/null +++ b/fuzz/jplist-crashes/clusterfuzz-testcase-minimized-jplist_fuzzer-5486807695884288 @@ -0,0 +1 @@ +3
\ No newline at end of file diff --git a/fuzz/jplist-crashes/clusterfuzz-testcase-minimized-jplist_fuzzer-5576833398079488 b/fuzz/jplist-crashes/clusterfuzz-testcase-minimized-jplist_fuzzer-5576833398079488 new file mode 100644 index 0000000..734562b --- /dev/null +++ b/fuzz/jplist-crashes/clusterfuzz-testcase-minimized-jplist_fuzzer-5576833398079488 @@ -0,0 +1 @@ +{""f ""}{""[""""""]""}{""[""""""]""}{""[""""""]""[""""""]""}{""[""""""]""}{""[""""""]""}{""[""""""]""{""}{""[""""""]""}{""[""""""]""}{""[""""]""}{""[""""""]""}{""[""""""]""}{""[""""""{""}{""[""""""]""}{""[""""""]""}{""[""""""]""}{""[""""]""}{""[""""{""[""]""}{""[""""""]""}{""[""""""]""}{""}{""}{""}{""}{""[""""""]""}{""[""""""]}{""[""""]""}{""[""""]""}{""}{""[""""""]""}""]}{""[""""""]""}{""}{""}{""[""""""]""}{""[""""]}]}{""[""""""]""}{""[""""""]""}{""}{""[""""""]""}}
\ No newline at end of file diff --git a/fuzz/jplist-crashes/clusterfuzz-testcase-minimized-jplist_fuzzer-5704016686874624 b/fuzz/jplist-crashes/clusterfuzz-testcase-minimized-jplist_fuzzer-5704016686874624 new file mode 100644 index 0000000..7853ee8 --- /dev/null +++ b/fuzz/jplist-crashes/clusterfuzz-testcase-minimized-jplist_fuzzer-5704016686874624 @@ -0,0 +1 @@ +{"Some Ak this: \u-170141183460469231731687303715884040192 !!!"}
\ No newline at end of file diff --git a/fuzz/jplist-crashes/clusterfuzz-testcase-minimized-jplist_fuzzer-6639076466360320 b/fuzz/jplist-crashes/clusterfuzz-testcase-minimized-jplist_fuzzer-6639076466360320 new file mode 100644 index 0000000..3cf20d5 --- /dev/null +++ b/fuzz/jplist-crashes/clusterfuzz-testcase-minimized-jplist_fuzzer-6639076466360320 @@ -0,0 +1 @@ +-
\ No newline at end of file diff --git a/fuzz/jplist-leaks/clusterfuzz-testcase-minimized-jplist_fuzzer-4881933237092352 b/fuzz/jplist-leaks/clusterfuzz-testcase-minimized-jplist_fuzzer-4881933237092352 new file mode 100644 index 0000000..d8ae3d3 --- /dev/null +++ b/fuzz/jplist-leaks/clusterfuzz-testcase-minimized-jplist_fuzzer-4881933237092352 @@ -0,0 +1 @@ +{"Some ASCII stringtring":"Test ASCII String","Some UTF8 strnngs":["àéèçù","日本語","汉语/漢語","한국어/조선말","русский язык","الْعَرَبيّة","עִבְרִית","język polskiिन्दी"],"Keys & \"entities\"":"hellow world & others <nodes> are \"fun!?'","Boolean":false,"Anothe\uD800\uDC00rue,"Some Int":32434543632,"Some String with Unicode entity":"Yeah check this: \u1234 !!!"}
\ No newline at end of file diff --git a/fuzz/jplist-leaks/clusterfuzz-testcase-minimized-jplist_fuzzer-5069883912617984 b/fuzz/jplist-leaks/clusterfuzz-testcase-minimized-jplist_fuzzer-5069883912617984 new file mode 100644 index 0000000..a1f85f7 --- /dev/null +++ b/fuzz/jplist-leaks/clusterfuzz-testcase-minimized-jplist_fuzzer-5069883912617984 @@ -0,0 +1 @@ +{""A}
\ No newline at end of file diff --git a/fuzz/jplist-leaks/clusterfuzz-testcase-minimized-jplist_fuzzer-5816111696838656 b/fuzz/jplist-leaks/clusterfuzz-testcase-minimized-jplist_fuzzer-5816111696838656 new file mode 100644 index 0000000..f19d601 --- /dev/null +++ b/fuzz/jplist-leaks/clusterfuzz-testcase-minimized-jplist_fuzzer-5816111696838656 @@ -0,0 +1 @@ +[[][[][][][][][]{"222\uDBFF\uDFFFe222212222222\uDBFF\uDFFFe2[]\r[][][][]22212222222222h che[][][][][][][][][][][][][][][][][][][][][][][[][][][][][][][][][][][][][][][][][][][][][][][][][]22222h che22#"}[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]][]]
\ No newline at end of file diff --git a/fuzz/jplist.dict b/fuzz/jplist.dict new file mode 100644 index 0000000..e08245a --- /dev/null +++ b/fuzz/jplist.dict @@ -0,0 +1,52 @@ +# +# AFL dictionary for JSON +# ----------------------- +# +# Just the very basics. +# +# Inspired by a dictionary by Jakub Wilk <jwilk@jwilk.net> +# + +"0" +",0" +":0" +"0:" +"-1.2e+3" + +"true" +"false" +"null" + +"\"\"" +",\"\"" +":\"\"" +"\"\":" + +"{}" +",{}" +":{}" +"{\"\":0}" +"{{}}" + +"[]" +",[]" +":[]" +"[0]" +"[[]]" + +"''" +"\\" +"\\b" +"\\f" +"\\n" +"\\r" +"\\t" +"\\u0000" +"\\x00" +"\\0" +"\\uD800\\uDC00" +"\\uDBFF\\uDFFF" + +"\"\":0" +"//" +"/**/" diff --git a/fuzz/jplist_fuzzer.cc b/fuzz/jplist_fuzzer.cc new file mode 100644 index 0000000..a10da59 --- /dev/null +++ b/fuzz/jplist_fuzzer.cc @@ -0,0 +1,32 @@ +/* + * jplist_fuzzer.cc + * JSON plist fuzz target for libFuzzer + * + * Copyright (c) 2021 Nikias Bassen All Rights Reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include <plist/plist.h> +#include <stdio.h> + +extern "C" int LLVMFuzzerTestOneInput(const unsigned char* data, size_t size) +{ + plist_t root_node = NULL; + plist_from_json(reinterpret_cast<const char*>(data), size, &root_node); + plist_free(root_node); + + return 0; +} diff --git a/fuzz/jplist_fuzzer.options b/fuzz/jplist_fuzzer.options new file mode 100644 index 0000000..b22e679 --- /dev/null +++ b/fuzz/jplist_fuzzer.options @@ -0,0 +1,3 @@ +[libfuzzer] +max_len = 4096 +dict = jplist.dict diff --git a/fuzz/oplist-crashes/clusterfuzz-testcase-minimized-oplist_fuzzer-4503815405830144 b/fuzz/oplist-crashes/clusterfuzz-testcase-minimized-oplist_fuzzer-4503815405830144 new file mode 100644 index 0000000..11496c4 --- /dev/null +++ b/fuzz/oplist-crashes/clusterfuzz-testcase-minimized-oplist_fuzzer-4503815405830144 @@ -0,0 +1 @@ +"3"= /// ho/**5/*(*///6/*/#o/,{
\ No newline at end of file diff --git a/fuzz/oplist-crashes/clusterfuzz-testcase-minimized-oplist_fuzzer-4683683569467392 b/fuzz/oplist-crashes/clusterfuzz-testcase-minimized-oplist_fuzzer-4683683569467392 Binary files differnew file mode 100644 index 0000000..25d9ed9 --- /dev/null +++ b/fuzz/oplist-crashes/clusterfuzz-testcase-minimized-oplist_fuzzer-4683683569467392 diff --git a/fuzz/oplist-crashes/clusterfuzz-testcase-minimized-oplist_fuzzer-4716194114699264 b/fuzz/oplist-crashes/clusterfuzz-testcase-minimized-oplist_fuzzer-4716194114699264 new file mode 100644 index 0000000..2fa08dc --- /dev/null +++ b/fuzz/oplist-crashes/clusterfuzz-testcase-minimized-oplist_fuzzer-4716194114699264 @@ -0,0 +1 @@ +(<
\ No newline at end of file diff --git a/fuzz/oplist-crashes/clusterfuzz-testcase-minimized-oplist_fuzzer-4789915626110976 b/fuzz/oplist-crashes/clusterfuzz-testcase-minimized-oplist_fuzzer-4789915626110976 Binary files differnew file mode 100644 index 0000000..a36e0a2 --- /dev/null +++ b/fuzz/oplist-crashes/clusterfuzz-testcase-minimized-oplist_fuzzer-4789915626110976 diff --git a/fuzz/oplist-leaks/clusterfuzz-testcase-minimized-oplist_fuzzer-6043548602728448 b/fuzz/oplist-leaks/clusterfuzz-testcase-minimized-oplist_fuzzer-6043548602728448 new file mode 100644 index 0000000..6598aac --- /dev/null +++ b/fuzz/oplist-leaks/clusterfuzz-testcase-minimized-oplist_fuzzer-6043548602728448 @@ -0,0 +1,8 @@ +{JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJtrings" = ( + "àéèçù", + "i本語", + "汉语/漢語", + "한국어/!?'"; + "Som Int" = 32434543632; + "Some String with Unicode entity" = "Yeaߜeck this: \U1234 !!!"; +} diff --git a/fuzz/oplist-leaks/clusterfuzz-testcase-minimized-oplist_fuzzer-6497436988473344 b/fuzz/oplist-leaks/clusterfuzz-testcase-minimized-oplist_fuzzer-6497436988473344 new file mode 100644 index 0000000..9d68933 --- /dev/null +++ b/fuzz/oplist-leaks/clusterfuzz-testcase-minimized-oplist_fuzzer-6497436988473344 @@ -0,0 +1 @@ +"
\ No newline at end of file diff --git a/fuzz/oplist.dict b/fuzz/oplist.dict new file mode 100644 index 0000000..1408c4a --- /dev/null +++ b/fuzz/oplist.dict @@ -0,0 +1,51 @@ +# +# AFL dictionary for OpenStep plist format +# ---------------------------------------- + +"0" +",0" +"=0" +"0=" + +"\"\"" +",\"\"" +"=\"\"" +"\"\"=" + +"=" +";" + +"{}" +",{}" +"={}" +"{\"\"=0}" +"{{}}" + +"()" +",()" +"=()" +"(0)" +"(())" + +"''" +"\\" +"\\b" +"\\f" +"\\n" +"\\r" +"\\t" +"\\U0000" +"\\a" +"\\b" +"\\f" +"\\n" +"\\r" +"\\t" +"\\v" +"\\0" +"\\uD800\\uDC00" +"\\uDBFF\\uDFFF" + +"\"\"=0" +"//" +"/**/" diff --git a/fuzz/oplist_fuzzer.cc b/fuzz/oplist_fuzzer.cc new file mode 100644 index 0000000..0fabed8 --- /dev/null +++ b/fuzz/oplist_fuzzer.cc @@ -0,0 +1,32 @@ +/* + * oplist_fuzzer.cc + * OpenStep plist fuzz target for libFuzzer + * + * Copyright (c) 2023 Nikias Bassen All Rights Reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include <plist/plist.h> +#include <stdio.h> + +extern "C" int LLVMFuzzerTestOneInput(const unsigned char* data, size_t size) +{ + plist_t root_node = NULL; + plist_from_openstep(reinterpret_cast<const char*>(data), size, &root_node); + plist_free(root_node); + + return 0; +} diff --git a/fuzz/oplist_fuzzer.options b/fuzz/oplist_fuzzer.options new file mode 100644 index 0000000..69a63d9 --- /dev/null +++ b/fuzz/oplist_fuzzer.options @@ -0,0 +1,3 @@ +[libfuzzer] +max_len = 4096 +dict = oplist.dict diff --git a/fuzz/test-fuzzers.sh b/fuzz/test-fuzzers.sh index b0a8367..4fdf82b 100755 --- a/fuzz/test-fuzzers.sh +++ b/fuzz/test-fuzzers.sh @@ -5,13 +5,13 @@ FUZZDIR=`dirname $0` cd ${FUZZDIR} -if ! test -x xplist_fuzzer || ! test -x bplist_fuzzer; then +if ! test -x xplist_fuzzer || ! test -x bplist_fuzzer || ! test -x jplist_fuzzer || ! test -x oplist_fuzzer; then echo "ERROR: you need to build the fuzzers first." cd ${CURDIR} exit 1 fi -if ! test -d xplist-input || ! test -d bplist-input; then +if ! test -d xplist-input || ! test -d bplist-input || ! test -d jplist-input || ! test -d oplist-input; then echo "ERROR: fuzzer corpora directories are not present. Did you run init-fuzzers.sh ?" cd ${CURDIR} exit 1 @@ -29,5 +29,17 @@ if ! ./bplist_fuzzer bplist-input -dict=bplist.dict -max_len=4096 -runs=10000; t exit 1 fi +echo "### TESTING jplist_fuzzer ###" +if ! ./jplist_fuzzer jplist-input -dict=jplist.dict -max_len=65536 -runs=10000; then + cd ${CURDIR} + exit 1 +fi + +echo "### TESTING oplist_fuzzer ###" +if ! ./oplist_fuzzer oplist-input -dict=oplist.dict -max_len=65536 -runs=10000; then + cd ${CURDIR} + exit 1 +fi + cd ${CURDIR} exit 0 |