summaryrefslogtreecommitdiff
path: root/documentation/src_doc
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/src_doc')
-rw-r--r--documentation/src_doc/FL.gifbin0 -> 6455 bytes
-rw-r--r--documentation/src_doc/FL200.eps6945
-rw-r--r--documentation/src_doc/FL200.gifbin0 -> 2722 bytes
-rw-r--r--documentation/src_doc/Fl_Check_Button.gifbin0 -> 362 bytes
-rw-r--r--documentation/src_doc/Fl_File_Input.gifbin0 -> 4040 bytes
-rw-r--r--documentation/src_doc/Fl_Help_Dialog.gifbin0 -> 8571 bytes
-rw-r--r--documentation/src_doc/Fl_Light_Button.gifbin0 -> 421 bytes
-rw-r--r--documentation/src_doc/Fl_Return_Button.gifbin0 -> 491 bytes
-rw-r--r--documentation/src_doc/Fl_Roller.gifbin0 -> 1592 bytes
-rw-r--r--documentation/src_doc/Fl_Round_Button.gifbin0 -> 404 bytes
-rw-r--r--documentation/src_doc/Fl_Scroll.gifbin0 -> 13051 bytes
-rw-r--r--documentation/src_doc/Fl_Tile.gifbin0 -> 3837 bytes
-rw-r--r--documentation/src_doc/Fl_Value_Input.gifbin0 -> 651 bytes
-rw-r--r--documentation/src_doc/Fl_Value_Output.gifbin0 -> 640 bytes
-rw-r--r--documentation/src_doc/adjuster1.gifbin0 -> 1249 bytes
-rw-r--r--documentation/src_doc/advanced.dox113
-rw-r--r--documentation/src_doc/basics.dox352
-rw-r--r--documentation/src_doc/boxtypes.gifbin0 -> 12196 bytes
-rw-r--r--documentation/src_doc/buttons.gifbin0 -> 2052 bytes
-rw-r--r--documentation/src_doc/charts.gifbin0 -> 12312 bytes
-rw-r--r--documentation/src_doc/choice.gifbin0 -> 2240 bytes
-rw-r--r--documentation/src_doc/clock.gifbin0 -> 1779 bytes
-rw-r--r--documentation/src_doc/common.dox618
-rw-r--r--documentation/src_doc/counter.gifbin0 -> 1879 bytes
-rw-r--r--documentation/src_doc/cubeview.gifbin0 -> 10937 bytes
-rw-r--r--documentation/src_doc/development.dox461
-rw-r--r--documentation/src_doc/dial.gifbin0 -> 1564 bytes
-rw-r--r--documentation/src_doc/drawing.dox1013
-rw-r--r--documentation/src_doc/editor-replace.gifbin0 -> 1521 bytes
-rw-r--r--documentation/src_doc/editor.dox910
-rw-r--r--documentation/src_doc/editor.gifbin0 -> 10187 bytes
-rw-r--r--documentation/src_doc/enumerations.dox301
-rw-r--r--documentation/src_doc/events.dox389
-rw-r--r--documentation/src_doc/examples.dox651
-rw-r--r--documentation/src_doc/fl_alert.gifbin0 -> 1674 bytes
-rw-r--r--documentation/src_doc/fl_ask.gifbin0 -> 1333 bytes
-rw-r--r--documentation/src_doc/fl_choice.gifbin0 -> 1519 bytes
-rw-r--r--documentation/src_doc/fl_input.gifbin0 -> 1935 bytes
-rw-r--r--documentation/src_doc/fl_message.gifbin0 -> 1509 bytes
-rw-r--r--documentation/src_doc/fl_password.gifbin0 -> 1607 bytes
-rw-r--r--documentation/src_doc/fl_show_colormap.gifbin0 -> 17916 bytes
-rw-r--r--documentation/src_doc/fluid-catgets.gifbin0 -> 7626 bytes
-rw-r--r--documentation/src_doc/fluid-gettext.gifbin0 -> 7630 bytes
-rw-r--r--documentation/src_doc/fluid-org.gifbin0 -> 11334 bytes
-rw-r--r--documentation/src_doc/fluid.dox1373
-rw-r--r--documentation/src_doc/fluid1.gifbin0 -> 6257 bytes
-rw-r--r--documentation/src_doc/fluid2.gifbin0 -> 28555 bytes
-rw-r--r--documentation/src_doc/fluid3-cxx.gifbin0 -> 8841 bytes
-rw-r--r--documentation/src_doc/fluid3-gui.gifbin0 -> 10636 bytes
-rw-r--r--documentation/src_doc/fluid3-style.gifbin0 -> 8046 bytes
-rw-r--r--documentation/src_doc/fluid4.gifbin0 -> 5123 bytes
-rw-r--r--documentation/src_doc/fluid_prefs.gifbin0 -> 6875 bytes
-rw-r--r--documentation/src_doc/fluid_widget_cxx.gifbin0 -> 8154 bytes
-rw-r--r--documentation/src_doc/fluid_widget_gui.gifbin0 -> 10463 bytes
-rw-r--r--documentation/src_doc/fluid_widget_style.gifbin0 -> 7653 bytes
-rw-r--r--documentation/src_doc/forms.dox247
-rw-r--r--documentation/src_doc/glut.dox248
-rw-r--r--documentation/src_doc/hello.C.gifbin0 -> 1686 bytes
-rw-r--r--documentation/src_doc/intro.dox353
-rw-r--r--documentation/src_doc/license.dox502
-rw-r--r--documentation/src_doc/menu.gifbin0 -> 3079 bytes
-rw-r--r--documentation/src_doc/menu_button.gifbin0 -> 1632 bytes
-rw-r--r--documentation/src_doc/menubar.gifbin0 -> 1273 bytes
-rw-r--r--documentation/src_doc/migration_1_1.dox172
-rw-r--r--documentation/src_doc/migration_1_3.dox20
-rw-r--r--documentation/src_doc/opengl.dox459
-rw-r--r--documentation/src_doc/osissues.dox765
-rw-r--r--documentation/src_doc/positioner.gifbin0 -> 1467 bytes
-rw-r--r--documentation/src_doc/preface.dox85
-rw-r--r--documentation/src_doc/resizebox1.gifbin0 -> 2795 bytes
-rw-r--r--documentation/src_doc/resizebox2.gifbin0 -> 4291 bytes
-rw-r--r--documentation/src_doc/round_clock.gifbin0 -> 1623 bytes
-rw-r--r--documentation/src_doc/scrollbar.gifbin0 -> 1201 bytes
-rw-r--r--documentation/src_doc/slider.gifbin0 -> 3412 bytes
-rw-r--r--documentation/src_doc/subclassing.dox531
-rw-r--r--documentation/src_doc/symbols.gifbin0 -> 5175 bytes
-rw-r--r--documentation/src_doc/tabs.gifbin0 -> 2271 bytes
-rw-r--r--documentation/src_doc/text.gifbin0 -> 1988 bytes
-rw-r--r--documentation/src_doc/tiny.gifbin0 -> 95 bytes
-rw-r--r--documentation/src_doc/unicode.dox82
-rw-r--r--documentation/src_doc/valuators.gifbin0 -> 19207 bytes
-rw-r--r--documentation/src_doc/value_slider.gifbin0 -> 3733 bytes
82 files changed, 16590 insertions, 0 deletions
diff --git a/documentation/src_doc/FL.gif b/documentation/src_doc/FL.gif
new file mode 100644
index 000000000..823e0bdd4
--- /dev/null
+++ b/documentation/src_doc/FL.gif
Binary files differ
diff --git a/documentation/src_doc/FL200.eps b/documentation/src_doc/FL200.eps
new file mode 100644
index 000000000..6e386fc32
--- /dev/null
+++ b/documentation/src_doc/FL200.eps
@@ -0,0 +1,6945 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: (ImageMagick)
+%%Title: (FL.eps)
+%%CreationDate: (Mon Oct 6 14:19:31 2008)
+%%BoundingBox: 0 0 400 200
+%%HiResBoundingBox: 0 0 400 200
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 1
+%%Pages: 1
+%%EndComments
+
+%%BeginDefaults
+%%EndDefaults
+
+%%BeginProlog
+%
+% Display a color image. The image is displayed in color on
+% Postscript viewers or printers that support color, otherwise
+% it is displayed as grayscale.
+%
+/DirectClassPacket
+{
+ %
+ % Get a DirectClass packet.
+ %
+ % Parameters:
+ % red.
+ % green.
+ % blue.
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile color_packet readhexstring pop pop
+ compression 0 eq
+ {
+ /number_pixels 3 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add 3 mul def
+ } ifelse
+ 0 3 number_pixels 1 sub
+ {
+ pixels exch color_packet putinterval
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/DirectClassImage
+{
+ %
+ % Display a DirectClass image.
+ %
+ systemdict /colorimage known
+ {
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { DirectClassPacket } false 3 colorimage
+ }
+ {
+ %
+ % No colorimage operator; convert to grayscale.
+ %
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { GrayDirectClassPacket } image
+ } ifelse
+} bind def
+
+/GrayDirectClassPacket
+{
+ %
+ % Get a DirectClass packet; convert to grayscale.
+ %
+ % Parameters:
+ % red
+ % green
+ % blue
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile color_packet readhexstring pop pop
+ color_packet 0 get 0.299 mul
+ color_packet 1 get 0.587 mul add
+ color_packet 2 get 0.114 mul add
+ cvi
+ /gray_packet exch def
+ compression 0 eq
+ {
+ /number_pixels 1 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add def
+ } ifelse
+ 0 1 number_pixels 1 sub
+ {
+ pixels exch gray_packet put
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/GrayPseudoClassPacket
+{
+ %
+ % Get a PseudoClass packet; convert to grayscale.
+ %
+ % Parameters:
+ % index: index into the colormap.
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile byte readhexstring pop 0 get
+ /offset exch 3 mul def
+ /color_packet colormap offset 3 getinterval def
+ color_packet 0 get 0.299 mul
+ color_packet 1 get 0.587 mul add
+ color_packet 2 get 0.114 mul add
+ cvi
+ /gray_packet exch def
+ compression 0 eq
+ {
+ /number_pixels 1 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add def
+ } ifelse
+ 0 1 number_pixels 1 sub
+ {
+ pixels exch gray_packet put
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/PseudoClassPacket
+{
+ %
+ % Get a PseudoClass packet.
+ %
+ % Parameters:
+ % index: index into the colormap.
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile byte readhexstring pop 0 get
+ /offset exch 3 mul def
+ /color_packet colormap offset 3 getinterval def
+ compression 0 eq
+ {
+ /number_pixels 3 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add 3 mul def
+ } ifelse
+ 0 3 number_pixels 1 sub
+ {
+ pixels exch color_packet putinterval
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/PseudoClassImage
+{
+ %
+ % Display a PseudoClass image.
+ %
+ % Parameters:
+ % class: 0-PseudoClass or 1-Grayscale.
+ %
+ currentfile buffer readline pop
+ token pop /class exch def pop
+ class 0 gt
+ {
+ currentfile buffer readline pop
+ token pop /depth exch def pop
+ /grays columns 8 add depth sub depth mul 8 idiv string def
+ columns rows depth
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { currentfile grays readhexstring pop } image
+ }
+ {
+ %
+ % Parameters:
+ % colors: number of colors in the colormap.
+ % colormap: red, green, blue color packets.
+ %
+ currentfile buffer readline pop
+ token pop /colors exch def pop
+ /colors colors 3 mul def
+ /colormap colors string def
+ currentfile colormap readhexstring pop pop
+ systemdict /colorimage known
+ {
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { PseudoClassPacket } false 3 colorimage
+ }
+ {
+ %
+ % No colorimage operator; convert to grayscale.
+ %
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { GrayPseudoClassPacket } image
+ } ifelse
+ } ifelse
+} bind def
+
+/DisplayImage
+{
+ %
+ % Display a DirectClass or PseudoClass image.
+ %
+ % Parameters:
+ % x & y translation.
+ % x & y scale.
+ % label pointsize.
+ % image label.
+ % image columns & rows.
+ % class: 0-DirectClass or 1-PseudoClass.
+ % compression: 0-none or 1-RunlengthEncoded.
+ % hex color packets.
+ %
+ gsave
+ /buffer 512 string def
+ /byte 1 string def
+ /color_packet 3 string def
+ /pixels 768 string def
+
+ currentfile buffer readline pop
+ token pop /x exch def
+ token pop /y exch def pop
+ x y translate
+ currentfile buffer readline pop
+ token pop /x exch def
+ token pop /y exch def pop
+ currentfile buffer readline pop
+ token pop /pointsize exch def pop
+ /Times-Roman findfont pointsize scalefont setfont
+ x y scale
+ currentfile buffer readline pop
+ token pop /columns exch def
+ token pop /rows exch def pop
+ currentfile buffer readline pop
+ token pop /class exch def pop
+ currentfile buffer readline pop
+ token pop /compression exch def pop
+ class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
+ grestore
+} bind def
+%%EndProlog
+%%Page: 1 1
+%%PageBoundingBox: 0 0 400 200
+userdict begin
+DisplayImage
+0 0
+400 200
+12.000000
+400 200
+0
+0
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffE6E6E68A8A8Affffff9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9Effffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff9E9E9Effffff969696969696626262323232
+363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff
+363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff
+363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff
+363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff
+363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff
+363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff
+363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff
+363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff
+363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff
+363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff
+363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff
+363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff
+363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff
+363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff
+363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff
+363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff
+363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff
+363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff
+3636363636367272729696969696969E9E9E9E9E9Effffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff9E9E9E9696966E6E6B363636ffffff363636363636
+323232363636363636323232626262828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282666666323232363636363636323232363636363636ffffff
+3636366E6E6B9E9E9E9E9E9Effffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff9E9E9Effffff6E6E6B363636ffffff363636363636323232
+3636366262628282828282828282828282828282828A8A8ABEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE868686828282828282
+828282828282828282666666363636323232363636363636ffffff3636367272729E9E9E
+9E9E9Effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff6E6E6Bffffff363636363636323232363636
+6262628282828282828282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A828282828282828282
+666666363636323232363636363636ffffff727272ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff9E9E9E6E6E6B363636ffffff363636363636
+6666668282828282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECEBEBEBE8A8A8A828282828282666666363636363636ffffff
+3636367272729E9E9Effffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff9E9E9E727272363636363636323232
+3636366262628282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+BEBEBE8A8A8A8282826666663636363232323636363636367676769E9E9Effffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff727272ffffff363636
+3636363232326666668282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A828282666666323232
+363636363636ffffff767676ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6E6E6B
+ffffff3636363636366666668282828A8A8ABEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE868686828282666666363636363636ffffff767676ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff6E6E6Bffffff3636363636366666668A8A8ABEBEBECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A666666
+363636363636ffffff767676ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff6E6E6Bffffff3636363636366666668A8A8ABEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECEBEBEBE8A8A8A666666363636363636ffffff767676ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff6E6E6Bffffff3636363636366666668A8A8ABEBEBE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A666666
+363636363636ffffff767676ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff727272ffffff363636363636666666
+8A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECEBEBEBE8A8A8A666666363636363636ffffff767676ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff767676ffffff363636
+3636366666668A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A666666
+363636363636ffffff7A7A7Affffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+6E6E6B3636363636366666668A8A8ABEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECEBEBEBE8A8A8A666666363636363636767676ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff7A7A7A3636363636363232326A6A69BEBEBECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69323232
+3636363636367E7E7Effffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff6E6E6B3636363232326666668A8A8ABEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE868686666666323232363636727272ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff7676763636363232323636366A6A69
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69363636323232
+3A3A3A7A7A7Affffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6E6E6Bffffff
+3636366262628A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECEBEBEBE8A8A8A666666363636ffffff767676ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+7A7A7Affffff3636363636366A6A69BEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69363636363636ffffff
+7A7A7Affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff7A7A7A3636363636366666668A8A8ABEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+BEBEBE8A8A8A6666663636363636367E7E7Effffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff7676763636363232326A6A69BEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECEBEBEBE6A6A693232323636367A7A7Affffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff6E6E6Bffffff363636
+6A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+6A6A69363636ffffff767676ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7A7A7A
+ffffff3636363636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECEBEBEBE6A6A69363636363636ffffff7A7A7Affffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff7E7E7E3636363636366666668A8A8ABEBEBECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A666666
+3636363636367E7E7Effffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff7A7A7A3636363232326A6A69BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECEBEBEBE6A6A693232323636367A7A7Affffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff7A7A7A3232323636366A6A69
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69363636323232
+7A7A7Affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7E7E7E
+3636363636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECEBEBEBE6A6A693636363636367E7E7Effffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff7A7A7A3636363232326A6A69BEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECEBEBEBE7676768282828282828282828F8F628F8F628A8A5E
+8F8F628F8F628A8A5E8282828282828282828A8A8ABEBEBECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+8686868282828282828282768F8F628F8F62BEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6E6E6B7E7E7E
+8282828282828A8A6E8F8F628A8A8ABEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECEBEBEBE6A6A693232323636367A7A7Affffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff7A7A7A3232323636366A6A69BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE8686868282825E5E5E3232323636323A3A32
+3232323A3A323A3A323232323A3A323A3A323232323A3A323A3A32323232363636666656
+8282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A828282
+8282828282828A8A5E6A6A4C3232323636323A3A323232323A3A323636368A8A8ACECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A828282828282828282
+86866A5A5A353232323636323A3A323232323A3A32363632323232868686CECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+6A6A693636363232327A7A7Affffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff7E7E7E3636363636366A6A69
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE868686666656323232363632
+36363232323271712C9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A
+9E9E1A7676223636323232323636363636366A6A69BEBEBECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECEBEBEBE868686828282828282828282828282
+8F8F626A6A4C3636323232323A3A323A3A323232323A3A323636327676229E9E1A9A9A1A
+71712C323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE8A8A8A8282828282828282828A8A6E6A6A4C
+3636363232323A3A323A3A3232323236363236363271712C9E9E1A9A9A1A96961A54543F
+363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECEBEBEBE6A6A693636363636367E7E7Effffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+3636363232326A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE868686666656
+3232323636323636327676229E9E1AA6A616EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06AAAA169A9A1A767622323232363636626262
+8A8A8ABEBEBEBEBEBE8686868282828282828282828282828282828A8A5E6A6A4C323232
+3636323A3A323232323A3A323A3A323232323A3A3271712C9E9E1A9E9E1A9A9A1A9E9E1A
+AAAA16EEEE06FEFE02EEEE066E6E3A363636828282CECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECEBEBEBE8A8A8A82828282828282828282828286866A8F8F626E6E44363632363632
+3232323A3A323A3A323232323A3A3271712C9E9E1A9E9E1A9A9A1A9E9E1AAAAA16EEEE06
+FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69323232
+363636ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff6E6E6B363636666666BEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+868686666656323232363632363632767622AAAA16EEEE06FEFE02FEFE02FEFE02FEFE02
+EEEE06AAAA169E9E1A9A9A1A9E9E1A9E9E1AA2A216EEEE06FEFE02FEFE02FEFE02FEFE02
+EEEE067A7A223636323232323636366A6A4C6A6A4C3232323636323636323232323A3A32
+3A3A323232323A3A323636327676229E9E1A9A9A1A9E9E1A9E9E1A9A9A1AAAAA16EEEE06
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+BEBEBE8A8A8A86867A8A8A5E8F8F626E6E443636323636323232323A3A323A3A32323232
+3A3A323636323232327676229A9A1A9E9E1A9E9E1A9A9A1AAAAA16EEEE06FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE666666363636767676ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff767676363636323232868686CECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE6A6A69323232363632363632767622AAAA16EEEE06FEFE02FEFE02
+FEFE02FEFE02FEFE02EEEE067A7A2B363636363636323232363636363636323232A6A616
+FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06AAAA167676223636323232323A3A32363632
+7676229E9E1A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1AAAAA16EEEE06FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A
+363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE8A8A8A3A3A323636323232323A3A32363632323232767622
+9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1AA6A616EEEE06FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999932363636
+828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE8A8A8A3232323636367A7A7Affffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff767676ffffff363636
+6A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE6E6E6B363632363632767622AAAA16EEEE06
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0676762B363636323232666666828282
+8282826262623636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06
+AAAA169A9A1A9E9E1AAAAA16EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02999932363636828282CECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE82828232323271712C9A9A1A
+9E9E1A9E9E1AA6A616EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02EEEE066E6E44323232828282CECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+6A6A693636363232327A7A7Affffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+7E7E7E3636363636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69363632323232
+7A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0676762B323232
+3636366A6A69BEBEBECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44323232828282CECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECEBEBEBE6A6A693636363636367E7E7Effffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff3636363232326A6A69BEBEBECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+6A6A693232323636327A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+EEEE067A7A2B3636363636366A6A69BEBEBECECECECECECEBEBEBE6A6A4C3232329A9A1A
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06A6A616
+AAAA16EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16363636
+3636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE82828236363271712C9E9E1A9A9A1A9E9E1A9E9E1AA2A216
+EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69323232
+363636ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff727272363636666666BEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE6E6E6B3636323636327E7E22EEEE06FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02EEEE0676762B3636363232326A6A69BEBEBECECECECECECEBEBEBE
+6E6E6B363632363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE029E9E1A32323236363671712CAAAA16EEEE06FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE868686323232363636363636
+32323236363636363632323271712CA2A216EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+EEEE066E6E3A363636828282CECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE666666363636767676ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff767676363636
+323232868686CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE6A6A693636323232327A7A22EEEE06FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A2A2163232323636366A6A69BEBEBE
+CECECECECECECECECE8A8A8A3636363232327A7A22EEEE06FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029999323636363636363232323636327A7A22
+EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A363636828282CECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+BEBEBE8A8A8A8282828282828282828282826666663636363636363232327A7A22EEEE06
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE8A8A8A3232323636367A7A7Affffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff3636366A6A69BEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69323232363632
+7A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0671712C
+363636666666BEBEBECECECECECECECECECECECECE8282823A3A32767622EEEE06FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636
+6262626262623636363232327A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A2A216323232363636
+8A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A
+6666663636363A3A32AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+6A6A69363636ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff6E6E6B363636666666BEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+8A8A8A3636323636327E7E22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECECECECE828282
+3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE029A9A1A323232828282BEBEBE6A6A693636363A3A32AAAA16FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECEBEBEBE6666663232329A9A1AFEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+9E9E1A363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECEBEBEBE666666363636767676ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff767676ffffff3636368A8A8A
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECEBEBEBE6A6A4C323232767622EEEE06FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0671712C363636666666BEBEBECECECECECECE
+CECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636828282CECECEBEBEBE54543F
+3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02999926363636828282CECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8282823636329E9E1A
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02EEEE066E6E3A323232828282CECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363636ffffff
+7A7A7Affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+3636363636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECEBEBEBE6E6E54363632363632AAAA16FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A2A216323232363636
+8A8A8ACECECECECECECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999932363636
+828282CECECE8A8A8A363636363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A323232828282
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE8282823636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECEBEBEBE6A6A69363636363636ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff6E6E6B323232666666BEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69363632
+3232327A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+EEEE0671712C363636666666BEBEBECECECECECECECECECECECECECECECECECECE828282
+32323271712CEEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02EEEE066E6E44323232828282CECECE828282323232767622EEEE06FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+AAAA163636363636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE767676
+8282828282828282828282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE8282823232329A9A1AFEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A
+323232626262BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECEBEBEBE626262ffffff767676ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff7A7A7A3636363636368A8A8ACECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE8A8A8A3232323636327A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECE
+CECECECECECECECECE8A8A8A3636363A3A32AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECE8282823A3A32
+9E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECE7676763232323636323636323232323636323636368A8A8ACECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A329E9E1A
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02999926363636828282CECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A
+3636363636367E7E7Effffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff363636323232
+6A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECEBEBEBE666656363632767622EEEE06FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE66666632323271712CEEEE06
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44323232626262
+BEBEBECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999932363636828282CECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE6A6A4C32323271712C9E9E1A9A9A1A71712C
+323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0673733A363636828282CECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECEBEBEBE6A6A69323232363636ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff727272363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A323232363632AAAA16
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06
+71712C363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE
+8A8A8A3636363636327E7E22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06AAAA16
+73733A3636363636368A8A8ACECECEBEBEBE6A6A4C3232329A9A1AFEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06
+6E6E44363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6E6E6B363632363632
+AAAA16FEFE02FEFE029E9E1A363636828282CECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECEBEBEBE6666563232329A9A1AFEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16363636
+3232328A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE666666363636767676
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff363636323232868686CECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+666656363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02AAAA163636363232328A8A8ACECECECECECECECECECECECECECECE
+CECECECECECECECECECECECEBEBEBE6A6A693232323636367676229E9E1AAAAA16DEDE0A
+A6A6169E9E1A76762B3636363636363232326A6A69BEBEBECECECE8A8A8A363636363632
+AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02AAAA163636363232328A8A8ACECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+6A6A693636323232327A7A22EEEE06FEFE02FEFE02999926363636828282CECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363636363632AAAA16
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE8A8A8A323232363636ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff727272363636666666BEBEBE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8A8A8A323232363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69363636
+3232323636363636325A5A35323232363636363636323232666666868686BEBEBECECECE
+CECECE828282323232767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8A8A8A3232323636327A7A22EEEE06FEFE02FEFE02EEEE066E6E44
+323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+828282323232767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999932323232828282CECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE666666363636767676ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+363636323232868686CECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECEBEBEBE666656363632767622EEEE06FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A
+323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE8A8A8A828282666666323232363636363636666666828282868686
+BEBEBECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A
+323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C363632767622EEEE06FEFE02
+FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636
+828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A323232
+363636ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff727272363636666666BEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A323232
+363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A828282
+8A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECE8A8A6E3A3A329E9E1A
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69323232
+363632AAAA16FEFE02FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE666666363636767676ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff363636323232868686CECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECE828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+BEBEBE6A6A4C3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+BEBEBE6E6E6B3636323636327E7E22EEEE06FEFE02FEFE02FEFE02EEEE0671712C363636
+828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A
+363632323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE8A8A8A323232363636ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff727272363636
+666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE6E6E443636329E9E1AFEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999926363636
+828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE8A8A8A363632363632AAAA16FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999926363636
+828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECEBEBEBE6A6A693636323232327A7A22EEEE06FEFE02FEFE02FEFE02
+FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8282823A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0673733A363636828282
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+666666363636767676ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff363636323232868686CECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363632323232
+A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02EEEE066E6E44363636828282CECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE828282323232767622EEEE06
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02EEEE066E6E44363636828282CECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECEBEBEBE6A6A693232323636327A7A22EEEE06
+FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE8282763232329A9A1AFEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+AAAA163636363232328A8A8ACECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE8A8A8A323232363636ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff727272363636666666BEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+BEBEBE6A6A56363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363232328A8A8ACECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+8A8A6E3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363232328A8A8ACECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69363632
+3636327E7E22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636828282
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C
+3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE666666363636767676
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff363636323232868686
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE8A8A8A363636323232A2A216FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECEBEBEBE6E6E443636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+BEBEBE6A6A693636323232327A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+EEEE066E6E3A323232828282CECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECE8A8A8A323232363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232828282CECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE8A8A8A323232363636ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+767676363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A32767622EEEE06
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02999932323232828282CECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE8A8A8A363632323232A2A216FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+EEEE066E6E3A323232828282CECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECEBEBEBE6A6A693232323636327A7A22EEEE06FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECE828282363632767622EEEE06FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06
+6E6E3A363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE666666363636767676ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff363636323232868686CECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+6666563232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636828282CECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282
+3A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECEBEBEBE6A6A693636323636327E7E22EEEE06
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262BEBEBE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A56363632
+9E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A323232
+363636ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff9E9E9E363636666666BEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8A8A8A363636363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8A
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE6A6A4C3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262BEBEBE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69363632
+3232327A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+999926363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE8A8A8A363636323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE6666663636369E9E9Effffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6E6E6B
+323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE828282323232767622EEEE06FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+9E9E1A363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECE8A8A8A363636363632AAAA16FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+999926363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+8686866666563232323636327A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02EEEE0673733A363636828282CECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE8282823A3A32767622EEEE06FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999926
+363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE828282ffffff767676ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff3636363636368A8A8ACECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE666656
+3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02999932363636828282CECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282323232
+767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02EEEE0673733A363636828282CECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE6A6A693232323636323636327E7E22EEEE06FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363232328A8A8ACECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8282763232329A9A1A
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02EEEE066E6E3A323232828282CECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A
+363636363636ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff666666BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECE8A8A8A323232363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44323232828282CECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECE86867A3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363232328A8A8ACECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECEBEBEBE8A8A8A666656363632363632767622AAAA16EEEE06
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A
+363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+BEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECEBEBEBE626262ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6E6E6B363636
+828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECE828282363632767622EEEE06FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16
+3636363636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A
+363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69363636363632323232
+7A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02999932323232828282CECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE8A8A8A323232363632AAAA16FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232
+626262BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE828282363636767676ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff3636368A8A8ACECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE86867A3A3A32
+9E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363632323232
+A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02999932323232828282CECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A6A6A4C
+363632323232767622A6A616EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636828282CECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE828282363632767622EEEE06
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02999932363636828282CECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+8A8A8A363636ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff9E9E9E363636666666BEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECEBEBEBE6A6A4C3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999932363636828282CECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE8282823A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636828282CECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+8A8A8A6666563636323232323A3A327A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A2A216323232
+3636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+8A8A6E3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636828282CECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECEBEBEBE6666663636369E9E9Effffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff727272363636828282
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A828282828282828282828282
+828282828282828282828282828282666666363632363632AAAA16FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02939343
+363636626262828282828282828282828282828282828282828282828282828282828282
+8282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE86866A3232329A9A1AFEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A2A216323232
+3636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+BEBEBE8A8A8A8282826A6A4C3636323232323A3A3271712CAAAA16EEEE06FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE029E9E1A36363654543F7E7E7E828282828282828282828282828282828282
+8282828282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECEBEBEBE6A6A4C3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16363636323232
+8A8A8ACECECECECECECECECECECECECECECEBEBEBE8A8A8A828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+8282828282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE828282363636767676
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff363636323232868686CECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A3A3A32
+3636323232323A3A323A3A323232323A3A323A3A323232323A3A323636323232327A7A22
+EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02A6A6163232323636323A3A323232323A3A323A3A323232323A3A32
+3A3A323232323A3A323A3A323232323636368A8A8ACECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1A
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECEBEBEBE6E6E6B3636363636323232323A3A3271712CAAAA16EEEE06
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163A3A323232323A3A323A3A32323232
+3A3A323A3A323232323A3A323A3A323232323636368A8A8ACECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE8A8A8A363632363632AAAA16FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECE9393433A3A32
+3636323232323A3A323A3A323232323A3A323A3A323232323A3A323A3A323232323A3A32
+3A3A323232323A3A323A3A323232323A3A323A3A323232323A3A323A3A323232323A3A32
+3A3A323232323A3A323A3A323232323636323636368A8A8ACECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE8A8A8A323232363636ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff9E9E9E363636666666BEBEBECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECE82827632323271712C9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A
+9E9E1A9E9E1AA6A616EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06A2A2169E9E1A9E9E1A9A9A1A
+9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A6E6E3A363636828282CECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+8A8A8A323232363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0673733A363636828282CECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE8A8A8A3636323232327676229A9A1A
+AAAA16EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06AAAA16
+9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A6A6A3A363636828282
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282
+323232767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02EEEE0671712C323232828282CECECECECECECECECECECECE
+CECECECECECE8A8A5E32323271712C9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A
+9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A
+9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A6A6A3A323232828282
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE6666663636369E9E9Effffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff969696323232828282CECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06
+6E6E3A323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16363636323232
+8A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282
+3A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02939343323232828282CECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8A
+CECECECECECECECECECECECECECECECECECE8F8F623A3A329E9E1AFEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+EEEE066E6E3A363636828282CECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+6E6E6B363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A323232363632
+AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8282823232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02939343363636828282CECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECE8A8A8A323232363632AAAA16FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+9A9A1A323232626262BEBEBECECECECECECECECECECECECECECECECECECE8A8A6E363632
+6E6E3A9E9E1A9A9A1A9E9E1AAAAA16EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02EEEE06AAAA169A9A1A7676223232323636368A8A8ACECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECE828282363636767676ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff3636368A8A8ACECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A
+363632323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE0296961A323232828282CECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02939343363636828282
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282363632
+767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE029E9E1A363636828282CECECECECECECECECECECECECECECE
+CECECECECECE868686323232363636363636323232363636363636767622AAAA16EEEE06
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02EEEE06AAAA169999266E6E443636363232323636363636366A6A69BEBEBE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECE8A8A8A363636ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff9E9E9E363636666666BEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE82828236363271712C9E9E1A9A9A1A9E9E1A9E9E1A
+9A9A1A9E9E1A9E9E1A9A9A1AAAAA16EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06A6A616
+9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A71712C
+363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8282823A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636828282
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282
+36363271712C9E9E1A9A9A1A9E9E1A9E9E1A9A9A1AAAAA16EEEE06FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02EEEE06AAAA169A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A
+9A9A1A6A6A3A323232828282CECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECE86867A3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0673733A363636828282CECECE
+CECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A828282828282828282666666
+3232323636363A3A32AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02EEEE06AAAA166E6E44363636363636323232363636666666
+8282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69
+3636369E9E9Effffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9E9E9E
+363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE868686323232363636
+3636363232323636363636363232323636363636363232323636367A7A22EEEE06FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02EEEE06727242323232363636363636323232363636363636323232363636363636
+3232323636363636363232323636368A8A8ACECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE86866A3232329A9A1AFEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+A2A2163232323636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE868686323232363636363636323232363636363636323232363636
+AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02EEEE06727242363636323232363636363636323232363636
+3636363232323636363636363232323636363636368A8A8ACECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE6A6A4C3232329A9A1AFEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16
+3636363232328A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECEBEBEBE8A8A8A5E5E5E3232329A9A1AFEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06AAAA1673733A363636363636323232
+6666668282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8282823A3A3A9E9E9Effffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff969696323232828282CECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECEBEBEBE8A8A8A8282828282828282828282828282828282828282828282825E5E5E
+363636323232A6A616FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16363636363636666666828282828282828282
+8282828282828282828282828282828282828282828282828A8A8ABEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C
+3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A828282828282828282
+8282828282825E5E5E3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A2A216323232363636666666
+8282828282828282828282828282828282828282828282828282828282828A8A8ABEBEBE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363632363632
+AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8282823636329E9E1A
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE067A7A2B363636
+363636323232666666868686BEBEBECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE828282ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff6E6E6B363636828282CECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE868686363632363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE0296961A323232626262
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECE8A8A8A323232363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0671712C363636828282CECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECE8282823232329A9A1AFEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06
+71712C363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE828282323232767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE0296961A323232828282CECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06
+AAAA166E6E3A363636323232666666868686BEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282
+363636767676ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+3636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE828282323232767622EEEE06FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+EEEE066E6E3A363636828282CECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECE828282363632767622EEEE06FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16
+3636363232328A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE666656363632
+9E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE8A8A6E3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A
+363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECEBEBEBE6666563232329A9A1AFEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02EEEE067A7A223636363232323636366A6A69BEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8A8A8A363636ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff9E9E9E363636666666BEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE86867A
+3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C363632
+9E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE8A8A8A323232363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6E6E443636329E9E1A
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69363632363632AAAA16
+FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0676762B3232323636366666668A8A8ABEBEBE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A693636369E9E9Effffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff9E9E9E363636828282CECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE8A8A8A363632323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE0296961A323232828282CECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE828282363632767622EEEE06FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999926
+363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+8A8A8A363632323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A
+3636363232327A7A22EEEE06FEFE02FEFE02FEFE02FEFE02EEEE0676762B363636363636
+6A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+8686863A3A3A9E9E9Effffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff969696323232
+828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECE8A8A8A363632323232A2A216FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+9E9E1A363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE8282823A3A32767622EEEE06FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A
+363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE86867A3A3A329E9E1A
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02EEEE066E6E3A323232828282CECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE8282823A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999932363636
+828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE6A6A4C363632767622EEEE06FEFE02FEFE02FEFE02EEEE06AAAA16
+6E6E443636363232326A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE828282ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff969696363636828282CECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A32
+767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02999932323232828282CECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE86866A3232329A9A1A
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+BEBEBE6A6A4C3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C3232329A9A1AFEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02EEEE066E6E44323232828282CECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE6E6E54363632323232A2A216FEFE02FEFE02
+FEFE02EEEE067A7A223636363232323636366A6A69BEBEBECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE8282823636369E9E9Effffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff969696363636828282CECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECE8282823232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A363636828282CECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+BEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE8A8A8A363632363632AAAA16FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232
+626262BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A
+363636363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69323232363632
+7A7A22EEEE06FEFE02FEFE02EEEE0676762B3232323636366666668A8A8ABEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+8282823636369E9E9Effffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6A6A69323232
+828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A2A216
+3232323636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE8A8A8A323232363632AAAA16FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999932363636
+828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE828282323232767622EEEE06
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02999932363636828282CECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE828282323232767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+6E6E6B3636323636327E7E22EEEE06FEFE02FEFE02EEEE067A7A2B3636363636366A6A69
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE828282ffffff767676ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff3636363636368A8A8ACECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A323232363632
+AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE828282363632767622EEEE06
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02EEEE066E6E44323232828282CECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+8A8A6E3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636828282CECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE86867A3A3A329E9E1AFEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+EEEE0671712C363636828282CECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE6E6E543636323232327A7A22EEEE06FEFE02FEFE02EEEE0676762B
+3636363232326A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363636363636ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff666666BEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636828282CECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECEBEBEBE6E6E443636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16363636323232
+8A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6E6E44
+3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE6E6E543232323636327A7A22EEEE06FEFE02
+FEFE02EEEE0676762B3232323636366A6A69BEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+BEBEBE6A6A69ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff9E9E9E363636828282
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999932
+323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8A8A8A363632323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE8A8A8A363632323232A2A216FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECE8A8A8A363632323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A6A6A4C363632363632
+7E7E22EEEE06FEFE02EEEE06AAAA1673733A3636363636366A6A69BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE8A8A8A3A3A3A9E9E9Effffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff9E9E9E363636828282CECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE86866A3232329A9A1A
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02EEEE066E6E44363636828282CECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE8282823A3A32767622EEEE06FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+EEEE066E6E3A363636828282CECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282
+3A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A323232828282CECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECE8282823A3A32767622EEEE06FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+9E9E1A363636828282CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69
+3636363636323232327A7A22EEEE06FEFE02EEEE067E7E223636363636363232326A6A69
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A3A3A3A9E9E9E
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff828282CECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+BEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE86866A
+3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE6A6A4C3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8A
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE666656323232
+9A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02EEEE066E6E3A323232828282CECECECECECECECECECECECECECECE
+CECECEBEBEBE6A6A69363632323232767622A6A616EEEE06FEFE02EEEE067A7A22363636
+323232666666868686BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE828282ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff9E9E9E363636828282
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE8A8A8A323232363632AAAA16FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636
+666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECE8A8A8A363632363632AAAA16FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+9A9A1A323232626262BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE8A8A8A363636363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECE
+CECECECECECECECECECECECEBEBEBE6A6A693232323636327A7A22EEEE06FEFE02FEFE02
+EEEE0676762B3232323636366A6A69BEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE8686863A3A3A9E9E9Effffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff9E9E9E363636828282CECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE828282363632767622EEEE06
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE029E9E1A363636828282CECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECE8A8A8A323232363632AAAA16FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+999926363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282323232
+767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02999926363636828282CECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE828282323232767622EEEE06FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A
+323232626262BEBEBECECECECECECECECECECECECEBEBEBE6E6E6B3636323636327E7E22
+EEEE06FEFE02FEFE02EEEE067A7A2B3636363636366A6A69BEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8686863A3A3A9E9E9E
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff828282CECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+86867A3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A323232828282CECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282363632
+767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02EEEE066E6E44323232828282CECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECE8A8A6E3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0673733A363636828282CECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A329E9E1A
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02999926363636828282CECECECECECECECECECECECEBEBEBE6E6E54
+3636323232327A7A22EEEE06FEFE02FEFE02FEFE02AAAA163636363232326A6A69BEBEBE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE828282ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff9E9E9E363636828282
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECEBEBEBE6A6A4C3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16363636363636
+8A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE6E6E443636329E9E1AFEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16
+3636363232328A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+BEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0673733A363636828282CECECECECECE
+BEBEBE8686866A6A4C3232323636327A7A22EEEE06FEFE02FEFE02FEFE02FEFE029E9E1A
+363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE8282823A3A3A9E9E9Effffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff9E9E9E363636828282CECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE8A8A8A363636363632AAAA16FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE029A9A1A323232626262BEBEBECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE8A8A8A363636323232A2A216FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A
+323232626262BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363632323232
+A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE8A8A8A363632323232A2A216FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16363636
+3232328A8A8ACECECEBEBEBE6A6A693232323636323636327E7E22EEEE06FEFE02FEFE02
+FEFE02FEFE02FEFE029A9A1A323232666666BEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A3A9E9E9E
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff828282CECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282
+323232767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636828282CECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A32767622
+EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02EEEE0671712C363636828282CECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE8282823A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A323232828282CECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A32767622EEEE06
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE029E9E1A363636666666BEBEBEBEBEBE6E6E6B363632363632767622AAAA16
+EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636323636368A8A8ACECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE828282ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff9E9E9E363636828282
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999932363636828282
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE8282763232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECEBEBEBE6A6A4C3232329A9A1AFEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16363636
+3636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+8282763232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE0296961A323232828282BEBEBE6E6E54363632
+3232327A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06
+71712C323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE8686863A3A3A9E9E9Effffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff9E9E9E363636828282CECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE8A8A6E3A3A329E9E1AFEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+EEEE066E6E3A323232828282CECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636
+666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363636363632AAAA16
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636
+5E5E5E6A6A4C3232323636327A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE029E9E1A363636828282CECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8686863A3A3A9E9E9E
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff828282CECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C
+3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A323232363632AAAA16
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02999926363636828282CECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+828282323232767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999926363636828282CECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE8A8A8A323232363632AAAA16FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02A2A2163232323636363232323636323636327E7E22EEEE06FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636828282CECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE828282ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff9E9E9E363636828282
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECE8A8A8A363632363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262BEBEBE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A323232828282CECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE86867A3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636
+828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282
+363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636363632363632767622AAAA16EEEE06
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+9A9A1A323232666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE8A8A8A3A3A3A9E9E9Effffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff9E9E9E363636828282CECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECE828282323232767622EEEE06FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+9E9E1A363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16363636363636
+8A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE6E6E443636329E9E1AFEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02AAAA163636363232328A8A8ACECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16363632323232
+7A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02AAAA163636323636368A8A8ACECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A3A3A3A9E9E9E
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff828282CECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE86867A3A3A32
+9E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02939343363636828282CECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE8A8A8A363636323232A2A216FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE029A9A1A323232626262BEBEBECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A
+363632323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECE8A8A8A363636323232A2A216FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02EEEE06AAAA16A6A616EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0671712C323232828282
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE8A8A8Affffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff9E9E9E363636666666
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44323232828282CECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282
+3A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02999932363636828282CECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8282823A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A323232828282
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A32
+767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE029E9E1A363636828282CECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECEBEBEBE6A6A693A3A3A9E9E9Effffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff3636363232328A8A8ACECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE8A8A8A363632323232A2A216FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16
+3636363636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8282763232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636828282
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C3232329A9A1AFEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+AAAA163636363636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECE8282763232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+EEEE06A6A616AAAA16EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636828282CECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE868686323232363636ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff727272363636828282CECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A32767622
+EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+AAAA163636363232328A8A8ACECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363636
+363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02EEEE06A6A61671712C323232363632AAAA16FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232666666
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+828282363636767676ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff969696363636
+828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE8282823232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999926363636828282CECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A323232
+363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECE828282323232767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999926363636828282CECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A323232363632
+AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02EEEE067A7A223232323636363636363636329E9E1A
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02AAAA163636323636368A8A8ACECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE8282823636369E9E9Effffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff969696323232828282CECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE8F8F623A3A329E9E1AFEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0673733A
+363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECE828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A323232828282CECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECE86867A3A3A329E9E1AFEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06
+6E6E44363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE067A7A2B363636363636
+6666666262623232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0671712C323232828282CECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE828282ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff9E9E9E363636828282CECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6E6E443636329E9E1A
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02AAAA163636363232328A8A8ACECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16
+3636363636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C363632
+9E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02AAAA163636363232328A8A8ACECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE8A8A6E3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06
+7272423636363232326A6A69BEBEBE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636
+828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+8686863A3A3A9E9E9Effffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9E9E9E363636
+828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+8A8A8A363632323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363636323232
+A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE8A8A8A363632323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C3232329A9A1A
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02EEEE067272423232323636366A6A69BEBEBECECECE828282363632767622
+EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE8A8A8A3A3A3A9E9E9Effffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff626262BEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE8282823A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232
+828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE8282823A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999926363636828282CECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE8282823A3A32767622EEEE06FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A
+323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+8A8A8A363632363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636366A6A69BEBEBECECECE
+CECECE868686323232363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A6A6163232323636368A8A8ACECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff3636363636368A8A8ACECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE8282763232329A9A1AFEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02EEEE066E6E3A363636828282CECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE8282823232329A9A1AFEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44
+363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6666563232329A9A1A
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE828282323232767622EEEE06FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232
+626262BEBEBECECECECECECECECECEBEBEBE6666563A3A329E9E1AFEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0671712C
+363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A
+3636363A3A3Affffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6E6E6B
+323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1A
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02AAAA163636363232328A8A8ACECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+8A8A8A363636363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02999932363636828282CECECECECECECECECECECECECECECE828282323232
+9A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE029A9A1A323232828282CECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE828282323232727272ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff9E9E9E363636828282CECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8A8A8A323232363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+8A8A8A323232363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE828282323232767622EEEE06FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999926363636
+828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A
+323232363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636828282CECECECECECECECECE
+CECECECECECE8282823636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636828282CECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE8282823A3A3A9E9E9Effffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff9E9E9E363636828282CECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE828282363632767622EEEE06FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE029E9E1A363636828282CECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999932323232
+828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE86867A3A3A329E9E1AFEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02EEEE066E6E44363636828282CECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16363636323232
+8A8A8ACECECECECECECECECECECECECECECE828282363636767622EEEE06FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A
+363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A
+3A3A3A9E9E9Effffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff626262BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282
+3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02999932323232828282CECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02EEEE066E6E44363636828282CECECECECECECECECECECECECECECECECECECECECE
+CECECEBEBEBE8A8A8A8A8A8ABEBEBECECECECECECECECECECECECECECECECECECEBEBEBE
+6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363232328A8A8ACECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE8686868A8A8ABEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE86867A3A3A329E9E1AFEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECE868686323232
+363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02A6A6163232323636368A8A8ACECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE6A6A69ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff3636363636368A8A8ACECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE6A6A4C3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636828282
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+6A6A4C3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECE
+CECECECECECECECECECECECECECECE8A8A8A3636363636366A6A69BEBEBECECECECECECE
+CECECECECECECECECE8A8A8A363632323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666
+BEBEBECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69323232363636
+6A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C
+3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A323232828282CECECECECECECECECECECECE
+CECECECECECEBEBEBE6666663A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06767622363636828282CECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECE8A8A8A3636363A3A3Affffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff727272323232828282CECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECE8A8A8A363636363632AAAA16FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+A2A2163232323636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8A8A8A363636363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666
+BEBEBECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C323232323232
+3636366262628A8A8ABEBEBECECECECECECECECECE8282823A3A32767622EEEE06FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02999932323232828282CECECECECECECECECECECECECECECECECECECECECECECECE
+8A8A8A3A3A323636323636323232326A6A69BEBEBECECECECECECECECECECECECECECECE
+CECECECECECE8A8A8A363632363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8A
+CECECECECECECECECECECECECECECECECECECECECE8282823232329A9A1AFEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+9A9A1A323232666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282323232
+727272ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+9E9E9E363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282323232
+767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE828282323232767622EEEE06FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+EEEE0673733A363636828282CECECECECECECECECECECECECECECECECECECECECEBEBEBE
+6E6E543636323636325E5E2A3636323232323636368A8A8ACECECECECECECECECE828276
+3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636828282CECECECECECECECECECECECE
+CECECECECECECECECEBEBEBE6A6A4C32323271712C7676223636323636368A8A8ACECECE
+CECECECECECECECECECECECECECECECECECE828282323232767622EEEE06FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+9A9A1A323232626262BEBEBECECECECECECECECECECECECECECECECECECECECECE828282
+363636767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A8F8F628282828A8A8A
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECE8686863A3A3A9E9E9Effffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff9E9E9E363636666666BEBEBECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999932363636828282CECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282
+3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02AAAA163636363232328A8A8ACECECECECECECECECECECECE
+CECECECECECEBEBEBE6A6A693636323232327A7A22D2D20E5A5A353232323636368A8A8A
+CECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8A
+CECECECECECECECECECECECECECECECECECEBEBEBE6E6E6B363632363632AAAA16DEDE0A
+5A5A35323232828282CECECECECECECECECECECECECECECECECECECECECE8A8A6E3A3A32
+9E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE029E9E1A363636828282CECECECECECECECECECECECECECECE
+CECECECECECECECECE8A8A8A363636323232A6A616FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0671712C323232828282
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A
+3A3A323232323A3A323636366A6A69BEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE6E6E6B3636369E9E9Effffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3636368A8A8A
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECE8A8A6E3A3A329E9E1AFEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06
+6E6E44323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8A8A6E3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBE
+CECECECECECECECECECECECECECECECECECE8A8A8A3232323636327A7A22EEEE06AAAA16
+3636363636366A6A69BEBEBECECECECECECE8A8A8A323232363632AAAA16FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+9E9E1A363636666666BEBEBECECECECECECECECECECECECECECECEBEBEBE6A6A69363632
+3232327A7A22DEDE0A7A7A2B3636363636368A8A8ACECECECECECECECECECECECECECECE
+CECECEBEBEBE6E6E443636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0673733A363636828282CECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE6666663636329E9E1AFEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE029E9E1A363636828282CECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE6A6A4C36363271712C71712C3232323636368A8A8ACECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363636ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff727272363636828282CECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C323232
+9A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C3232329A9A1AFEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+9A9A1A323232828282CECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C363632
+767622EEEE06EEEE066E6E44323232626262BEBEBECECECECECECECECECE828282363632
+767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02999932363636828282CECECECECECECECECECECECECECECE
+CECECE8A8A8A3232323636327A7A22EEEE06AAAA163636363232326A6A69BEBEBECECECE
+CECECECECECECECECECECECECECECE8A8A8A363632323232A2A216FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16
+3636363232328A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECE
+828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE6A6A69363632323232A2A2169A9A1A323232
+3636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE868686363636767676ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff626262BEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE8A8A8A363632363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363632
+363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02999932363636828282CECECECECECECECECECECECECECECE
+BEBEBE6A6A69323232363632AAAA16EEEE067A7A2B3636363636368A8A8ACECECECECECE
+CECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44323232828282CECECE
+CECECECECECECECECECECECEBEBEBE6A6A4C363632767622EEEE06EEEE0673733A363636
+666666BEBEBECECECECECECECECECECECECECECECECECECECECECE8282823A3A32767622
+EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE868686323232363632AAAA16FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A6A616323232363636
+8A8A8ACECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A323232363632
+7A7A22DEDE0A71712C363636666666BEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECEBEBEBE6A6A69ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff363636363636
+8A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE828282323232767622EEEE06FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A
+363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECE828282323232767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0673733A363636828282CECECE
+CECECECECECECECECEBEBEBE6A6A693636323636327E7E22DEDE0A7A7A22363636323232
+6A6A69BEBEBECECECECECECECECECECECECE8A8A5E3232329A9A1AFEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16
+3636363636368A8A8ACECECECECECECECECECECECEBEBEBE6A6A69323232363632AAAA16
+EEEE0676762B3636363232328A8A8ACECECECECECECECECECECECECECECECECECECECECE
+BEBEBE6A6A4C3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE0296961A323232828282CECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6666563A3A329E9E1A
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02EEEE06767622363636666666BEBEBECECECECECECECECECECECECECECECECECECE
+BEBEBE6A6A4C363632767622EEEE06A2A2163232323636368A8A8ACECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A3636363A3A3Affffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff727272323232828282CECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A329E9E1A
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16
+3636363232328A8A8ACECECECECECECECECEBEBEBE6A6A693636323232327A7A22EEEE06
+A2A2163232323636366A6A69BEBEBECECECECECECECECECECECECEBEBEBE6A6A4C363632
+9E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECECECECEBEBEBE6E6E6B
+3636323636327E7E22DEDE0A7A7A223232323636366A6A69BEBEBECECECECECECECECECE
+CECECECECECECECECECECECE8A8A8A363636363632AAAA16FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A
+363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE82828232323271712CEEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A6A6163232323636368A8A8ACECECECECECE
+CECECECECECECECECEBEBEBE6A6A69323232363632AAAA16EEEE066E6E3A363636666666
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+828282323232727272ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff9E9E9E363636666666BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+BEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A6E3A3A32
+9E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECEBEBEBE6A6A69323232
+3636327A7A22EEEE06EEEE066E6E3A363636666666BEBEBECECECECECECECECECECECECE
+CECECE8A8A8A323232363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636828282CECECECECECE
+CECECEBEBEBE6A6A693636323232327A7A22EEEE06AAAA163636363636366A6A69BEBEBE
+CECECECECECECECECECECECECECECECECECECECECECECECE828282323232767622EEEE06
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE8A8A8A3636363A3A32AAAA16FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06767622
+363636666666BEBEBECECECECECECECECECEBEBEBE6E6E6B3636323636327E7E22DEDE0A
+7A7A223232323636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECEBEBEBE6A6A693A3A3A9E9E9Effffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff363636
+3232328A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE8A8A8A363636323232A2A216FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999926363636
+828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECE8A8A5E3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232666666BEBEBECECECE
+BEBEBE6A6A693636323636327E7E22EEEE06EEEE0676762B3232323636368A8A8ACECECE
+CECECECECECECECECECECECECECECE828282363632767622EEEE06FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A
+363636666666BEBEBECECECEBEBEBE6A6A693232323636327A7A22EEEE06EEEE066E6E3A
+323232626262BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+86867A3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE666656323232
+9A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02A6A6163232323636366A6A69BEBEBECECECEBEBEBE6A6A69363632
+3232327A7A22EEEE06AAAA163636363636366A6A69BEBEBECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE868686323232363636ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff767676363636828282CECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE828282363632767622EEEE06
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02EEEE066E6E44323232828282CECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16
+3A3A323636366666668282826666563636323232327A7A22EEEE06EEEE067E7E22363636
+3636366A6A69BEBEBECECECECECECECECECECECECECECECECECECE8282823A3A329E9E1A
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02A6A6163232323636366262628282826A6A563636323636327E7E22
+EEEE06EEEE067A7A2B3636363636368A8A8ACECECECECECECECECECECECECECECECECECE
+CECECECECECECECECEBEBEBE6E6E443636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999932363636
+828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECE828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE067A7A22363632323232666656
+86866A6A6A4C3232323636327A7A22EEEE06EEEE0671712C323232626262BEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE868686
+363636767676ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff9E9E9E363636666666BEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+8282823232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A323232363632
+AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02EEEE067A7A223232323636323A3A323232323A3A327A7A22EEEE06
+FEFE02AAAA163636363232326A6A69BEBEBECECECECECECECECECECECECECECECECECECE
+CECECE8282823232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE067A7A223636323232323A3A32
+3636323232327A7A22EEEE06EEEE067A7A223636363232326A6A69BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE8A8A8A363632323232A2A216FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02EEEE066E6E44323232828282CECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECE8A8A8A363636323232A6A616FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+EEEE067E7E223636323636323232323A3A323636327E7E22EEEE06EEEE067E7E22363636
+3636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE6E6E6B3636369E9E9Effffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff3636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE8A8A6E3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06A2A2169E9E1A9E9E1A
+9A9A1AAAAA16EEEE06FEFE02EEEE066E6E44363636666666BEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+EEEE06AAAA169A9A1A9E9E1A9E9E1AA6A616EEEE06EEEE067A7A223232323636366A6A69
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282
+3A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE666666
+363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06AAAA169E9E1A9A9A1A9E9E1AAAAA16EEEE06
+FEFE02AAAA163636363232326A6A69BEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECE8A8A8A363636ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff767676363636666666BEBEBECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+EEEE066E6E3A363636828282CECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE8282823636329E9E1AFEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0676762B3636363232328A8A8A
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A329E9E1A
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE067E7E22
+3636363636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE6666563232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8A8A8A363636323232A6A616FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02EEEE0673733A363636666666BEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69363636
+767676ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3636368A8A8A
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A
+363632323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE82828232323271712C
+EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0676762B
+3232323636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE82828232323271712CEEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02EEEE067A7A223636363232326A6A69BEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECE8A8A8A363636363632AAAA16FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+EEEE066E6E3A363636828282CECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE666666363632767622EEEE06
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0676762B3636363232328A8A8A
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE8A8A8A363636ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff767676363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8282823A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE8A8A8A3636363A3A32AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02EEEE0676762B3636363636366A6A69BEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE8A8A8A3636363A3A32AAAA16FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02EEEE067A7A223232323636366A6A69BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282323232
+767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+8A8A8A363636323232A6A616FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0676762B
+3232323636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECEBEBEBE6A6A69363636767676ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff3636368A8A8ACECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE8282823232329A9A1AFEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06
+73733A363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE66666632323271712CEEEE06FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02EEEE06AAAA166E6E3A3636363232326A6A69BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE666656323232
+9A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE067E7E223636363636366A6A69
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECEBEBEBE666666363632767622EEEE06FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02EEEE067A7A2B3636363636366A6A69BEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363636ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff767676363636
+666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8F8F62
+3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02AAAA163636363232328A8A8ACECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363636
+3A3A32AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE067A7A223636363232323636366A6A69
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECE828282363636767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0676762B
+3636363232326A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+9E9E1A363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363636323232
+7A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02EEEE0676762B3636363232326A6A69BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+6A6A69363636767676ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff3636368A8A8ACECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE6E6E443636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE66666632323271712CEEEE06FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06A6A61671712C323232
+3636366666668A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECE8A8A8A3636363232327A7A22EEEE06FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+EEEE06A6A6166E6E3A3232323636366A6A69BEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363632323232
+A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02EEEE066E6E3A323232828282CECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECEBEBEBE6A6A693636363636327E7E22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06A6A6166E6E3A3232323636366A6A69
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8A8A8A363636ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff767676363636666666BEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECE8A8A8A363632323232A2A216FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0671712C
+323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE8A8A8A363636363632767622AAAA16
+EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06A6A616
+71712C3232323636363636366A6A69BEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69
+363636363632767622AAAA16EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02EEEE06A6A61671712C3232323636363636366A6A69BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE8282823636325A5A3596961A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A
+9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A7676223636363636368A8A8ACECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECEBEBEBE6A6A69323232363632767622AAAA16
+EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06A6A61671712C323232
+3636363636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECEBEBEBE6A6A69363636767676ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff3636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A32
+767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+6A6A693232323636363636327676229E9E1AA2A216EEEE06FEFE02FEFE02EEEE06AAAA16
+9E9E1A9A9A1A71712C3232323636363636366666668A8A8ABEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECEBEBEBE6A6A693232323636363636327676229E9E1AA2A216EEEE06
+FEFE02FEFE02EEEE06AAAA169E9E1A9A9A1A6E6E3A3232323636363636366666668A8A8A
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE868686323232363636363636323232363636363636
+323232363636363636323232363636363636323232363636363636323232363636363636
+3232326A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+6A6A693636363232323636327676229E9E1A9E9E1AA2A216DEDE0AAAAA169E9E1A9A9A1A
+71712C3232323636363636366666668A8A8ABEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363636
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff767676363636666666BEBEBECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECE8282763232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECEBEBEBE8A8A8A6666663232323636363636363232326E6E3A
+93934393934373733A3636363636363232323636363636366666668A8A8ABEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A666666323232
+3636363636363232326E6E3A93934393934373733A363636363636323232363636363636
+6666668A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282868686BEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECEBEBEBE8A8A8A626262363636323232363636363636323232
+5A5A353636363636363232323636363636366666668A8A8ABEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECEBEBEBE6A6A69363636767676ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3636368A8A8A
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A363636
+828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A
+8282826666663636363636363232323636363636363232326666668282828282828A8A8A
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE8A8A8A828282666666363636363636323232363636363636323232
+6666668282828282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A
+8282828282826666663636363636363232326666668282828282828A8A8ABEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE8A8A8A363636ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff767676363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A323232363632
+AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE8A8A8A828282828282828282828282868686
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A828282
+828282828282828282868686BEBEBECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A828282868686BEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6E6E6B363636767676
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff3636366A6A69BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02999926363636666666BEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+6A6A69363636ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7A7A7A363636
+3232328A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636828282
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8686863232323636367A7A7Affffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff767676363636666666BEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C3232329A9A1A
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+AAAA163636363232328A8A8ACECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECEBEBEBE666666363636767676ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff3636363232326A6A69BEBEBE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+8A8A8A363636363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02EEEE0671712C363636666666BEBEBECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69323232
+363636ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+7E7E7E3636363636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECE828282323232767622EEEE06FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363232328A8A8ACECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECE8A8A8A3636363636367E7E7Effffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff767676ffffff626262BEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999926
+363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECEBEBEBE6A6A69323232727272ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff363636363636
+6A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+6A6A563636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02EEEE066E6E44323232828282CECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A693636363A3A3Affffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff7A7A7Affffff3636368A8A8ACECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8A8A8A363636323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A
+363636ffffff7A7A7Affffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff767676363636666666BEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE8282823A3A32767622EEEE06FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44323232
+626262BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE6E6E6B363636767676ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff3636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282
+3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02AAAA163636363636368A8A8ACECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE6E6E6B363636ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff7A7A7A3636363232326A6A69BEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02EEEE066E6E44323232626262BEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69323232363636
+7A7A7Affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff7E7E7E363636363636
+6A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8A
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+6A6A693636363636367E7E7Effffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff7A7A7Affffff3636368A8A8ACECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282
+3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06
+6E6E44323232626262BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8A8A8A363636ffffff7A7A7Affffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff767676363636666666BEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+FEFE02FEFE02EEEE067A7A2B3636363636368A8A8ACECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECEBEBEBE6E6E6B363636767676ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff3636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02
+FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363232326A6A69BEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6E6E6B363636
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff7A7A7A3636363232326A6A69BEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282
+3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0673733A363636
+666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+BEBEBE6E6E6B3232323636367A7A7Affffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff7E7E7E363636363636
+6A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02
+EEEE0676762B3636363232328A8A8ACECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECEBEBEBE7272723636363636367E7E7Effffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff7A7A7A3232323636366A6A69BEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02
+FEFE02FEFE02FEFE02EEEE0676762B3232323636366A6A69BEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECEBEBEBE6E6E6B3636363232327A7A7Affffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff7A7A7A3636363232326A6A69BEBEBE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282
+3232329A9A1AFEFE02FEFE02FEFE02FEFE02EEEE067E7E223636363636366A6A69BEBEBE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6E6E6B323232
+3636367A7A7Affffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+7E7E7E3636363636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02EEEE067A7A22363636
+3232326A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+BEBEBE7272723636363636367E7E7Effffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff7A7A7A3232323636366A6A69BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02
+EEEE067A7A223232323636366A6A69BEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECEBEBEBE6E6E6B3636363232327A7A7Affffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7A7A7A363636
+323232666666868686BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282
+3232329A9A1AFEFE02EEEE067A7A2B3636363636366A6A69BEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE8A8A8A6E6E6B3232323636367A7A7Affffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff7E7E7E3636363636363232326A6A69BEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8282823A3A3296961AAAAA1671712C3636363232326A6A69BEBEBE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69323232363636
+3636367E7E7Effffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff767676363636363636
+6A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECE82828236363254543F363636323232
+3636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+6E6E6B363636363636767676ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff7A7A7A3232323636366A6A69BEBEBECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282
+3232323232323636366666668A8A8ABEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE6E6E6B3636363232327A7A7Affffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff7A7A7A363636323232666666868686
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECE8A8A8A3636363636366A6A69BEBEBECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECEBEBEBE8A8A8A6A6A693232323636367A7A7Affffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+7E7E7E3636363636363232326A6A69BEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A8A8A8ABEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69323232363636363636
+7E7E7Effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff7676763636363636366666668A8A8ABEBEBE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A6A6A69
+363636363636767676ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7A7A7A
+ffffff3636363636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+BEBEBE6A6A69363636363636ffffff7A7A7Affffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff767676ffffff3636366666668A8A8ABEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECEBEBEBE8A8A8A666666363636ffffff767676ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7A7A7A3A3A3A
+3232323636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE6A6A69363636ffffff3636367A7A7Affffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff727272363636323232666666868686BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A6A6A69323232363636
+767676ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff7E7E7E363636363636
+323232666666868686BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A6A6A69
+3232323636363636367E7E7Effffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff767676363636363636323232666666868686BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE
+8A8A8A666666323232363636363636767676ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff767676363636363636
+323232666666868686BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECEBEBEBE8A8A8A666666323232363636363636767676ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff767676363636363636323232666666868686BEBEBECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECEBEBEBE8A8A8A666666323232363636363636767676ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff767676363636363636
+323232666666868686BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECEBEBEBE8A8A8A6A6A69323232363636363636767676
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff7676763636363636363232326666668282828A8A8ABEBEBECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A8282826A6A69323232363636
+363636767676ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff7676763636363A3A3A
+3232323636366666668282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A8282826A6A69363636
+ffffff363636363636767676ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff9E9E9E7272723A3A3Affffff363636363636666666828282868686
+BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A8686866A6A69
+3636363A3A3Affffff3636367676769E9E9Effffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff767676
+ffffff3636363636363232326666668282828282828A8A8ABEBEBECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A828282868686
+6A6A69323232363636363636ffffff767676ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff9E9E9E7676763636363A3A3Affffff363636363636
+6A6A698282828282828282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A8282828282828A8A8A
+6E6E6B3636363A3A3Affffff3636363636367676769E9E9Effffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+9E9E9Effffff767676ffffff3636363A3A3Affffff3636363636366A6A69868686828282
+8282828282828282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE
+CECECECECECECECECECECECEBEBEBE8A8A8A8282828282828282828282828A8A8A6A6A69
+363636363636ffffff3A3A3A363636ffffff767676ffffff9E9E9Effffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff9E9E9E9E9E9Effffff767676
+ffffff3636363A3A3Affffff3636363636363232323636366A6A698A8A8A8A8A8A828282
+868686868686828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+828282828282828282828282828282828282828282828282828282828282828282828282
+8282828686868282828686868686868686868A8A8A8A8A8A6A6A69363636ffffff363636
+3A3A3Affffff3A3A3A363636ffffff767676ffffff9E9E9E9E9E9Effffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff9E9E9E9E9E9Effffff9E9E9E9E9E9E7272723A3A3A
+ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A
+ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A
+ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A
+ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A
+ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A
+ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A
+ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A
+ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A
+ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A
+ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A
+ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A
+ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A
+ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A
+ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A
+ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A
+ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A
+ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A
+ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A
+ffffff3636367676769E9E9E9E9E9Effffff9E9E9E9E9E9Effffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E
+9E9E9Effffff9E9E9E9E9E9Effffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff
+end
+%%PageTrailer
+%%Trailer
+%%EOF
diff --git a/documentation/src_doc/FL200.gif b/documentation/src_doc/FL200.gif
new file mode 100644
index 000000000..9df861dc7
--- /dev/null
+++ b/documentation/src_doc/FL200.gif
Binary files differ
diff --git a/documentation/src_doc/Fl_Check_Button.gif b/documentation/src_doc/Fl_Check_Button.gif
new file mode 100644
index 000000000..bbd6f4ee7
--- /dev/null
+++ b/documentation/src_doc/Fl_Check_Button.gif
Binary files differ
diff --git a/documentation/src_doc/Fl_File_Input.gif b/documentation/src_doc/Fl_File_Input.gif
new file mode 100644
index 000000000..4a1f31deb
--- /dev/null
+++ b/documentation/src_doc/Fl_File_Input.gif
Binary files differ
diff --git a/documentation/src_doc/Fl_Help_Dialog.gif b/documentation/src_doc/Fl_Help_Dialog.gif
new file mode 100644
index 000000000..92b0840c3
--- /dev/null
+++ b/documentation/src_doc/Fl_Help_Dialog.gif
Binary files differ
diff --git a/documentation/src_doc/Fl_Light_Button.gif b/documentation/src_doc/Fl_Light_Button.gif
new file mode 100644
index 000000000..0d380937e
--- /dev/null
+++ b/documentation/src_doc/Fl_Light_Button.gif
Binary files differ
diff --git a/documentation/src_doc/Fl_Return_Button.gif b/documentation/src_doc/Fl_Return_Button.gif
new file mode 100644
index 000000000..349163ca7
--- /dev/null
+++ b/documentation/src_doc/Fl_Return_Button.gif
Binary files differ
diff --git a/documentation/src_doc/Fl_Roller.gif b/documentation/src_doc/Fl_Roller.gif
new file mode 100644
index 000000000..48cd5b189
--- /dev/null
+++ b/documentation/src_doc/Fl_Roller.gif
Binary files differ
diff --git a/documentation/src_doc/Fl_Round_Button.gif b/documentation/src_doc/Fl_Round_Button.gif
new file mode 100644
index 000000000..3acb88876
--- /dev/null
+++ b/documentation/src_doc/Fl_Round_Button.gif
Binary files differ
diff --git a/documentation/src_doc/Fl_Scroll.gif b/documentation/src_doc/Fl_Scroll.gif
new file mode 100644
index 000000000..3055429a0
--- /dev/null
+++ b/documentation/src_doc/Fl_Scroll.gif
Binary files differ
diff --git a/documentation/src_doc/Fl_Tile.gif b/documentation/src_doc/Fl_Tile.gif
new file mode 100644
index 000000000..f14f0b49b
--- /dev/null
+++ b/documentation/src_doc/Fl_Tile.gif
Binary files differ
diff --git a/documentation/src_doc/Fl_Value_Input.gif b/documentation/src_doc/Fl_Value_Input.gif
new file mode 100644
index 000000000..feabbffc1
--- /dev/null
+++ b/documentation/src_doc/Fl_Value_Input.gif
Binary files differ
diff --git a/documentation/src_doc/Fl_Value_Output.gif b/documentation/src_doc/Fl_Value_Output.gif
new file mode 100644
index 000000000..18cf45a39
--- /dev/null
+++ b/documentation/src_doc/Fl_Value_Output.gif
Binary files differ
diff --git a/documentation/src_doc/adjuster1.gif b/documentation/src_doc/adjuster1.gif
new file mode 100644
index 000000000..1f9f5353e
--- /dev/null
+++ b/documentation/src_doc/adjuster1.gif
Binary files differ
diff --git a/documentation/src_doc/advanced.dox b/documentation/src_doc/advanced.dox
new file mode 100644
index 000000000..17afa9147
--- /dev/null
+++ b/documentation/src_doc/advanced.dox
@@ -0,0 +1,113 @@
+/**
+
+ \page advanced 10 - Advanced FLTK
+
+This chapter explains advanced programming and design topics
+that will help you to get the most out of FLTK.
+
+<A NAME="multithreading"> </A> <!-- For old HTML links only ! -->
+\section advanced_multithreading Multithreading
+
+FLTK supports multithreaded application using a locking mechanism
+based on "pthreads". We do not provide a threading interface as part of
+the library. However a simple example how threads can be implemented
+for all supported platforms can be found in <tt>test/threads.h</tt>
+and <tt>test/threads.cxx</tt>.
+
+To use the locking mechanism, FLTK must be compiled with
+<tt>--enable-threads</tt> set during the <tt>configure</tt>
+process. IDE-based versions of FLTK are automatically compiled with
+locking enabled if possible.
+
+In <TT>main()</TT>, call
+<a href="Fl.html#Fl.lock"><TT>Fl::lock()</TT></A> before
+<A HREF="Fl.html#Fl.run"><TT>Fl::run()</TT></A> or
+<A HREF="Fl.html#Fl.wait"><TT>Fl::wait()</TT></A>
+to start the runtime
+multithreading support for your program. All callbacks and derived
+functions like <tt>handle()</tt> and <tt>draw()</tt> will now be properly
+locked:
+
+}
+
+\code
+ int main() {
+ Fl::lock();
+ /* run thread */
+ while (Fl::wait() &gt; 0) {
+ if (Fl::thread_message()) {
+ /* process your data */
+ }
+ }
+ }
+\endcode
+
+You can now start as many threads as you like. From within
+a thread (other than the main thread) FLTK calls must be wrapped
+with calls to <a href="Fl.html#Fl.lock"><tt>Fl::lock()</tt></a>
+and <a href="Fl.html#Fl.unlock"><tt>Fl::unlock()</tt></a>:
+
+\code
+ Fl::lock(); // avoid conflicting calls
+ ... // your code here
+ Fl::unlock(); // allow other threads to access FLTK again
+\endcode
+
+You can send messages from child threads to the main thread
+using <a href="Fl.html#Fl.awake"><tt>Fl::awake(msg)</tt></a>:</p>
+
+\code
+ void *msg; // "msg" is a pointer to your message
+ Fl::awake(msg); // send "msg" to main thread
+\endcode
+
+You can also tell the main thread to call a function for you
+as soon as possible by using
+<a href="Fl.html#Fl.awake"><tt>Fl::awake(callback, userdata)</tt></a>:</p>
+
+\code
+ void do_something(void *userdata) {
+ // running with the main thread
+ }
+
+ // running in another thread
+ void *data; // "data" is a pointer to your user data
+ Fl::awake(do_something, data); // call something in main thread
+\endcode
+
+
+FLTK supports multiple platforms, some of them which do not
+allow any other but the main thread to handle system events and
+open or close windows. The safe thing to do is to adhere to the
+following rules for threads on all operating systems:
+
+
+\li Don't <tt>show()</tt> or <tt>hide()</tt>anything that contains
+ widgets derived from <tt>Fl_Window</tt>, including dialogs, file
+ choosers, subwindows or <tt>Fl_GL_Window</tt>s
+
+\li Don't call <tt>Fl::wait()</tt>, <tt>Fl::flush()</tt> or any
+ related methods that will handle system messages
+
+\li Don't start or cancel timers
+
+\li Don't change window decorations or titles
+
+\li The <tt>make_current()</tt> method may or may not work well for
+ regular windows, but should always work for <tt>Fl_GL_Window</tt>s
+ to allow for high speed rendering on graphics cards with multiple
+ pipelines
+
+See also:
+<a href="Fl.html#Fl.awake">void awake(void *message)</A>,
+<a href="Fl.html#Fl.lock">void lock()</A>,
+<a href="Fl.html#Fl.thread_message">void *thread_message()</A>,
+<a href="Fl.html#Fl.unlock">void unlock()</A>.
+
+\htmlonly
+<hr>
+<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
+<a class="el" href="fluid.html">[Previous]&nbsp; 9 - Programming with FLUID</a>&nbsp;
+<a class="el" href="unicode.html">[Next]&nbsp; 11 - Unicode and utf-8 Support</a>&nbsp;
+\endhtmlonly
+*/
diff --git a/documentation/src_doc/basics.dox b/documentation/src_doc/basics.dox
new file mode 100644
index 000000000..1c2a615c8
--- /dev/null
+++ b/documentation/src_doc/basics.dox
@@ -0,0 +1,352 @@
+/**
+
+ \page basics 2 - FLTK Basics
+
+This chapter teaches you the basics of compiling programs
+that use FLTK.
+
+\section basics_writing Writing Your First FLTK Program
+
+All programs must include the file <tt><FL/Fl.H></tt>.
+In addition the program must include a header file for each
+FLTK class it uses. Listing 1 shows a simple "Hello,
+World!" program that uses FLTK to display the window.
+
+\par Listing 1 - "hello.cxx"
+\code
+#include <FL/Fl.H>
+#include <FL/Fl_Window.H>
+#include <FL/Fl_Box.H>
+
+int main(int argc, char **argv) {
+ Fl_Window *window = new Fl_Window(300,180);
+ Fl_Box *box = new Fl_Box(20,40,260,100,"Hello, World!");
+ box->box(FL_UP_BOX);
+ box->labelsize(36);
+ box->labelfont(FL_BOLD+FL_ITALIC);
+ box->labeltype(FL_SHADOW_LABEL);
+ window->end();
+ window->show(argc, argv);
+ return Fl::run();
+}
+\endcode
+
+<!-- NEED 2in -->
+
+After including the required header files, the program then creates a
+window. All following widgets will automatically be children of this window.
+
+\code
+Fl_Window *window = new Fl_Window(300,180);
+\endcode
+
+Then we create a box with the "Hello, World!" string in it. FLTK automatically
+adds the new box to <tt>window</tt>, the current grouping widget.
+
+\code
+Fl_Box *box = new Fl_Box(20,40,260,100,"Hello, World!");
+\endcode
+
+Next, we set the type of box and the size, font, and style of the label:
+
+\code
+box->box(FL_UP_BOX);
+box->labelsize(36);
+box->labelfont(FL_BOLD+FL_ITALIC);
+box->labeltype(FL_SHADOW_LABEL);
+\endcode
+
+We tell FLTK that we will not add any more widgets to <tt>window</tt>.
+
+\code
+window->end();
+\endcode
+
+Finally, we show the window and enter the FLTK event loop:
+
+\code
+window->show(argc, argv);
+return Fl::run();
+\endcode
+
+The resulting program will display the window in Figure 2-1.
+You can quit the program by closing the window or pressing the
+<KBD>ESC</KBD>ape key.
+
+\image html hello.C.gif "Figure 2-1: The Hello, World! Window"
+
+\subsection basics_creating Creating the Widgets
+
+The widgets are created using the C++ <tt>new</tt> operator. For
+most widgets the arguments to the constructor are:
+
+\code
+Fl_Widget(x, y, width, height, label)
+\endcode
+
+The <tt>x</tt> and <tt>y</tt> parameters determine where the
+widget or window is placed on the screen. In FLTK the top left
+corner of the window or screen is the origin (i.e. x = 0, y =
+0) and the units are in pixels.
+
+The <tt>width</tt> and <tt>height</tt> parameters determine
+the size of the widget or window in pixels. The maximum widget
+size is typically governed by the underlying window system or
+hardware.
+
+<tt>label</tt> is a pointer to a character string to label
+the widget with or <tt>NULL</tt>. If not specified the label
+defaults to <tt>NULL</tt>. The label string must be in static
+storage such as a string constant because FLTK does not make a
+copy of it - it just uses the pointer.
+
+\subsection basics_hierarchies Creating Widget hierarchies
+
+Widgets are commonly ordered into functional groups, which
+in turn may be grouped again, creating a hierarchy of widgets.
+FLTK makes it easy to fill groups by automatically adding all widgets
+that are created between a <tt>myGroup->begin()</tt> and
+<tt>myGroup->end()</tt>. In this example, <tt>myGroup</tt>
+would be the <i>current</i> group.
+
+Newly created groups and their derived widgets implicitly call
+<tt>begin()</tt> in the constructor, effectively adding all
+subsequently created widgets to itself until <tt>end()</tt>
+is called.
+
+Setting the current group to <tt>NULL</tt> will stop automatic
+hierarchies. New widgets can now be added manually using
+<tt>Fl_Group::add(...)</tt> and <tt>Fl_Group::insert(...)</tt>.
+
+\subsection basics_getset Get/Set Methods
+
+<tt>box->box(FL_UP_BOX)</tt> sets the type of box the
+Fl_Box draws, changing it from the default of
+<tt>FL_NO_BOX</tt>, which means that no box is drawn. In our
+"Hello, World!" example we use <tt>FL_UP_BOX</tt>,
+which means that a raised button border will be drawn around
+the widget. You can learn more about boxtypes in
+<A href="common.html#boxtypes">Chapter 3</A>.
+
+You could examine the boxtype in by doing
+<tt>box->box()</tt>. FLTK uses method name overloading to make
+short names for get/set methods. A "set" method is always of
+the form "void name(type)", and a "get" method is always
+of the form "type name() const".
+
+\subsection basics_redrawing Redrawing After Changing Attributes
+
+Almost all of the set/get pairs are very fast, short inline
+functions and thus very efficient. However, <i>the "set" methods
+do not call <tt>redraw()</tt></i> - you have to call it
+yourself. This greatly reduces code size and execution time. The
+only common exceptions are <tt>value()</tt> which calls
+<tt>redraw()</tt> and <tt>label()</tt> which calls
+<tt>redraw_label()</tt> if necessary.
+
+\subsection basics_labels Labels
+
+All widgets support labels. In the case of window widgets,
+the label is used for the label in the title bar. Our example
+program calls the <tt>labelfont()</tt>,<tt> labelsize</tt>,
+and <tt>labeltype()</tt> methods.
+
+All widgets support labels. In the case of window widgets,
+the label is used for the label in the title bar. Our example
+program calls the
+<A href=Fl_Widget.html#Fl_Widget.labelfont><tt>labelfont</tt></A>,
+<A href=Fl_Widget.html#Fl_Widget.labelsize><tt> labelsize</tt></A>,
+and
+<A href=Fl_Widget.html#Fl_Widget.labeltype><tt>labeltype</tt></A>
+methods.
+
+The <tt>labelfont</tt> method sets the typeface and style
+that is used for the label, which for this example we are using
+<tt>FL_BOLD</tt> and <tt>FL_ITALIC</tt>. You can also specify
+typefaces directly.
+
+The <tt>labelsize</tt> method sets the height of the font in pixels.
+
+The <tt>labeltype</tt>
+method sets the type of label. FLTK supports normal, embossed,
+and shadowed labels internally, and more types can be added as
+desired.
+
+A complete list of all label options can be found in
+<A href="common.html#labels">Chapter 3</A>.
+
+\subsection basics_showing Showing the Window
+
+The <tt>show()</tt> method shows the widget or window. For windows
+you can also provide the command-line arguments to allow users to
+customize the appearance, size, and position of your windows.
+
+\subsection basics_eventloop The Main Event Loop
+
+All FLTK applications (and most GUI applications in general)
+are based on a simple event processing model. User actions such
+as mouse movement, button clicks, and keyboard activity generate
+events that are sent to an application. The application may then
+ignore the events or respond to the user, typically by redrawing
+a button in the "down" position, adding the text to an input
+field, and so forth.
+
+FLTK also supports idle, timer, and file pseudo-events that
+cause a function to be called when they occur. Idle functions
+are called when no user input is present and no timers or files
+need to be handled - in short, when the application is not doing
+anything. Idle callbacks are often used to update a 3D display
+or do other background processing.
+
+Timer functions are called after a specific amount of time
+has expired. They can be used to pop up a progress dialog after
+a certain amount of time or do other things that need to happen
+at more-or-less regular intervals. FLTK timers are not 100%
+accurate, so they should not be used to measure time intervals,
+for example.
+
+File functions are called when data is ready to read or
+write, or when an error condition occurs on a file. They are
+most often used to monitor network connections (sockets) for
+data-driven displays.
+
+FLTK applications must periodically check (Fl::check())
+or wait (Fl::wait()) for events or use the Fl::run()
+method to enter a standard event processing loop. Calling
+Fl::run() is equivalent to the following code:
+
+\code
+while (Fl::wait());
+\endcode
+
+Fl::run() does not return until all of the windows
+under FLTK control are closed by the user or your program.
+
+\section basics_standard_compiler Compiling Programs with Standard Compilers
+
+Under UNIX (and under Microsoft Windows when using the GNU development
+tools) you will probably need to tell the compiler where to find the
+header files. This is usually done using the <tt>-I</tt> option:
+
+\code
+CC -I/usr/local/include ...
+gcc -I/usr/local/include ...
+\endcode
+
+The <tt>fltk-config</tt> script included with FLTK can be
+used to get the options that are required by your compiler:
+
+\code
+CC `fltk-config --cxxflags` ...
+\endcode
+
+Similarly, when linking your application you will need to tell the
+compiler to use the FLTK library:
+
+\code
+CC ... -L/usr/local/lib -lfltk -lXext -lX11 -lm
+gcc ... -L/usr/local/lib -lfltk -lXext -lX11 -lm
+\endcode
+
+Aside from the "fltk" library, there is also a "fltk_forms"
+library for the XForms compatibility classes, "fltk_gl" for the
+OpenGL and GLUT classes, and "fltk_images" for the image file
+classes, Fl_Help_Dialog widget, and system icon support.
+
+\note
+The libraries are named "fltk.lib", "fltkgl.lib", "fltkforms.lib",
+and "fltkimages.lib", respectively under Windows.
+
+As before, the <tt>fltk-config</tt> script included with FLTK can be
+used to get the options that are required by your linker:
+
+\code
+CC ... `fltk-config --ldflags`
+\endcode
+
+<!-- NEED 2in -->
+
+The forms, GL, and images libraries are included with the "--use-foo"
+options, as follows:
+
+\code
+CC ... `fltk-config --use-forms --ldflags`
+CC ... `fltk-config --use-gl --ldflags`
+CC ... `fltk-config --use-images --ldflags`
+CC ... `fltk-config --use-forms --use-gl --use-images --ldflags`
+\endcode
+
+Finally, you can use the <tt>fltk-config</tt> script to
+compile a single source file as a FLTK program:
+
+\code
+fltk-config --compile filename.cpp
+fltk-config --use-forms --compile filename.cpp
+fltk-config --use-gl --compile filename.cpp
+fltk-config --use-images --compile filename.cpp
+fltk-config --use-forms --use-gl --use-images --compile filename.cpp
+\endcode
+
+Any of these will create an executable named <tt>filename</tt>.
+
+\section basics_visual_cpp Compiling Programs with Microsoft Visual C++
+
+In Visual C++ you will need to tell the compiler where to
+find the FLTK header files. This can be done by selecting
+"Settings" from the "Project" menu and then changing the
+"Preprocessor" settings under the "C/C++" tab. You will also
+need to add the FLTK and WinSock2 (WS2_32.LIB) libraries to
+the "Link" settings.
+
+You can build your Microsoft Windows applications as Console or
+WIN32 applications. If you want to use the standard C <tt>main()</tt>
+function as the entry point, FLTK includes a <tt>WinMain()</tt>
+function that will call your <tt>main()</tt> function for you.
+
+<I>Note: The Visual C++ 5.0 optimizer is known to cause problems with
+many programs. We only recommend using the "Favor Small Code"
+optimization setting.</I> The Visual C++ 6.0 optimizer seems to be much
+better and can be used with the "optimized for speed" setting.
+
+\section basics_naming Naming
+
+All public symbols in FLTK start with the characters 'F' and 'L':
+
+\li Functions are either <tt>Fl::foo()</tt> or <tt>fl_foo()</tt>.
+
+\li Class and type names are capitalized: <tt>Fl_Foo</tt>.
+
+\li <A href="enumerations.html">Constants and enumerations</A>
+ are uppercase: <tt>FL_FOO</tt>.
+
+\li All header files start with <tt><FL/...></tt>.
+
+<!-- NEED 5in -->
+
+\section basics_headerfiles Header Files
+
+The proper way to include FLTK header files is:
+
+\code
+#include <FL/Fl_xyz.H>
+\endcode
+
+\note
+Case <I>is</I> significant on many operating systems,
+and the C standard uses the forward slash (/) to
+separate directories. <i>Do not use any of the following
+include lines:</i>
+
+\code
+#include <FL\Fl_xyz.H>
+#include <fl/fl_xyz.h>
+#include <Fl/fl_xyz.h>
+\endcode
+
+\htmlonly
+<hr>
+<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
+<a class="el" href="intro.html">[Previous]&nbsp; 1 - Introduction to FLTK</a>&nbsp;
+<a class="el" href="common.html">[Next]&nbsp; 3 - Common Widgets and Attributes</a>&nbsp;
+\endhtmlonly
+*/
diff --git a/documentation/src_doc/boxtypes.gif b/documentation/src_doc/boxtypes.gif
new file mode 100644
index 000000000..bf1b67fd3
--- /dev/null
+++ b/documentation/src_doc/boxtypes.gif
Binary files differ
diff --git a/documentation/src_doc/buttons.gif b/documentation/src_doc/buttons.gif
new file mode 100644
index 000000000..cadf9a3a5
--- /dev/null
+++ b/documentation/src_doc/buttons.gif
Binary files differ
diff --git a/documentation/src_doc/charts.gif b/documentation/src_doc/charts.gif
new file mode 100644
index 000000000..c68e66ed5
--- /dev/null
+++ b/documentation/src_doc/charts.gif
Binary files differ
diff --git a/documentation/src_doc/choice.gif b/documentation/src_doc/choice.gif
new file mode 100644
index 000000000..c446830d9
--- /dev/null
+++ b/documentation/src_doc/choice.gif
Binary files differ
diff --git a/documentation/src_doc/clock.gif b/documentation/src_doc/clock.gif
new file mode 100644
index 000000000..fd7295306
--- /dev/null
+++ b/documentation/src_doc/clock.gif
Binary files differ
diff --git a/documentation/src_doc/common.dox b/documentation/src_doc/common.dox
new file mode 100644
index 000000000..8374fe6ed
--- /dev/null
+++ b/documentation/src_doc/common.dox
@@ -0,0 +1,618 @@
+/**
+
+ \page common 3 - Common Widgets and Attributes
+
+This chapter describes many of the widgets that are provided
+with FLTK and covers how to query and set the standard
+attributes.
+
+\section common_buttons Buttons
+
+FLTK provides many types of buttons:
+
+\li Fl_Button - A standard push button.
+
+\li Fl_Check_Button - A button with a check box.
+
+\li Fl_Light_Button - A push button with a light.
+
+\li Fl_Repeat_Button - A push button that repeats when held.
+
+\li Fl_Return_Button - A push button that is activated by the
+ <KBD>Enter</KBD> key.
+
+\li Fl_Round_Button - A button with a radio circle.
+
+\image html buttons.gif "Figure 3-1: FLTK Button Widgets"
+
+All of these buttons just need the corresponding
+<tt><FL/Fl_xyz_Button.H></tt> header file. The constructor
+takes the bounding box of the button and optionally a label
+string:
+
+\code
+Fl_Button *button = new Fl_Button(x, y, width, height, "label");
+Fl_Light_Button *lbutton = new Fl_Light_Button(x, y, width, height);
+Fl_Round_Button *rbutton = new Fl_Round_Button(x, y, width, height, "label");
+\endcode
+
+Each button has an associated <tt>type()</tt> which allows
+it to behave as a push button, toggle button, or radio button:
+
+\code
+button->type(FL_NORMAL_BUTTON);
+lbutton->type(FL_TOGGLE_BUTTON);
+rbutton->type(FL_RADIO_BUTTON);
+\endcode
+
+For toggle and radio buttons, the value() method returns
+the current button state (0 = off, 1 = on). The set() and
+clear() methods can be used on toggle buttons to turn a
+toggle button on or off, respectively.
+Radio buttons can be turned on with the setonly()
+method; this will also turn off other radio buttons in the same
+group.
+
+\section common_text Text
+
+FLTK provides several text widgets for displaying and receiving text:
+
+\li Fl_Input - A one-line text input field.
+
+\li Fl_Output - A one-line text output field.
+
+\li Fl_Multiline_Input - A multi-line text input field.
+
+\li Fl_Multiline_Output - A multi-line text output field.
+
+\li Fl_Text_Display - A multi-line text display widget.
+
+\li Fl_Text_Editor - A multi-line text editing widget.
+
+\li Fl_Help_View - A HTML text display widget.
+
+The <tt>Fl_Output</tt> and <tt>Fl_Multiline_Output</tt>
+widgets allow the user to copy text from the output field but
+not change it.
+
+The <tt>value()</tt> method is used to get or set the
+string that is displayed:
+
+\code
+Fl_Input *input = new Fl_Input(x, y, width, height, "label");
+input->value("Now is the time for all good men...");
+\endcode
+
+The string is copied to the widget's own storage when you set
+the <tt>value()</tt> of the widget.
+
+The <tt>Fl_Text_Display</tt> and <tt>Fl_Text_Editor</tt>
+widgets use an associated <tt>Fl_Text_Buffer</tt> class for the
+value, instead of a simple string.
+
+<!-- NEED 4in -->
+
+\section common_valuators Valuators
+
+Unlike text widgets, valuators keep track of numbers instead of
+strings. FLTK provides the following valuators:
+
+\li Fl_Counter - A widget with arrow buttons that shows the current value.
+
+\li Fl_Dial - A round knob.
+
+\li Fl_Roller - An SGI-like dolly widget.
+
+\li Fl_Scrollbar - A standard scrollbar widget.
+
+\li Fl_Slider - A scrollbar with a knob.
+
+\li Fl_Value_Slider - A slider that shows the current value.
+
+\image html valuators.gif "Figure 3-2: FLTK valuator widgets"
+
+The <tt>value()</tt> method gets and sets the current value
+of the widget. The <tt>minimum()</tt> and <tt>maximum()</tt>
+methods set the range of values that are reported by the
+widget.
+
+<!-- NEED 5in -->
+
+\section common_groups Groups
+
+The <tt>Fl_Group</tt> widget class is used as a general
+purpose "container" widget. Besides grouping radio
+buttons, the groups are used to encapsulate windows, tabs, and
+scrolled windows. The following group classes are available
+with FLTK:
+
+\li Fl_Double_Window - A double-buffered window on the screen.
+
+\li Fl_Gl_Window - An OpenGL window on the screen.
+
+\li Fl_Group - The base container class; can be used to group
+ any widgets together.
+
+\li Fl_Pack - A collection of widgets that are packed into the group area.
+
+\li Fl_Scroll - A scrolled window area.
+
+\li Fl_Tabs - Displays child widgets as tabs.
+
+\li Fl_Tile - A tiled window area.
+
+\li Fl_Window - A window on the screen.
+
+\li Fl_Wizard - Displays one group of widgets at a time.
+
+\section common_sizeposition Setting the Size and Position of Widgets
+
+The size and position of widgets is usually set when you
+create them. You can access them with the <tt>x()</tt>,
+<tt>y()</tt>, <tt>w()</tt>, and <tt>h()</tt> methods.
+
+You can change the size and position by using the
+<tt>position()</tt>, <tt> resize()</tt>, and <tt>size()</tt>
+methods:
+
+\code
+button->position(x, y);
+group->resize(x, y, width, height);
+window->size(width, height);
+\endcode
+
+If you change a widget's size or position after it is
+displayed you will have to call <tt>redraw()</tt> on the
+widget's parent.
+
+<A NAME="colors"></A> <!-- For old HTML links only ! -->
+\section common_colors Colors
+
+FLTK stores the colors of widgets as an 32-bit unsigned
+number that is either an index into a color palette of 256
+colors or a 24-bit RGB color. The color palette is <i>not</i>
+the X or WIN32 colormap, but instead is an internal table with
+fixed contents.
+
+There are symbols for naming some of the more common colors:
+
+\li <tt>FL_BLACK</tt>
+
+\li <tt>FL_RED</tt>
+
+\li <tt>FL_GREEN</tt>
+
+\li <tt>FL_YELLOW</tt>
+
+\li <tt>FL_BLUE</tt>
+
+\li <tt>FL_MAGENTA</tt>
+
+\li <tt>FL_CYAN</tt>
+
+\li <tt>FL_WHITE</tt>
+
+\li FL_WHITE
+
+These symbols are the default colors for all FLTK widgets. They are
+explained in more detail in the chapter
+<A HREF="enumerations.html#colors">Enumerations</A>
+
+\li <tt>FL_FOREGROUND_COLOR</tt>
+
+\li <tt>FL_BACKGROUND_COLOR</tt>
+
+\li <tt>FL_INACTIVE_COLOR</tt>
+
+\li <tt>FL_SELECTION_COLOR</tt>
+
+RGB colors can be set using the <tt>fl_rgb_color()</tt> function:
+
+\code
+Fl_Color c = fl_rgb_color(85, 170, 255);
+\endcode
+
+The widget color is set using the <tt>color()</tt> method:
+
+\code
+button->color(FL_RED);
+\endcode
+
+Similarly, the label color is set using the <tt>labelcolor()</tt>
+method:
+
+\code
+button->labelcolor(FL_WHITE);
+\endcode
+
+<A NAME="boxtypes"></A> <!-- For old HTML links only ! -->
+\section common_boxtypes Box Types
+
+The type <tt>Fl_Boxtype</tt> stored and returned in Fl_Widget::box()
+is an enumeration defined in Enumerations.H.
+
+Figure 3-3 shows the standard box types included with FLTK.
+
+\image html boxtypes.gif "Figure 3-3: FLTK box types"
+
+<tt>FL_NO_BOX</tt> means nothing is drawn at all, so whatever is
+already on the screen remains. The <tt>FL_..._FRAME</tt> types only
+draw their edges, leaving the interior unchanged. The blue color in
+Figure 3-3 is the area that is not drawn by the frame types.
+
+\subsection common_boxtypes Making Your Own Boxtypes
+
+You can define your own boxtypes by making a small function that draws
+the box and adding it to the table of boxtypes.
+
+<CENTER><TABLE WIDTH="80%" BORDER="1" CELLPADDING="5" CELLSPACING="0" BGCOLOR="#cccccc">
+<TR>
+ <TD><B>Note:</B>
+ <P>This interface has changed in FLTK 2.0!
+ </TD>
+</TR>
+</TABLE></CENTER>
+
+\par The Drawing Function
+
+The drawing function is passed the bounding box and background color
+for the widget:
+
+\code
+void xyz_draw(int x, int y, int w, int h, Fl_Color c) {
+...
+}
+\endcode
+
+<!-- NEED 3in -->
+
+A simple drawing function might fill a rectangle with the
+given color and then draw a black outline:
+
+\code
+void xyz_draw(int x, int y, int w, int h, Fl_Color c) {
+ fl_color(c);
+ fl_rectf(x, y, w, h);
+ fl_color(FL_BLACK);
+ fl_rect(x, y, w, h);
+}
+\endcode
+
+<A name="fl_down"></A> <!-- For old HTML links only ! -->
+\par Fl_Boxtype fl_down(Fl_Boxtype)
+
+<tt>fl_down</tt> returns the "pressed" or "down" version of a box.
+If no "down" version of a given box exists, the behavior of this function
+is undefined and some random box or frame is returned.
+See also: <A HREF="drawing.html#fl_frame">fl_frame drawing</A>.
+
+<A name="fl_frame"></A> <!-- For old HTML links only ! -->
+\par Fl_Boxtype fl_frame(Fl_Boxtype)
+
+<tt>fl_frame</tt> returns the unfilled, frame-only version of a box.
+If no frame version of a given box exists, the behavior of this function
+is undefined and some random box or frame is returned.
+See also: <A HREF="drawing.html#fl_frame">fl_frame drawing</A>.
+
+<A name="fl_box"></A> <!-- For old HTML links only ! -->
+\par Fl_Boxtype fl_box(Fl_Boxtype)
+
+<tt>fl_box</tt> returns the filled version of a frame.
+If no filled version of a given frame exists, the behavior of this function
+is undefined and some random box or frame is returned.
+See also: <tt><A HREF="#fl_frame">fl_frame</A></tt>.
+
+\par Adding Your Box Type
+
+The <tt>Fl::set_boxtype()</tt> method adds or replaces the specified box type:
+
+\code
+#define XYZ_BOX FL_FREE_BOXTYPE
+
+Fl::set_boxtype(XYZ_BOX, xyz_draw, 1, 1, 2, 2);
+\endcode
+The last 4 arguments to <tt>Fl::set_boxtype()</tt> are the
+offsets for the x, y, width, and height values that should be
+subtracted when drawing the label inside the box.
+
+A complete box design contains four box types in this order:
+a filled, neutral box (<tt>UP_BOX</tt>), a filled, depressed box
+(<tt>DOWN_BOX</tt>), and the same as outlines only (<tt>UP_FRAME</tt>
+and <tt>DOWN_FRAME</tt>). The function
+<tt><A HREF="#fl_down">fl_down(Fl_Boxtype)</A></tt>
+expects the neutral design on a boxtype with a numerical
+value evenly divideable by two.
+<tt><A HREF="#fl_frame">fl_frame(Fl_Boxtype)</A></tt>
+expects the <tt>UP_BOX</tt> design at a value divideable by four.
+
+<A NAME="labels"></A> <!-- For old HTML links only ! -->
+\section common_labels Labels and Label Types
+
+The <tt>label()</tt>, <tt>align()</tt>, <tt>labelfont()</tt>,
+<tt>labelsize()</tt>, <tt>labeltype()</tt>, <tt>image()</tt>, and
+<tt>deimage()</tt> methods control the labeling of widgets.
+
+\par label()
+
+The <tt>label()</tt> method sets the string that is displayed
+for the label. Symbols can be included with the label string by
+escaping them using the "@" symbol - "@@" displays a single at
+sign. Figure 3-4 shows the available symbols.
+
+\image html symbols.gif "Figure 3-4: FLTK label symbols"
+
+<!-- NEED 2in -->
+
+The @ sign may also be followed by the following optional
+"formatting" characters, in this order:
+
+\li '#' forces square scaling, rather than distortion to the widget's shape.
+
+\li +[1-9] or -[1-9] tweaks the scaling a little bigger or smaller.
+
+\li '$' flips the symbol horizontaly, '%' flips it verticaly.
+
+\li [0-9] - rotates by a multiple of 45 degrees. '5' and '6' do no rotation
+ while the others point in the direction of that key on a numeric keypad.
+ '0', followed by four more digits rotates the symbol by that amount in
+ degrees.
+
+Thus, to show a very large arrow pointing downward you would use the
+label string "@+92->".
+
+\par align()
+
+The <tt>align()</tt> method positions the label. The following
+constants are defined and may be OR'd together as needed:
+
+\li <tt>FL_ALIGN_CENTER</tt> - center the label in the widget.
+
+\li <tt>FL_ALIGN_TOP</tt> - align the label at the top of the widget.
+
+\li <tt>FL_ALIGN_BOTTOM</tt> - align the label at the bottom of the
+ widget.
+
+\li <tt>FL_ALIGN_LEFT</tt> - align the label to the left of the widget.
+
+\li <tt>FL_ALIGN_RIGHT</tt> - align the label to the right of the
+ widget.
+
+\li <tt>FL_ALIGN_INSIDE</tt> - align the label inside the widget.
+
+\li <tt>FL_ALIGN_CLIP</tt> - clip the label to the widget's bounding
+ box.
+
+\li <tt>FL_ALIGN_WRAP</tt> - wrap the label text as needed.
+
+\li <tt>FL_TEXT_OVER_IMAGE</tt> - show the label text over the image.
+
+\li <tt>FL_IMAGE_OVER_TEXT</tt> - show the label image over the text (default).
+
+<A NAME="labeltypes"></A> <!-- For old HTML links only ! -->
+\par labeltype()
+
+The <tt>labeltype()</tt> method sets the type of the label. The
+following standard label types are included:
+
+\li <tt>FL_NORMAL_LABEL</tt> - draws the text.
+
+\li <tt>FL_NO_LABEL</tt> - does nothing.
+
+\li <tt>FL_SHADOW_LABEL</tt> - draws a drop shadow under the text.
+
+\li <tt>FL_ENGRAVED_LABEL</tt> - draws edges as though the text is engraved.
+
+\li <tt>FL_EMBOSSED_LABEL</tt> - draws edges as thought the text is raised.
+
+\li <tt>FL_ICON_LABEL</tt> - draws the icon associated with the text.
+
+\par image() and deimage()
+
+The <tt>image()</tt> and <tt>deimage()</tt> methods set an image that
+will be displayed with the widget. The <tt>deimage()</tt> method sets the
+image that is shown when the widget is inactive, while the <tt>image()</tt>
+method sets the image that is shown when the widget is active.
+
+To make an image you use a subclass of
+<A HREF="drawing.html#Fl_Image"><tt>Fl_Image</tt></A>.
+
+\par Making Your Own Label Types
+
+Label types are actually indexes into a table of functions
+that draw them. The primary purpose of this is to use this to
+draw the labels in ways inaccessible through the
+<tt>fl_font</tt> mechanisim (e.g. <tt>FL_ENGRAVED_LABEL</tt>) or
+with program-generated letters or symbology.
+
+<CENTER><TABLE WIDTH="80%" BORDER="1" CELLPADDING="5" CELLSPACING="0" BGCOLOR="#cccccc">
+<TR>
+ <TD><B>Note:</B>
+ <P>This interface has changed in FLTK 2.0!
+ </TD>
+</TR>
+</TABLE></CENTER>
+
+\par Label Type Functions
+
+To setup your own label type you will need to write two
+functions: one to draw and one to measure the label. The draw
+function is called with a pointer to a <tt>Fl_Label</tt>
+structure containing the label information, the bounding box for
+the label, and the label alignment:
+
+\code
+void xyz_draw(const Fl_Label *label, int x, int y, int w, int h, Fl_Align align) {
+...
+}
+\endcode
+
+The label should be drawn <I>inside</I> this bounding box,
+even if <tt>FL_ALIGN_INSIDE</tt> is not enabled. The function
+is not called if the label value is <tt>NULL</tt>.
+
+The measure function is called with a pointer to a
+<tt>Fl_Label</tt> structure and references to the width and
+height:
+
+\code
+void xyz_measure(const Fl_Label *label, int &w, int &h) {
+...
+}
+\endcode
+
+The function should measure the size of the label and set
+<tt>w</tt> and <tt>h</tt> to the size it will occupy.
+
+\par Adding Your Label Type
+
+The <tt>Fl::set_labeltype</tt> method creates a label type
+using your draw and measure functions:
+
+\code
+#define XYZ_LABEL FL_FREE_LABELTYPE
+
+Fl::set_labeltype(XYZ_LABEL, xyz_draw, xyz_measure);
+\endcode
+
+The label type number <tt>n</tt> can be any integer value
+starting at the constant <tt>FL_FREE_LABELTYPE</tt>. Once you
+have added the label type you can use the <tt>labeltype()</tt>
+method to select your label type.
+
+The <tt>Fl::set_labeltype</tt> method can also be used to overload
+an existing label type such as <tt>FL_NORMAL_LABEL</tt>.
+
+<A NAME="add_symbol"></A> <!-- For old HTML links only ! -->
+\par Making your own symbols
+
+It is also possible to define your own drawings and add
+them to the symbol list, so they can be rendered as part of
+any label.
+
+To create a new symbol, you implement a drawing function
+<tt>void drawit(Fl_Color c)</tt> which typically uses the
+<a href="drawing.html#complex">complex drawing functions</a>
+to generate a vector shape inside a two-by-two units sized box
+around the origin. This function is then linked into the symbols
+table using <tt>fl_add_symbol</tt>:
+
+\code
+int fl_add_symbol(const char *name, void (*drawit)(Fl_Color), int scalable)
+\endcode
+
+<i>name</i> is the name of the symbol without the "@"; <i>scalable</I>
+must be set to 1 if the symbol is generated using scalable vector drawing
+functions.
+
+\code
+int fl_draw_symbol(const char *name,int x,int y,int w,int h,Fl_Color col)
+\endcode
+
+This function draws a named symbol fitting the given rectangle.
+
+\section common_callbacks Callbacks
+
+Callbacks are functions that are called when the value of a
+widget changes. A callback function is sent a <tt>Fl_Widget</tt>
+pointer of the widget that changed and a pointer to data that
+you provide:
+
+\code
+void xyz_callback(Fl_Widget *w, void *data) {
+...
+}
+\endcode
+
+The <tt>callback()</tt> method sets the callback function for a
+widget. You can optionally pass a pointer to some data needed for the
+callback:
+
+\code
+int xyz_data;
+
+button->callback(xyz_callback, &xyz_data);
+\endcode
+
+Normally callbacks are performed only when the value of the
+widget changes. You can change this using the Fl_Widget::when()
+method:
+
+\code
+button->when(FL_WHEN_NEVER);
+button->when(FL_WHEN_CHANGED);
+button->when(FL_WHEN_RELEASE);
+button->when(FL_WHEN_RELEASE_ALWAYS);
+button->when(FL_WHEN_ENTER_KEY);
+button->when(FL_WHEN_ENTER_KEY_ALWAYS);
+button->when(FL_WHEN_CHANGED | FL_WHEN_NOT_CHANGED);
+\endcode
+
+<CENTER><TABLE WIDTH="80%" BORDER="1" CELLPADDING="5" CELLSPACING="0" BGCOLOR="#cccccc">
+<TR>
+ <TD><B>Note:</B>
+
+ <P>You cannot delete a widget inside a callback, as the
+ widget may still be accessed by FLTK after your callback
+ is completed. Instead, use the Fl::delete_widget()
+ method to mark your widget for deletion when it is safe
+ to do so.
+
+ <p><B>Hint:</B>
+
+ <P>Many programmers new to FLTK or C++ try to use a
+ non-static class method instead of a static class method
+ or function for their callback. Since callbacks are done
+ outside a C++ class, the <tt>this</tt> pointer is not
+ initialized for class methods.
+
+ <P>To work around this problem, define a static method
+ in your class that accepts a pointer to the class, and
+ then have the static method call the class method(s) as
+ needed. The data pointer you provide to the
+ <tt>callback()</tt> method of the widget can be a
+ pointer to the instance of your class.
+
+\code
+class Foo {
+ void my_callback(Fl_Widget *w);
+ static void my_static_callback(Fl_Widget *w, void *f) { ((Foo *)f)->my_callback(w); }
+ ...
+}
+
+...
+
+w->callback(my_static_callback, (void *)this);
+\endcode
+ </TD>
+</TR>
+</TABLE></CENTER>
+
+\section common_shortcuts Shortcuts
+
+Shortcuts are key sequences that activate widgets such as
+buttons or menu items. The <tt>shortcut()</tt> method sets the
+shortcut for a widget:
+
+\code
+button->shortcut(FL_Enter);
+button->shortcut(FL_SHIFT + 'b');
+button->shortcut(FL_CTRL + 'b');
+button->shortcut(FL_ALT + 'b');
+button->shortcut(FL_CTRL + FL_ALT + 'b');
+button->shortcut(0); // no shortcut
+\endcode
+
+The shortcut value is the key event value - the ASCII value
+or one of the special keys like
+<a href="enumerations.html#key_values"><tt>FL_Enter</tt></a> -
+combined with any modifiers like <KBD>Shift</KBD>,
+<KBD>Alt</KBD>, and <KBD>Control</KBD>.
+
+\htmlonly
+<hr>
+<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
+<a class="el" href="basics.html">[Previous]&nbsp; 2 - FLTK Basics</a>&nbsp;
+<a class="el" href="editor.html">[Next]&nbsp; 4 - Designing a Simple Text Editor</a>&nbsp;
+
+\endhtmlonly
+*/
diff --git a/documentation/src_doc/counter.gif b/documentation/src_doc/counter.gif
new file mode 100644
index 000000000..6e05a65e7
--- /dev/null
+++ b/documentation/src_doc/counter.gif
Binary files differ
diff --git a/documentation/src_doc/cubeview.gif b/documentation/src_doc/cubeview.gif
new file mode 100644
index 000000000..024cc55d2
--- /dev/null
+++ b/documentation/src_doc/cubeview.gif
Binary files differ
diff --git a/documentation/src_doc/development.dox b/documentation/src_doc/development.dox
new file mode 100644
index 000000000..bbb5ba791
--- /dev/null
+++ b/documentation/src_doc/development.dox
@@ -0,0 +1,461 @@
+/**
+
+ \page development I - Developer Information
+
+This chapter describes FLTK development and documentation.
+
+\note documentation with doxygen will be described here.
+
+
+<H2>Example</H2>
+
+\note
+
+In the following code example(s) "*" will be replaced by "#"
+as a temporary solution.
+
+\code
+
+
+/## \file
+ Fl_Clock, Fl_Clock_Output widgets . #/
+
+
+/##
+ \class Fl_Clock_Output
+ \brief This widget can be used to display a program-supplied time.
+
+ The time shown on the clock is not updated. To display the current time,
+ use Fl_Clock instead.
+
+ \image html clock.gif
+
+ \image html round_clock.gif
+ #/
+
+ /##
+ Returns the displayed time.
+ Returns the time in seconds since the UNIX epoch (January 1, 1970).
+ \see value(ulong)
+ #/
+ ulong value() const {return value_;}
+
+/##
+ Set the displayed time.
+ Set the time in seconds since the UNIX epoch (January 1, 1970).
+ \param[in] v seconds since epoch
+ \see value()
+ #/
+void Fl_Clock_Output::value(ulong v) {
+ [...]
+}
+
+/##
+ Create an Fl_Clock widget using the given position, size, and label string.
+ The default boxtype is \c FL_NO_BOX.
+ \param[in] X, Y, W, H position and size of the widget
+ \param[in] L widget label, default is no label
+ #/
+Fl_Clock::Fl_Clock(int X, int Y, int W, int H, const char #L)
+ : Fl_Clock_Output(X, Y, W, H, L) {}
+
+/##
+ Create an Fl_Clock widget using the given boxtype, position, size, and
+ label string.
+ \param[in] t boxtype
+ \param[in] X, Y, W, H position and size of the widget
+ \param[in] L widget label, default is no label
+ #/
+Fl_Clock::Fl_Clock(uchar t, int X, int Y, int W, int H, const char #L)
+ : Fl_Clock_Output(X, Y, W, H, L) {
+ type(t);
+ box(t==FL_ROUND_CLOCK ? FL_NO_BOX : FL_UP_BOX);
+}
+
+
+\endcode
+
+
+\note
+
+From Duncan: (will be removed later, just for now as a reminder)
+
+5. I've just added comments for the fl_color_chooser() functions, and
+ in order to keep them and the general Function Reference information
+ for them together, I created a new doxygen group, and used \\ingroup
+ in the three comment blocks. This creates a new Modules page (which
+ may not be what we want) with links to it from the File Members and
+ Fl_Color_Chooser.H pages. It needs a bit more experimentation on my
+ part unless someone already knows how this should be handled. (Maybe
+ we can add it to a functions.dox file that defines a functions group
+ and do that for all of the function documentation?)
+
+\b Update: the trick is not to create duplicate entries in a new group, but
+ to move the function information into the doxygen comments for the
+ class, and use the navigation links provided. Simply using \\relatesalso
+ as the first doxygen command in the function's comment puts it in the
+ appropriate place. There is no need to have \\defgroup and \\ingroup as
+ well, and indeed they don't work. So, to summarize:
+\code
+Gizmo.H
+ /## \class Gizmo
+ A gizmo that does everything
+ #/
+ class Gizmo {
+ etc
+ };
+ extern int popup_gizmo(...);
+
+Gizmo.cxx:
+ /## \relatesalso Gizmo
+ Pops up a gizmo dialog with a Gizmo in it
+ #/
+ int popup_gizmo(...);
+\endcode
+
+<H3>Example comment:</H3>
+
+You can use HTML comment statements to embed comments in doxygen comment blocks.
+These comments will not be visible in the generated document.
+
+ The following text is a developer comment.
+ <!-- *** This *** is *** invisible *** -->
+ This will be visible again.
+
+\code
+ The following text is a developer comment.
+ <!-- *** This *** is *** invisible *** -->
+ This will be visible again.
+\endcode
+
+
+<H3>Different Headlines:</H3>
+
+\code
+ <H1>Headline in big text (H1)</H1>
+ <H2>Headline in big text (H2)</H2>
+ <H3>Headline in big text (H3)</H3>
+ <H4>Headline in big text (H4)</H4>
+\endcode
+
+ <H1>Headline in big text (H1)</H1>
+ <H2>Headline in big text (H2)</H2>
+ <H3>Headline in big text (H3)</H3>
+ <H4>Headline in big text (H4)</H4>
+
+
+\section development_non-ascii Non-ASCII characters
+
+ if you came here from below: back to \ref development_links
+
+\code
+ Doxygen understands many HTML quoting characters like
+ &quot;, &uuml;, &ccedil;, &Ccedil;, but not all HTML quoting characters.
+\endcode
+
+This will appear in the document:
+
+ Doxygen understands many HTML quoting characters like
+ &quot;, &uuml;, &ccedil;, &Ccedil;, but not all HTML quoting characters.
+
+For further informations about quoting see
+ \b http://www.stack.nl/~dimitri/doxygen/htmlcmds.html
+
+<H3>Example with UTF-8 encoded text</H3>
+
+\code
+
+ <P>Assuming that the following source code was written on MS Windows,
+ this example will output the correct label on OS X and X11 as well.
+ Without the conversion call, the label on OS X would read
+ <tt>Fahrvergn¸gen</tt> with a deformed umlaut u ("cedille",
+ html "&cedil;").
+ \#code
+ btn = new Fl_Button(10, 10, 300, 25);
+ btn->copy_label(fl_latin1_to_local("Fahrvergnügen"));
+ \#endcode
+
+ \note If your application uses characters that are not part of both
+ encodings, or it will be used in areas that commonly use different
+ code pages, you might consider upgrading to FLTK 2 which supports
+ UTF-8 encoding.
+
+ \todo This is an example todo entry, please ignore !
+
+\endcode
+
+This will appear in the document:
+
+ <P>Assuming that the following source code was written on MS Windows,
+ this example will output the correct label on OS X and X11 as well.
+ Without the conversion call, the label on OS X would read
+ <tt>Fahrvergn¸gen</tt> with a deformed umlaut u ("cedille",
+ html "&cedil;").
+ \#code
+ btn = new Fl_Button(10, 10, 300, 25);
+ btn->copy_label(fl_latin1_to_local("Fahrvergnügen"));
+ \#endcode
+
+ \note If your application uses characters that are not part of both
+ encodings, or it will be used in areas that commonly use different
+ code pages, you might consider upgrading to FLTK 2 which supports
+ UTF-8 encoding.
+
+ \todo This is an example todo entry, please ignore !
+
+\section development_structure Document Structure
+
+ \li \b \\page creates a named page
+ \li \b \\section creates a named section within that page
+ \li \b \\subsection creates a named subsection within the current section
+ \li \b \\subsubsection creates a named subsubsection within the current subsection
+
+All these statements take a "name" as their first argument, and a title
+as their second argument. The title can contain spaces.
+
+The page, section, and subsection titles are formatted in blue color and
+a size like \b "<H1>", \b "<H2>", and \b "<H3>", and \b "<H4>", respectively.
+
+By <b>FLTK documentation convention</b>, a file like this one with a doxygen
+documentation chapter has the name <b>"<chapter>.dox".</b>
+The \b \\page statement at the top of the page is
+<b>"\page <chapter> This is the title"</b>.
+Sections within a documentation page must be called \b "<chapter>_<section>",
+where \b "<chapter>" is the name part of the file, and \b "<section>" is a
+unique section name within the page that can be referenced in links. The
+same for subsections and subsubsections.
+
+These doxygen page and section commands work only in special documentation
+chapters, not within normal source or header documentation blocks. However,
+links \b from normal (e.g. class) documentation \b to documentation sections
+\b do \b work.
+
+This page has
+ \code
+ \page development I - Developer Information
+ \endcode
+at its top.
+
+This section is
+ \code
+ \section development_structure Document structure
+ \endcode
+
+The following section is
+ \code
+ \section development_links Creating Links
+ \endcode
+
+
+\section development_links Creating Links
+
+Links to other documents and external links can be embedded with
+ \li normal HTML links
+ \li HTML links without markup - doxygen creates "http://..."
+ links automatically
+ \li links to other doxygen chapters with the \\ref statments
+ \li links to named sections within the same or other doxygen chapters,
+ if they are defined there with a \\section statement
+
+\code
+ see chapter \ref unicode creates a link to the named chapter unicode
+ that has been created with a \subpage statement.
+
+ see <a href="drawing.html#character_encoding">chapter 5</a> creates
+ a link to a named html anchor "character_encoding" within the same file.
+
+ For further informations about quoting see
+ http://www.stack.nl/~dimitri/doxygen/htmlcmds.html
+
+ Bold link text: you can see the <b>\e old online documentation</b>
+ of FLTK 1.3 at \b http://www.fltk.org/doc-1.3/toc.html
+
+ see section \ref development_non-ascii
+\endcode
+
+appears as:
+
+ see chapter \ref unicode creates a link to the named chapter unicode
+ that has been created with a \\subpage statement.
+
+ see <a href="drawing.html#character_encoding">chapter 5</a> creates
+ a link to a named html anchor "character_encoding" within the same file.
+
+ For further informations about quoting see
+ http://www.stack.nl/~dimitri/doxygen/htmlcmds.html
+
+ Bold link text: you can see the <b>\e old online documentation</b>
+ of FLTK 1.3 at \b http://www.fltk.org/doc-1.3/toc.html
+
+ see section \ref development_non-ascii
+
+\section development_old-links Changing Old Links
+
+Old HTML links and anchors in text documentation pages should be changed
+as follows:
+
+\code
+<H2><A name="event_xxx">Fl::event_*() methods</A></H2>
+
+becomes:
+
+<A NAME="event_xxx"></A> <!-- For old HTML links only ! -->
+\section events_event_xxx Fl::event_*() methods
+\endcode
+
+The additional HTML "<A NAME=...>" statement is temporary needed, until
+all links (references) are modified, then:
+
+\code
+<H2><A name="event_xxx">Fl::event_*() methods</A></H2>
+
+becomes:
+
+\section events_event_xxx Fl::event_*() methods
+\endcode
+
+The "\section" statement can also be a "\subsection" or "\subsubsection"
+statement.
+
+The references (in this example from index.dox) are changed as follows:
+
+\code
+
+ \subpage events
+
+ <B>
+ <UL>
+ <LI><A HREF="events.html#event_xxx">Fl::event_*() methods</A></LI>
+ <LI><A HREF="events.html#propagation">Event Propagation</A></LI>
+ </UL>
+ </B>
+
+becomes:
+
+ \subpage events
+
+ <b>
+ \li \ref events_event_xxx
+ \li \ref events_propagation
+ </b>
+
+\endcode
+
+
+\section development_paragraphs Paragraph Layout
+
+There is no real need to use HTML \<P\> and \</P\> tags within the text
+to tell doxygen to start or stop a paragraph. In most cases, when doxygen
+encounters a blank line or some, but not all, \b \\commands in the text it
+knows that it as reached the start or end of a paragraph. Doxygen also
+offers the \b \\par command for special paragraph handling. It can be used
+to provide a paragraph title and also to indent a paragraph. Unfortunately
+\b \\par won't do what you expect if you want to have doxygen links and
+sometimes html tags don't work either.
+
+ <!-- use verbatim rather than code to avoid links to code reference -->
+ \verbatim
+ \par Normal Paragraph with title
+
+ This paragraph will have a title, but because there is a blank line
+ between the \par and the text, it will have the normal layout.
+
+ \par Indented Paragraph with title
+ This paragraph will also have a title, but because there is no blank
+ line between the \par and the text, it will be indented.
+
+ \par
+ It is also possible to have an indented paragraph without title.
+ This is how you indent subsequent paragraphs.
+
+ \par No link to Fl_Widget::draw()
+ Note that the paragraph title is treated as plain text.
+ Doxygen type links will not work.
+ HTML characters and tags may or may not work.
+
+ Fl_Widget::draw() links and &quot;html&quot; tags work<br>
+ \par
+ Use a single line ending with <br> for complicated paragraph titles.
+ \endverbatim
+
+The above code produces the following paragraphs:
+
+ \par Normal Paragraph with title
+
+ This paragraph will have a title, but because there is a blank line
+ between the \\par and the text, it will have the normal layout.
+
+ \par Indented Paragraph with title
+ This paragraph will also have a title, but because there is no blank
+ line between the \\par and the text, it will be indented.
+
+ \par
+ It is also possible to have an indented paragraph without title.
+ This is how you indent subsequent paragraphs.
+
+ \par No link to Fl_Widget::draw()
+ Note that the paragraph title is treated as plain text.
+ Doxygen type links will not work.
+ HTML characters and tags may or may not work.
+
+ Fl_Widget::draw() links and &quot;html&quot; tags work<br>
+ \par
+ Use a single line ending with \<br\> for complicated paragraph titles.
+
+
+\section development_html_footer Hack for missing "tiny.gif" file
+
+ \todo
+ *HACK* : include image file for footer. Doxygen does not include
+ the file "tiny.gif" from "html_footer" in its output html dir.
+ Find out, how this can be done, or avoid using an image in
+ the HTML footer.
+
+ \image html tiny.gif
+
+
+\section development_navigation_test 5 Navigation Proposals
+
+\htmlonly
+<hr>
+\link migration_1_3 [ Previous ] \endlink
+<b> [ <a href="index.html">Index</a> ] </b>
+<b> Next: </b> \ref license
+
+<hr>
+<b>[ <a href="index.html">Index</a> ] </b>
+<b> Previous: </b> \ref migration_1_3
+<b> Next: </b> \ref license
+
+<hr>
+<b>[ <a href="index.html">Index</a> ] </b><br>
+<b> Previous: </b> \ref migration_1_3 <br>
+<b> Next: </b> \ref license
+
+<hr>
+<b>[ <a href="index.html">Index</a> ] </b>
+ Previous: \ref migration_1_3
+ Next: \ref license
+
+<hr>
+\link migration_1_3 [ Previous ] \endlink
+<b> [ <a href="index.html">Top</a> ] </b>
+\link license [ Next ] \endlink
+
+<hr>
+<br>
+<br>
+
+\section development_proposed_nav Proposed (final) Navigation Elements
+
+See below.
+
+<hr>
+<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
+<a class="el" href="migration_1_3.html">[Previous]</a>&nbsp;
+ \ref migration_1_3 &nbsp;&nbsp;
+<a class="el" href="license.html">[Next]</a>&nbsp;
+ \ref license
+
+\endhtmlonly
+*/
diff --git a/documentation/src_doc/dial.gif b/documentation/src_doc/dial.gif
new file mode 100644
index 000000000..e52e18038
--- /dev/null
+++ b/documentation/src_doc/dial.gif
Binary files differ
diff --git a/documentation/src_doc/drawing.dox b/documentation/src_doc/drawing.dox
new file mode 100644
index 000000000..ea47d8fe2
--- /dev/null
+++ b/documentation/src_doc/drawing.dox
@@ -0,0 +1,1013 @@
+/**
+
+ \page drawing 5 - Drawing Things in FLTK
+
+This chapter covers the drawing functions that are provided with FLTK.
+
+\section sect_WhenCanYouDraw When Can You Draw Things in FLTK?
+
+There are only certain places you can execute drawing code in FLTK.
+Calling these functions at other places will result in undefined behavior!
+
+\li The most common place is inside the virtual Fl_Widget::draw() method.
+ To write code here, you must subclass one of the existing Fl_Widget
+ classes and implement your own version of draw().
+
+\li The most common place is inside the virtual method
+ <A href="subclassing.html#draw"><tt>Fl_Widget::draw()</tt></A>.
+ To write code here, you must subclass one of the existing Fl_Widget
+ classes and implement your own version of draw().
+
+\li You can also write <A href="common.html#boxtypes">boxtypes</A> and
+ <A href="common.html#labeltypes">labeltypes</A>. These are small
+ procedures that can be called by existing
+ <A HREF="subclassing.html#draw"><tt>Fl_Widget::draw()</tt></A>
+ methods. These "types" are identified by an 8-bit index that is stored
+ in the widget's box(), labeltype(), and possibly other properties.
+
+\li You can call Fl_Window::make_current() to do incremental update of a
+ widget. Use Fl_Widget::window() to find the window.
+
+
+\section sect_DrawingFunctions Drawing Functions
+
+To use the drawing functions you must first include the <FL/fl_draw.H>
+header file. FLTK provides the following types of drawing functions:
+
+\li \ref ssect_Boxes
+\li \ref ssect_Clipping
+\li \ref drawing_colors
+\li \ref ssect_Lines
+\li \ref ssect_Fast
+\li \ref ssect_Complex
+\li \ref ssect_Text
+\li \ref ssect_Fl_Image
+\li \ref ssect_Overlay
+\li \ref ssect_Offscreen
+
+<A name="boxdraw"></A> <!-- For old HTML links only ! -->
+\subsection ssect_Boxes Boxes
+
+FLTK provides three functions that can be used to draw boxes for buttons
+and other UI controls. Each function uses the supplied upper-lefthand corner
+and width and height to determine where to draw the box.
+
+<A NAME="fl_draw_box"> </A> <!-- For old HTML links only ! -->
+void fl_draw_box(Fl_Boxtype b, int x, int y, int w, int h, Fl_Color c);
+
+\par
+The first box drawing function is fl_draw_box()
+which draws a standard boxtype \a b in the specified color \a c .
+
+<A NAME="fl_frame"></A> <!-- For old HTML links only ! -->
+void fl_frame(const char *s, int x, int y, int w, int h)
+
+\par
+The fl_frame() function draws a series of line segments around the
+given box. The string \a s must contain groups of 4 letters which specify
+one of 24 standard grayscale values, where 'A' is black and 'X' is white.
+The order of each set of 4 characters is: top, left, bottom, right. The
+results of calling fl_frame() with a string that is not a multiple
+of 4 characters in length are undefined.
+
+\par
+The only difference between this function and fl_frame2() is the
+order of the line segments.
+
+\par
+See also: <A HREF="common.html#fl_frame">fl_frame boxtype</A>.
+
+<A NAME="fl_frame2"></A> <!-- For old HTML links only ! -->
+void fl_frame2(const char *s, int x, int y, int w, int h);
+
+\par
+The fl_frame2() function draws a series of line segments around
+the given box. The string \a s must contain groups of 4 letters which
+specify one of 24 standard grayscale values, where 'A' is black and 'X' is
+white. The order of each set of 4 characters is: bottom, right, top, left.
+The results of calling fl_frame2() with a string that is
+not a multiple of 4 characters in length are undefined.
+
+\par
+The only difference between this function and fl_frame()
+is the order of the line segments.
+
+<A name="clipping"></A> <!-- For old HTML links only ! -->
+\subsection ssect_Clipping Clipping
+
+You can limit all your drawing to a rectangular region by calling
+fl_push_clip(), and put the drawings back by using fl_pop_clip().
+This rectangle is measured in pixels and is unaffected by the current
+transformation matrix.
+
+In addition, the system may provide clipping when updating windows
+which may be more complex than a simple rectangle.
+
+<A name="fl_push_clip"></A> <!-- For old HTML links only ! -->
+void fl_clip(int x, int y, int w, int h) <br>
+void fl_push_clip(int x, int y, int w, int h)
+
+\par
+Intersect the current clip region with a rectangle and push this new
+region onto the stack. The fl_clip() name is deprecated and
+will be removed from future releases.
+
+<A NAME="fl_push_no_clip"></A> <!-- For old HTML links only ! -->
+void fl_push_no_clip()
+
+\par
+Pushes an empty clip region on the stack so nothing will be clipped.
+
+<A NAME="fl_pop_clip"></A> <!-- For old HTML links only ! -->
+void fl_pop_clip()
+
+\par
+Restore the previous clip region.
+
+\par
+\b Note:
+You must call fl_pop_clip() once for every time you call fl_push_clip().
+If you return to FLTK with the clip stack not empty unpredictable results
+occur.
+
+<A NAME="fl_not_clipped"></A> <!-- For old HTML links only ! -->
+int fl_not_clipped(int x, int y, int w, int h)
+
+\par
+Returns non-zero if any of the rectangle intersects the current clip
+region. If this returns 0 you don't have to draw the object.
+
+\par
+\b Note:
+Under X this returns 2 if the rectangle is partially clipped,
+and 1 if it is entirely inside the clip region.
+
+<A NAME="fl_clip_box"></A> <!-- For old HTML links only ! -->
+int fl_clip_box(int x, int y, int w, int h, int &X, int &Y, int &W, int &H)
+
+\par
+Intersect the rectangle <tt>x,y,w,h</tt> with the current
+clip region and returns the bounding box of the result in
+<tt>X,Y,W,H</tt>. Returns non-zero if the resulting rectangle is
+different than the original. This can be used to limit the
+necessary drawing to a rectangle. \c W and \c H are
+set to zero if the rectangle is completely outside the region.
+
+<A NAME="fl_clip_region"></A> <!-- For old HTML links only ! -->
+void fl_clip_region(Fl_Region r) <br>
+Fl_Region fl_clip_region()
+
+\par
+Replace the top of the clip stack with a clipping region of any shape.
+Fl_Region is an operating system specific type. The second form returns
+the current clipping region.
+
+
+<A NAME="colors"></A> <!-- For old HTML links only ! -->
+\section drawing_colors Colors
+
+FLTK manages colors as 32-bit unsigned integers. Values from
+0 to 255 represent colors from the FLTK 1.0.x standard colormap
+and are allocated as needed on screens without TrueColor
+support. The Fl_Color enumeration type defines the
+standard colors and color cube for the first 256 colors. All of
+these are named with symbols in
+<A href="enumerations.html#colors"><tt><FL/Enumerations.H></tt></A>.
+
+Color values greater than 255 are treated as 24-bit RGB
+values. These are mapped to the closest color supported by the
+screen, either from one of the 256 colors in the FLTK 1.0.x
+colormap or a direct RGB value on TrueColor screens. You can
+generate 24-bit RGB color values using the
+<A HREF="functions.html#fl_rgb_color"><tt>fl_rgb_color()</tt></A>
+function.
+
+<A name="fl_color"></A> <!-- For old HTML links only ! -->
+void fl_color(Fl_Color)
+
+\par
+Sets the color for all subsequent drawing operations.
+
+\par
+For colormapped displays, a color cell will be allocated out
+of <tt>fl_colormap</tt> the first time you use a color. If the
+colormap fills up then a least-squares algorithm is used to find
+the closest color.
+
+Fl_Color fl_color()
+
+\par
+Returns the last fl_color() that was set. This can
+be used for state save/restore.
+
+void fl_color(uchar r, uchar g, uchar b)
+
+\par
+Set the color for all subsequent drawing operations. The
+closest possible match to the RGB color is used. The RGB color
+is used directly on TrueColor displays. For colormap visuals the
+nearest index in the gray ramp or color cube is used.
+
+<A name="lines"></A> <!-- For old HTML links only ! -->
+\subsection ssect_Lines Line Dashes and Thickness
+
+FLTK supports drawing of lines with different styles and
+widths. Full functionality is not available under Windows 95, 98,
+and Me due to the reduced drawing functionality these operating
+systems provide.
+
+<A NAME="fl_line_style"></A> <!-- For old HTML links only ! -->
+void fl_line_style(int style, int width=0, char* dashes=0)
+
+\par
+Set how to draw lines (the "pen"). If you change this it is your
+responsibility to set it back to the default with
+fl_line_style(0).
+
+\par
+\b Note:
+Because of how line styles are implemented on WIN32 systems, you <I>must</I>
+set the line style <I>after</I> setting the drawing color. If you set the
+color after the line style you will lose the line style settings!
+
+<i>style</i> is a bitmask which is a bitwise-OR of the following
+values. If you don't specify a dash type you will get a solid
+line. If you don't specify a cap or join type you will get a
+system-defined default of whatever value is fastest.
+
+\li <tt>FL_SOLID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------</tt>
+\li <tt>FL_DASH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - - - -</tt>
+\li <tt>FL_DOT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .......</tt>
+\li <tt>FL_DASHDOT&nbsp;&nbsp;&nbsp; - . - .</tt>
+\li <tt>FL_DASHDOTDOT - .. -</tt>
+\li <tt>FL_CAP_FLAT</tt>
+\li <tt>FL_CAP_ROUND</tt>
+\li <tt>FL_CAP_SQUARE</tt> (extends past end point 1/2 line width)
+\li <tt>FL_JOIN_MITER</tt> (pointed)
+\li <tt>FL_JOIN_ROUND</tt>
+\li <tt>FL_JOIN_BEVEL</tt> (flat)
+
+<i>width</i> is the number of pixels thick to draw the lines.
+Zero results in the system-defined default, which on both X and
+Windows is somewhat different and nicer than 1.
+
+<!-- NEED 4in -->
+
+<i>dashes</i> is a pointer to an array of dash lengths, measured in
+pixels. The first location is how long to draw a solid portion, the
+next is how long to draw the gap, then the solid, etc. It is
+terminated with a zero-length entry. A <tt>NULL</tt> pointer or a zero-length
+array results in a solid line. Odd array sizes are not supported and
+result in undefined behavior.
+
+\note
+The dashes array does not work under Windows 95, 98, or Me, since those
+operating systems do not support complex line styles.
+
+<A name="fast"></A> <!-- For old HTML links only ! -->
+\subsection ssect_Fast Drawing Fast Shapes
+
+These functions are used to draw almost all the FLTK widgets.
+They draw on exact pixel boundaries and are as fast as possible.
+Their behavior is duplicated exactly on all platforms FLTK is
+ported. It is undefined whether these are affected by the
+<A href="#complex">transformation matrix</A>,
+so you should only call these while the matrix is set to the
+identity matrix (the default).
+
+<A NAME="fl_point"></A> <!-- For old HTML links only ! -->
+void fl_point(int x, int y)
+
+\par
+Draw a single pixel at the given coordinates.
+
+<A NAME="fl_rectf"></A> <!-- For old HTML links only ! -->
+void fl_rectf(int x, int y, int w, int h) <br>
+void fl_rectf(int x, int y, int w, int h)
+
+\par
+Color a rectangle that exactly fills the given bounding box.
+
+void fl_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b)
+
+\par
+Color a rectangle with "exactly" the passed
+<tt>r,g,b</tt> color. On screens with less than 24 bits of
+color this is done by drawing a solid-colored block using
+<A href="#fl_draw_image"><tt>fl_draw_image()</tt></A>
+so that the correct color shade is produced.
+
+<A NAME="fl_rect"></A> <!-- For old HTML links only ! -->
+void fl_rect(int x, int y, int w, int h) <br>
+void fl_rect(int x, int y, int w, int h, Fl_Color c)
+
+\par
+Draw a 1-pixel border <I>inside</I> this bounding box.
+
+<A NAME="fl_line"></A> <!-- For old HTML links only ! -->
+void fl_line(int x, int y, int x1, int y1) <br>
+void fl_line(int x, int y, int x1, int y1, int x2, int y2)
+
+\par
+Draw one or two lines between the given points.
+
+<A NAME="fl_loop"></A> <!-- For old HTML links only ! -->
+void fl_loop(int x, int y, int x1, int y1, int x2, int y2) <br>
+void fl_loop(int x, int y, int x1, int y1, int x2, int y2, int x3, int y3)
+
+\par
+Outline a 3 or 4-sided polygon with lines.
+
+<A NAME="fl_polygon"></A> <!-- For old HTML links only ! -->
+void fl_polygon(int x, int y, int x1, int y1, int x2, int y2) <br>
+void fl_polygon(int x, int y, int x1, int y1, int x2, int y2, int x3, int y3)
+
+\par
+Fill a 3 or 4-sided polygon. The polygon must be convex.
+
+<A NAME="fl_xyline"></A> <!-- For old HTML links only ! -->
+void fl_xyline(int x, int y, int x1) <br>
+void fl_xyline(int x, int y, int x1, int y2) <br>
+void fl_xyline(int x, int y, int x1, int y2, int x3)
+
+\par
+Draw horizontal and vertical lines. A horizontal line is
+drawn first, then a vertical, then a horizontal.
+
+<A NAME="fl_yxline"></A> <!-- For old HTML links only ! -->
+void fl_yxline(int x, int y, int y1) <br>
+void fl_yxline(int x, int y, int y1, int x2) <br>
+void fl_yxline(int x, int y, int y1, int x2, int y3)
+
+\par
+Draw vertical and horizontal lines. A vertical line is drawn
+first, then a horizontal, then a vertical.
+
+<A NAME="fl_pie"></A> <!-- For old HTML links only ! -->
+void fl_arc(int x, int y, int w, int h, double a1, double a2) <br>
+void fl_pie(int x, int y, int w, int h, double a1, double a2)
+
+\par
+Draw ellipse sections using integer coordinates. These
+functions match the rather limited circle drawing code provided
+by X and WIN32. The advantage over using
+<A href="#fl_arc"><tt>fl_arc</tt></A>
+with floating point
+coordinates is that they are faster because they often use the
+hardware, and they draw much nicer small circles, since the
+small sizes are often hard-coded bitmaps.
+
+If a complete circle is drawn it will fit inside the passed bounding
+box. The two angles are measured in degrees counterclockwise from
+3'oclock and are the starting and ending angle of the arc, <tt>a2</tt>
+must be greater or equal to <tt>a1</tt>.
+
+fl_arc() draws a series of lines to approximate the arc.
+Notice that the integer version of fl_arc() has a different
+number of arguments than the
+<A href="#fl_arc"><tt>fl_arc()</tt></A>
+function described later in this chapter.
+
+fl_pie() draws a filled-in pie slice. This slice may
+extend outside the line drawn by fl_arc(); to avoid this
+use <tt>w - 1</tt> and <tt>h - 1</tt>.
+
+<A name="fl_scroll"></A> <!-- For old HTML links only ! -->
+void fl_scroll(int X, int Y, int W, int H, int dx, int dy,
+void (*draw_area)(void*, int,int,int,int), void* data)
+
+\par
+Scroll a rectangle and draw the newly exposed portions. The contents
+of the rectangular area is first shifted by <tt>dx</tt> and
+<tt>dy</tt> pixels. The callback is then called for every newly
+exposed rectangular area,
+
+<A name="complex"></A> <!-- For old HTML links only ! -->
+\subsection ssect_Complex Drawing Complex Shapes
+
+The complex drawing functions let you draw arbitrary shapes
+with 2-D linear transformations. The functionality matches that
+found in the Adobe&reg; PostScript&tm; language. The
+exact pixels that are filled are less defined than for the fast
+drawing functions so that FLTK can take advantage of drawing
+hardware. On both X and WIN32 the transformed vertices are
+rounded to integers before drawing the line segments: this
+severely limits the accuracy of these functions for complex
+graphics, so use OpenGL when greater accuracy and/or performance
+is required.
+
+<A NAME="fl_push_matrix"></A> <!-- For old HTML links only ! -->
+void fl_push_matrix() <br>
+void fl_pop_matrix()
+
+\par
+Save and restore the current transformation. The maximum
+depth of the stack is 4.
+
+<A NAME="fl_scale"></A> <!-- For old HTML links only ! -->
+void fl_scale(float x, float y) <br>
+void fl_scale(float x) <br>
+void fl_translate(float x, float y) <br>
+void fl_rotate(float d) <br>
+void fl_mult_matrix(float a, float b, float c, float d, float x, float y)
+
+\par
+Concatenate another transformation onto the current one. The rotation
+angle is in degrees (not radians) and is counter-clockwise.
+
+<A NAME="fl_transform"></A> <!-- For old HTML links only ! -->
+double fl_transform_x(double x, double y) <br>
+double fl_transform_y(double x, double y) <br>
+double fl_transform_dx(double x, double y) <br>
+double fl_transform_dy(double x, double y) <br>
+void fl_transformed_vertex(double xf, double yf)
+
+\par
+Transform a coordinate or a distance trough the current transformation matrix.
+After transforming a coordinate pair, it can be added to the vertex
+list without any forther translations using <tt>fl_transformed_vertex</tt>.
+
+<A NAME="fl_begin_points"></A> <!-- For old HTML links only ! -->
+void fl_begin_points() <br>
+void fl_end_points()
+
+\par
+Start and end drawing a list of points. Points are added to
+the list with <tt>fl_vertex</tt>.
+
+<A NAME="fl_begin_line"></A> <!-- For old HTML links only ! -->
+void fl_begin_line() <br>
+void fl_end_line()
+
+\par
+Start and end drawing lines.
+
+<A NAME="fl_begin_loop"></A> <!-- For old HTML links only ! -->
+void fl_begin_loop() <br>
+void fl_end_loop()
+
+\par
+Start and end drawing a closed sequence of lines.
+
+<A NAME="fl_begin_polygon"></A> <!-- For old HTML links only ! -->
+void fl_begin_polygon() <br>
+void fl_end_polygon()
+
+\par
+Start and end drawing a convex filled polygon.
+
+<A NAME="fl_begin_complex_polygon"></A> <!-- For old HTML links only ! -->
+void fl_begin_complex_polygon() <br>
+void fl_gap() <br>
+void fl_end_complex_polygon()
+
+\par
+Start and end drawing a complex filled polygon. This polygon
+may be concave, may have holes in it, or may be several
+disconnected pieces. Call fl_gap() to separate loops of
+the path. It is unnecessary but harmless to call
+fl_gap() before the first vertex, after the last one,
+or several times in a row.
+
+\par
+\b Note:
+For portability, you should only draw polygons that appear the same whether
+"even/odd" or "non-zero" winding rules are used to fill them. Holes should
+be drawn in the opposite direction of the outside loop.
+
+\par
+fl_gap() should only be called between
+fl_begin_complex_polygon() and
+fl_end_complex_polygon(). To outline the polygon, use
+fl_begin_loop() and replace each fl_gap() with
+fl_end_loop();fl_begin_loop().
+
+<A NAME="fl_vertex"></A> <!-- For old HTML links only ! -->
+void fl_vertex(float x, float y)
+
+\par
+Add a single vertex to the current path.
+
+<A NAME="fl_curve"></A> <!-- For old HTML links only ! -->
+void fl_curve(float x, float y, float x1, float y1, float x2, float y2,
+float x3, float y3)
+
+\par
+Add a series of points on a Bezier curve to the path. The curve ends
+(and two of the points) are at <tt>x,y</tt> and <tt>x3,y3</tt>.
+
+<A NAME="fl_arc"></A> <!-- For old HTML links only ! -->
+void fl_arc(float x, float y, float r, float start, float end)
+
+\par
+Add a series of points to the current path on the arc of a
+circle; you can get elliptical paths by using scale and rotate
+before calling fl_arc(). <tt>x,y</tt> are the center of
+the circle, and <tt>r</tt> is its radius. fl_arc()
+takes <tt>start</tt> and <tt>end</tt> angles that are measured
+in degrees counter-clockwise from 3 o'clock. If <tt>end</tt> is
+less than <tt>start</tt> then it draws the arc in a clockwise
+direction.
+
+<A NAME="fl_circle"></A> <!-- For old HTML links only ! -->
+void fl_circle(float x, float y, float r)
+
+\par
+fl_circle() is equivalent to fl_arc(...,0,360) but
+may be faster. It must be the <I>only</I> thing in the path: if you
+want a circle as part of a complex polygon you must use fl_arc().
+
+\par
+\b Note:
+fl_circle() draws incorrectly if the transformation is both rotated and
+non-square scaled.
+
+<A name="text"></A> <!-- For old HTML links only ! -->
+\subsection ssect_Text Drawing Text
+
+All text is drawn in the
+<A href="#fl_font">current font</A>.
+It is undefined whether this location or the characters are
+modified by the current transformation.
+
+<A NAME="fl_draw"></A> <!-- For old HTML links only ! -->
+void fl_draw(const char *, int x, int y) <br>
+void fl_draw(const char *, int n, int x, int y)
+
+\par
+Draw a nul-terminated string or an array of <tt>n</tt> characters
+starting at the given location. Text is aligned to the left and to
+the baseline of the font. To align to the bottom, subtract fl_descent() from
+<i>y</i>. To align to the top, subtract fl_descent() and add fl_height().
+This version of fl_draw provides direct access to
+the text drawing function of the underlying OS. It does not apply any
+special handling to control characters.
+
+void fl_draw(const char *, int x, int y, int w, int h,
+Fl_Align align, Fl_Image *img = 0, int draw_symbols = 1)
+
+\par
+Fancy string drawing function which is used to draw all the
+labels. The string is formatted and aligned inside the passed
+box. Handles '\\t' and '\\n', expands all other control
+characters to ^X, and aligns inside or against the edges of the
+box described by <i>x</i>, <i>y</i>, <i>w</i> and <i>h</i>. See
+Fl_Widget::align() for values for <tt>align</tt>. The value
+<tt>FL_ALIGN_INSIDE</tt> is ignored, as this function always
+prints inside the box.
+
+\par
+If <tt>img</tt> is provided and is not <tt>NULL</tt>, the
+image is drawn above or below the text as specified by the
+<tt>align</tt> value.
+
+\par
+The <tt>draw_symbols</tt> argument specifies whether or not
+to look for symbol names starting with the "@" character.
+
+\par
+The text length is limited to 1024 caracters per line.
+
+<A NAME="fl_measure"></A> <!-- For old HTML links only ! -->
+void fl_measure(const char *, int &w, int &h, int draw_symbols = 1)
+
+\par
+Measure how wide and tall the string will be when printed by
+the <tt>fl_draw(...align)</tt> function. If the incoming
+<tt>w</tt> is non-zero it will wrap to that width.
+
+<A NAME="fl_height"></A> <!-- For old HTML links only ! -->
+int fl_height()
+
+\par
+Recommended minimum line spacing for the current font. You
+can also just use the value of <tt>size</tt> passed to
+<A href="#fl_font"><tt>fl_font()</tt></A>.
+
+<A NAME="fl_descent"></A> <!-- For old HTML links only ! -->
+int fl_descent()
+
+\par
+Recommended distance above the bottom of a fl_height() tall box to draw
+the text at so it looks centered vertically in that box.
+
+<A NAME="fl_width"></A> <!-- For old HTML links only ! -->
+float fl_width(const char*) <br>
+float fl_width(const char*, int n) <br>
+float fl_width(uchar)
+
+\par
+Return the pixel width of a nul-terminated string, a sequence of <tt>n</tt>
+characters, or a single character in the current font.
+
+<A NAME="fl_shortcut_label"></A> <!-- For old HTML links only ! -->
+const char *fl_shortcut_label(ulong)
+
+\par
+Unparse a shortcut value as used by Fl_Button or Fl_Menu_Item
+into a human-readable string like "Alt+N". This only
+works if the shortcut is a character key or a numbered function
+key. If the shortcut is zero an empty string is returned. The
+return value points at a static buffer that is overwritten with
+each call.
+
+<A name="fonts"></A> <!-- For old HTML links only ! -->
+\subsection ssect_Fonts Fonts
+
+FLTK supports a set of standard fonts based on the Times,
+Helvetica/Arial, Courier, and Symbol typefaces, as well as
+custom fonts that your application may load. Each font is
+accessed by an index into a font table.
+
+Initially only the first 16 faces are filled in. There are
+symbolic names for them: FL_HELVETICA,
+FL_TIMES, FL_COURIER, and modifier values
+FL_BOLD and FL_ITALIC which can be added to
+these, and FL_SYMBOL and FL_ZAPF_DINGBATS.
+Faces greater than 255 cannot be used in Fl_Widget
+labels, since Fl_Widget stores the index as a byte.
+
+<A name="fl_font"></A> <!-- For old HTML links only ! -->
+void fl_font(int face, int size)
+
+\par
+Set the current font, which is then used by the routines
+described above. You may call this outside a draw context if
+necessary to call fl_width(), but on X this will open
+the display.
+
+\par
+The font is identified by a <tt>face</tt> and a
+<tt>size</tt>. The size of the font is measured in
+<tt>pixels</tt> and not "points". Lines should be spaced
+<tt>size</tt> pixels apart or more.
+
+<A NAME="fl_size"></A> <!-- For old HTML links only ! -->
+int fl_font() <br>
+int fl_size()
+
+\par
+Returns the face and size set by the most recent call to
+fl_font(a,b). This can be used to save/restore the font.
+
+<A NAME="character_encoding"></A> <!-- For old HTML links only ! -->
+\subsection ssect_CharacterEncoding Character Encoding
+
+FLTK 1 supports western character sets using the eight bit encoding
+of the user-selected global code page. For MS Windows and X11, the code
+page is assumed to be Windows-1252/Latin1, a superset to ISO 8859-1.
+On Mac OS X, we assume MacRoman.
+
+FLTK provides the functions fl_latin1_to_local(),
+fl_local_to_latin1(), fl_mac_roman_to_local(), and
+fl_local_to_mac_roman() to convert strings between both
+encodings. These functions are only required if your source
+code contains "C"-strings with international characters and
+if this source will be compiled on multiple platforms.
+
+<!-- Editor's note:
+ ** Caution: the following text contains utf-8 encoded characters.
+ ** be careful when using non-utf-8-aware editors !
+-->
+
+Assuming that the following source code was written on MS Windows,
+this example will output the correct label on OS X and X11 as well.
+Without the conversion call, the label on OS X would read
+<tt>Fahrvergn¸gen</tt> with a deformed umlaut u ("cedille",
+html "&cedil;").
+\code
+ btn = new Fl_Button(10, 10, 300, 25);
+ btn->copy_label(fl_latin1_to_local("Fahrvergnügen"));
+\endcode
+
+\note If your application uses characters that are not part of both
+ encodings, or it will be used in areas that commonly use different
+ code pages, you might consider upgrading to FLTK 2 which supports
+ UTF-8 encoding.
+
+\todo drawing.dox: I fixed the above encoding problem of these \&cedil;
+ and umlaut characters, but this text is obsoleted by FLTK 1.3
+ with utf-8 encoding, or must be rewritten accordingly:
+ How to use native (e.g. Windows "ANSI", or ISO-8859-x)
+ encoding in embedded strings for labels, error messages
+ and more. Please check this (utf-8) encoding on different
+ OS'es and with different language and font environments.
+
+For more information about character encoding, unicode and utf-8
+see chapter \ref unicode.
+
+<A name="overlay"></A> <!-- For old HTML links only ! -->
+\subsection ssect_Overlay Drawing Overlays
+
+These functions allow you to draw interactive selection rectangles
+without using the overlay hardware. FLTK will XOR a single rectangle
+outline over a window.
+
+void fl_overlay_rect(int x, int y, int w, int h); <br>
+void fl_overlay_clear();
+
+\par
+fl_overlay_rect() draws a selection rectangle, erasing any
+previous rectangle by XOR'ing it first. fl_overlay_clear()
+will erase the rectangle without drawing a new one.
+
+\par
+Using these functions is tricky. You should make a widget
+with both a handle() and draw() method.
+draw() should call fl_overlay_clear() before
+doing anything else. Your handle() method should call
+window()->make_current() and then
+fl_overlay_rect() after FL_DRAG events, and
+should call fl_overlay_clear() after a
+FL_RELEASE event.
+
+
+<A NAME="images"></A> <!-- For old HTML links only ! -->
+\section drawing_images Drawing Images
+
+To draw images, you can either do it directly from data in
+your memory, or you can create a Fl_Image object. The advantage of
+drawing directly is that it is more intuitive, and it is faster
+if the image data changes more often than it is redrawn. The
+advantage of using the object is that FLTK will cache translated
+forms of the image (on X it uses a server pixmap) and thus
+redrawing is <I>much</I> faster.
+
+\subsection ssect_DirectImageDrawing Direct Image Drawing
+
+The behavior when drawing images when the current
+transformation matrix is not the identity is not defined, so you
+should only draw images when the matrix is set to the identity.
+
+<A NAME="fl_draw_image"></A> <!-- For old HTML links only ! -->
+void fl_draw_image(const uchar *, int X, int Y, int W, int H,
+int D = 3, int LD = 0) <br>
+void fl_draw_image_mono(const uchar *, int X, int Y, int W, int H,
+int D = 1, int LD = 0)
+
+\par
+Draw an 8-bit per color RGB or luminance image. The pointer
+points at the "r" data of the top-left pixel. Color
+data must be in <tt>r,g,b</tt> order. <tt>X,Y</tt> are where to
+put the top-left corner. <tt>W</tt> and <tt>H</tt> define the
+size of the image. <tt>D</tt> is the delta to add to the pointer
+between pixels, it may be any value greater or equal to
+<tt>3</tt>, or it can be negative to flip the image
+horizontally. <tt>LD</tt> is the delta to add to the pointer
+between lines (if 0 is passed it uses <tt>W * D</tt>), and may
+be larger than <tt>W * D</tt> to crop data, or negative to flip
+the image vertically.
+
+\par
+It is highly recommended that you put the following code before the
+first show() of <I>any</I> window in your program to get rid
+of the dithering if possible:
+
+\code
+Fl::visual(FL_RGB);
+\endcode
+
+\par
+Gray scale (1-channel) images may be drawn. This is done if
+<tt>abs(D)</tt> is less than 3, or by calling
+fl_draw_image_mono(). Only one 8-bit sample is used for
+each pixel, and on screens with different numbers of bits for
+red, green, and blue only gray colors are used. Setting
+<tt>D</tt> greater than 1 will let you display one channel of a
+color image.
+
+\par
+\b Note:
+The X version does not support all possible visuals.
+If FLTK cannot draw the image in the current visual it
+will abort. FLTK supports any visual of 8 bits or less,
+and all common TrueColor visuals up to 32 bits.
+
+typedef void (*fl_draw_image_cb)(void *, int x, int y, int w, uchar *) <br>
+void fl_draw_image(fl_draw_image_cb, void *, int X, int Y, int W, int H,
+int D = 3) <br>
+void fl_draw_image_mono(fl_draw_image_cb, void *, int X, int Y, int W, int H,
+int D = 1)
+
+\par
+Call the passed function to provide each scan line of the
+image. This lets you generate the image as it is being drawn,
+or do arbitrary decompression of stored data, provided it can be
+decompressed to individual scan lines easily.
+
+\par
+The callback is called with the <tt>void *</tt> user data
+pointer which can be used to point at a structure of information
+about the image, and the <tt>x</tt>, <tt>y</tt>, and <tt>w</tt>
+of the scan line desired from the image. 0,0 is the upper-left
+corner of the image, <I>not <tt>X,Y</tt></I>. A pointer to a
+buffer to put the data into is passed. You must copy <tt>w</tt>
+pixels from scanline <tt>y</tt>, starting at pixel <tt>x</tt>,
+to this buffer.
+
+\par
+Due to cropping, less than the whole image may be requested.
+So <tt>x</tt> may be greater than zero, the first <tt>y</tt> may
+be greater than zero, and <tt>w</tt> may be less than
+<tt>W</tt>. The buffer is long enough to store the entire <tt>W * D</tt>
+pixels, this is for convenience with some decompression
+schemes where you must decompress the entire line at once:
+decompress it into the buffer, and then if <tt>x</tt> is not
+zero, copy the data over so the <tt>x</tt>'th pixel is at the
+start of the buffer.
+
+\par
+You can assume the <tt>y</tt>'s will be consecutive, except
+the first one may be greater than zero.
+
+\par
+If <tt>D</tt> is 4 or more, you must fill in the unused bytes
+with zero.
+
+<A NAME="fl_draw_pixmap"></A> <!-- For old HTML links only ! -->
+int fl_draw_pixmap(char **data, int X, int Y, Fl_Color = FL_GRAY)
+
+\par
+Draws XPM image data, with the top-left corner at the given position.
+The image is dithered on 8-bit displays so you won't lose color space
+for programs displaying both images and pixmaps. This function returns
+zero if there was any error decoding the XPM data.
+
+\par
+To use an XPM, do:
+
+\code
+#include "foo.xpm"
+...
+fl_draw_pixmap(foo, X, Y);
+\endcode
+
+\par
+Transparent colors are replaced by the optional
+Fl_Color argument. To draw with true transparency you must
+use the Fl_Pixmap class.
+
+<A NAME="fl_measure_pixmap"></A> <!-- For old HTML links only ! -->
+int fl_measure_pixmap(char **data, int &w, int &h)
+
+\par
+An XPM image contains the dimensions in its data. This
+function finds and returns the width and height. The return
+value is non-zero if the dimensions were parsed ok and zero if
+there was any problem.
+
+\subsection ssect_DirectImageReading Direct Image Reading
+
+FLTK provides a single function for reading from the current
+window or off-screen buffer into a RGB(A) image buffer.
+
+<A NAME="fl_read_image"></A> <!-- For old HTML links only ! -->
+uchar *fl_read_image(uchar *p, int X, int Y, int W, int H, int alpha = 0);
+
+\par
+Read a RGB(A) image from the current window or off-screen
+buffer. The <tt>p</tt> argument points to a buffer that can hold
+the image and must be at least <tt>W*H*3</tt> bytes when reading
+RGB images and <tt>W*H*4</tt> bytes when reading RGBA images. If
+<tt>NULL</tt>, <tt>fl_read_image()</tt> will create an array of
+the proper size which can be freed using <tt>delete[]</tt>.
+
+\par
+The <tt>alpha</tt> parameter controls whether an alpha
+channel is created and the value that is placed in the alpha
+channel. If 0, no alpha channel is generated.
+
+<A name="Fl_Image"></A> <!-- For old HTML links only ! -->
+\subsection ssect_Fl_Image Image Classes
+
+FLTK provides a base image class called Fl_Image which supports
+creating, copying, and drawing images of various kinds, along
+with some basic color operations. Images can be used as labels
+for widgets using the image() and deimage() methods or drawn directly.
+
+The Fl_Image class does almost nothing by itself, but is instead
+supported by three basic image types:
+
+\li Fl_Bitmap
+\li Fl_Pixmap
+\li Fl_RGB_Image
+
+The Fl_Bitmap class encapsulates a mono-color bitmap image.
+The draw() method draws the image using the current drawing
+color.
+
+The Fl_Pixmap class encapsulates a colormapped image.
+The draw() method draws the image using the colors in the
+file, and masks off any transparent colors automatically.
+
+The Fl_RGB_Image class encapsulates a full-color
+(or grayscale) image with 1 to 4 color components. Images with
+an even number of components are assumed to contain an
+alpha channel that is used for transparency. The transparency
+provided by the draw() method is either a 24-bit
+blend against the existing window contents or a "screen door"
+transparency mask, depending on the platform and screen color depth.
+
+<A NAME="fl_can_do_alpha_blending"></A> <!-- For old HTML links only ! -->
+char fl_can_do_alpha_blending()
+
+\par
+fl_can_do_alpha_blending() will return 1, if your
+platform supports true alpha blending for RGBA images, or 0,
+if FLTK will use screen door transparency.
+
+FLTK also provides several image classes based on the three
+standard image types for common file formats:
+
+\li Fl_GIF_Image
+\li Fl_JPEG_Image
+\li Fl_PNG_Image
+\li Fl_PNM_Image
+\li Fl_XBM_Image
+\li Fl_XPM_Image
+
+Each of these image classes load a named file of the
+corresponding format. The Fl_Shared_Image class
+can be used to load any type of image file - the class examines
+the file and constructs an image of the appropriate type.
+
+Finally, FLTK provides a special image class called Fl_Tiled_Image to
+tile another image object in the specified area. This class can be
+used to tile a background image in a Fl_Group widget, for example.
+
+virtual void copy(); <br>
+virtual void copy(int w, int h);
+
+\par
+The copy() method creates a copy of the image. The second form
+specifies the new size of the image - the image is resized using the
+nearest-neighbor algorithm.
+
+void draw(int x, int y, int w, int h, int ox = 0, int oy = 0);
+
+\par
+The draw() method draws the image object.
+<tt>x,y,w,h</tt> indicates a destination rectangle.
+<tt>ox,oy,w,h</tt> is a source rectangle. This source rectangle
+is copied to the destination. The source rectangle may extend
+outside the image, i.e. <tt>ox</tt> and <tt>oy</tt> may be
+negative and <tt>w</tt> and <tt>h</tt> may be bigger than the
+image, and this area is left unchanged.
+
+void draw(int x, int y)
+
+\par
+Draws the image with the upper-left corner at <tt>x,y</tt>.
+This is the same as doing draw(x,y,img->w(),img->h(),0,0).
+
+<A NAME="offscreen"></A> <!-- For old HTML links only ! -->
+\subsection ssect_Offscreen Offscreen Drawing
+
+Sometimes it can be very useful to generate a complex drawing
+in memory first and copy it to the screen at a later point in
+time. This technique can significantly reduce the amount of
+repeated drawing. Fl_Double_Window uses offscreen rendering
+to avoid flickering on systems that don't support
+double-buffering natively.
+
+<A NAME="fl_create_offscreen"></A> <!-- For old HTML links only ! -->
+Fl_Offscreen fl_create_offscreen(int w, int h)
+
+\par
+Create an RGB offscreen buffer with <tt>w*h</tt> pixels.
+
+<A NAME="fl_delete_offscreen"></A> <!-- For old HTML links only ! -->
+void fl_delete_offscreen(Fl_Offscreen)
+
+\par
+Delete a previously created offscreen buffer. All drawings are lost.
+
+<A NAME="fl_begin_offscreen"></A> <!-- For old HTML links only ! -->
+void fl_begin_offscreen(Fl_Offscreen)
+
+\par
+Send all subsequent drawing commands to this offscreen buffer.
+FLTK can draw into a buffer at any time. There is no need to wait for
+an Fl_Widget::draw() to occur.
+
+<A NAME="fl_end_offscreen"></A> <!-- For old HTML links only ! -->
+void fl_end_offscreen()
+
+\par
+Quit sending drawing commands to this offscreen buffer.
+
+<A NAME="fl_copy_offscreen"></A> <!-- For old HTML links only ! -->
+void fl_copy_offscreen(int x, int y, int w, int h,
+Fl_Offscreen osrc, int srcx, int srcy)
+
+\par
+Copy a rectangular area of the size <tt>w*h</tt> from <tt>srcx, srcy</tt>
+in the offscreen buffer into the current buffer at <tt>x, y</tt>.
+
+\htmlonly
+<hr>
+<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
+<a class="el" href="editor.html">[Previous]&nbsp; 4 - Designing a Simple Text Editor</a>&nbsp;
+<a class="el" href="events.html">[Next]&nbsp; 6 - Handling Events</a>&nbsp;
+\endhtmlonly
+*/
diff --git a/documentation/src_doc/editor-replace.gif b/documentation/src_doc/editor-replace.gif
new file mode 100644
index 000000000..73c285664
--- /dev/null
+++ b/documentation/src_doc/editor-replace.gif
Binary files differ
diff --git a/documentation/src_doc/editor.dox b/documentation/src_doc/editor.dox
new file mode 100644
index 000000000..768a3afb7
--- /dev/null
+++ b/documentation/src_doc/editor.dox
@@ -0,0 +1,910 @@
+/**
+
+ \page editor 4 - Designing a Simple Text Editor
+
+This chapter takes you through the design of a simple
+FLTK-based text editor.
+
+\section editor_goals Determining the Goals of the Text Editor
+
+Since this will be the first big project you'll be doing with FLTK,
+lets define what we want our text editor to do:
+
+-# Provide a menubar/menus for all functions.
+-# Edit a single text file, possibly with multiple views.
+-# Load from a file.
+-# Save to a file.
+-# Cut/copy/delete/paste functions.
+-# Search and replace functions.
+-# Keep track of when the file has been changed.
+
+<!-- NEED 4in -->
+
+\section editor_main_window Designing the Main Window
+
+Now that we've outlined the goals for our editor, we can begin with
+the design of our GUI. Obviously the first thing that we need is a
+window, which we'll place inside a class called <tt>EditorWindow</tt>:
+
+\code
+class EditorWindow : public Fl_Double_Window {
+ public:
+ EditorWindow(int w, int h, const char* t);
+ ~EditorWindow();
+
+ Fl_Window *replace_dlg;
+ Fl_Input *replace_find;
+ Fl_Input *replace_with;
+ Fl_Button *replace_all;
+ Fl_Return_Button *replace_next;
+ Fl_Button *replace_cancel;
+
+ Fl_Text_Editor *editor;
+ char search[256];
+};
+\endcode
+
+\section editor_variables Variables
+
+Our text editor will need some global variables to keep track of things:
+
+\code
+int changed = 0;
+char filename[256] = "";
+Fl_Text_Buffer *textbuf;
+\endcode
+
+The <tt>textbuf</tt> variable is the text editor buffer for
+our window class described previously. We'll cover the other
+variables as we build the application.
+
+\section editor_menubars Menubars and Menus
+
+The first goal requires us to use a menubar and menus that
+define each function the editor needs to perform. The
+<A href="Fl_Menu_Item.html"><tt>Fl_Menu_Item</tt></A>
+structure is used to define the menus and items in a menubar:
+
+\code
+Fl_Menu_Item menuitems[] = {
+ { "&File", 0, 0, 0, FL_SUBMENU },
+ { "&New File", 0, (Fl_Callback *)new_cb },
+ { "&Open File...", FL_CTRL + 'o', (Fl_Callback *)open_cb },
+ { "&Insert File...", FL_CTRL + 'i', (Fl_Callback *)insert_cb, 0, FL_MENU_DIVIDER },
+ { "&Save File", FL_CTRL + 's', (Fl_Callback *)save_cb },
+ { "Save File &As...", FL_CTRL + FL_SHIFT + 's', (Fl_Callback *)saveas_cb, 0, FL_MENU_DIVIDER },
+ { "New &View", FL_ALT + 'v', (Fl_Callback *)view_cb, 0 },
+ { "&Close View", FL_CTRL + 'w', (Fl_Callback *)close_cb, 0, FL_MENU_DIVIDER },
+ { "E&xit", FL_CTRL + 'q', (Fl_Callback *)quit_cb, 0 },
+ { 0 },
+
+ { "&Edit", 0, 0, 0, FL_SUBMENU },
+ { "&Undo", FL_CTRL + 'z', (Fl_Callback *)undo_cb, 0, FL_MENU_DIVIDER },
+ { "Cu&t", FL_CTRL + 'x', (Fl_Callback *)cut_cb },
+ { "&Copy", FL_CTRL + 'c', (Fl_Callback *)copy_cb },
+ { "&Paste", FL_CTRL + 'v', (Fl_Callback *)paste_cb },
+ { "&Delete", 0, (Fl_Callback *)delete_cb },
+ { 0 },
+
+ { "&Search", 0, 0, 0, FL_SUBMENU },
+ { "&Find...", FL_CTRL + 'f', (Fl_Callback *)find_cb },
+ { "F&ind Again", FL_CTRL + 'g', find2_cb },
+ { "&Replace...", FL_CTRL + 'r', replace_cb },
+ { "Re&place Again", FL_CTRL + 't', replace2_cb },
+ { 0 },
+
+ { 0 }
+};
+\endcode
+
+Once we have the menus defined we can create the
+<tt>Fl_Menu_Bar</tt> widget and assign the menus to it with:
+
+\code
+Fl_Menu_Bar *m = new Fl_Menu_Bar(0, 0, 640, 30);
+m->copy(menuitems);
+\endcode
+
+We'll define the callback functions later.
+
+\section editor_editing Editing the Text
+
+To keep things simple our text editor will use the
+<A HREF="Fl_Text_Editor.html"><tt>Fl_Text_Editor</tt></A>
+widget to edit the text:
+
+\code
+w->editor = new Fl_Text_Editor(0, 30, 640, 370);
+w->editor->buffer(textbuf);
+\endcode
+
+So that we can keep track of changes to the file, we also want to add
+a "modify" callback:
+
+\code
+textbuf->add_modify_callback(changed_cb, w);
+textbuf->call_modify_callbacks();
+\endcode
+
+Finally, we want to use a mono-spaced font like <tt>FL_COURIER</tt>:
+
+\code
+w->editor->textfont(FL_COURIER);
+\endcode
+
+\section editor_replace_dialog The Replace Dialog
+
+We can use the FLTK convenience functions for many of the
+editor's dialogs, however the replace dialog needs its own
+custom window. To keep things simple we will have a
+"find" string, a "replace" string, and
+"replace all", "replace next", and
+"cancel" buttons. The strings are just
+<tt>Fl_Input</tt> widgets, the "replace all" and
+"cancel" buttons are <tt>Fl_Button</tt> widgets, and
+the "replace next " button is a
+<tt>Fl_Return_Button</tt> widget:
+
+\image html editor-replace.gif "Figure 4-1: The search and replace dialog"
+
+\code
+Fl_Window *replace_dlg = new Fl_Window(300, 105, "Replace");
+Fl_Input *replace_find = new Fl_Input(70, 10, 200, 25, "Find:");
+Fl_Input *replace_with = new Fl_Input(70, 40, 200, 25, "Replace:");
+Fl_Button *replace_all = new Fl_Button(10, 70, 90, 25, "Replace All");
+Fl_Button *replace_next = new Fl_Button(105, 70, 120, 25, "Replace Next");
+Fl_Button *replace_cancel = new Fl_Button(230, 70, 60, 25, "Cancel");
+\endcode
+
+\section editor_callbacks Callbacks
+
+Now that we've defined the GUI components of our editor, we
+need to define our callback functions.
+
+\subsection editor_changed_cb changed_cb()
+
+This function will be called whenever the user changes any text in the
+<tt>editor</tt> widget:
+
+\code
+void changed_cb(int, int nInserted, int nDeleted,int, const char*, void* v) {
+ if ((nInserted || nDeleted) && !loading) changed = 1;
+ EditorWindow *w = (EditorWindow *)v;
+ set_title(w);
+ if (loading) w->editor->show_insert_position();
+}
+\endcode
+
+The <tt>set_title()</tt> function is one that we will write to set
+the changed status on the current file. We're doing it this way
+because we want to show the changed status in the window's
+title bar.
+
+\subsection editor_copy_cb copy_cb()
+
+This callback function will call
+<A href="Fl_Text_Editor.html#Fl_Text_Editor.kf_copy"><tt>kf_copy()</tt></A>
+to copy the currently selected text to the clipboard:
+
+\code
+void copy_cb(Fl_Widget*, void* v) {
+ EditorWindow* e = (EditorWindow*)v;
+ Fl_Text_Editor::kf_copy(0, e->editor);
+}
+\endcode
+
+\subsection editor_cut_cb cut_cb()
+
+This callback function will call
+<A href="Fl_Text_Editor.html#Fl_Text_Editor.kf_cut"><tt>kf_cut()</tt></A>
+to cut the currently selected text to the clipboard:
+
+\code
+void cut_cb(Fl_Widget*, void* v) {
+ EditorWindow* e = (EditorWindow*)v;
+ Fl_Text_Editor::kf_cut(0, e->editor);
+}
+\endcode
+
+\subsection editor_delete_cb delete_cb()
+
+This callback function will call
+<A href="Fl_Text_Buffer.html#Fl_Text_Buffer.remove_selection">
+<tt>remove_selection()</tt></A>
+to delete the currently selected text to the clipboard:
+
+\code
+void delete_cb(Fl_Widget*, void* v) {
+ textbuf->remove_selection();
+}
+\endcode
+
+\subsection editor_find_cb find_cb()
+
+This callback function asks for a search string using the
+<A href="functions.html#fl_input2"><tt>fl_input()</tt></A>
+convenience function and then calls the <tt>find2_cb()</tt>
+function to find the string:
+
+\code
+void find_cb(Fl_Widget* w, void* v) {
+ EditorWindow* e = (EditorWindow*)v;
+ const char *val;
+
+ val = fl_input("Search String:", e->search);
+ if (val != NULL) {
+ // User entered a string - go find it!
+ strcpy(e->search, val);
+ find2_cb(w, v);
+ }
+\endcode
+
+\subsection editor_find2_cb find2_cb()
+
+This function will find the next occurrence of the search
+string. If the search string is blank then we want to pop up the
+search dialog:
+
+\code
+void find2_cb(Fl_Widget* w, void* v) {
+ EditorWindow* e = (EditorWindow*)v;
+ if (e->search[0] == '\0') {
+ // Search string is blank; get a new one...
+ find_cb(w, v);
+ return;
+ }
+
+ int pos = e->editor->insert_position();
+ int found = textbuf->search_forward(pos, e->search, &pos);
+ if (found) {
+ // Found a match; select and update the position...
+ textbuf->select(pos, pos+strlen(e->search));
+ e->editor->insert_position(pos+strlen(e->search));
+ e->editor->show_insert_position();
+ }
+ else fl_alert("No occurrences of \'%s\' found!", e->search);
+}
+\endcode
+
+If the search string cannot be found we use the
+<A href="functions.html#fl_alert"><tt>fl_alert()</tt></A>
+convenience function to display a message to that effect.
+
+\subsection editor_new_cb new_cb()
+
+This callback function will clear the editor widget and current
+filename. It also calls the <tt>check_save()</tt> function to give the
+user the opportunity to save the current file first as needed:
+
+\code
+void new_cb(Fl_Widget*, void*) {
+ if (!check_save()) return;
+
+ filename[0] = '\0';
+ textbuf->select(0, textbuf->length());
+ textbuf->remove_selection();
+ changed = 0;
+ textbuf->call_modify_callbacks();
+}
+\endcode
+
+\subsection editor_open_cb open_cb()
+
+This callback function will ask the user for a filename and then load
+the specified file into the input widget and current filename. It also
+calls the <tt>check_save()</tt> function to give the user the
+opportunity to save the current file first as needed:
+
+\code
+void open_cb(Fl_Widget*, void*) {
+ if (!check_save()) return;
+
+ char *newfile = fl_file_chooser("Open File?", "*", filename);
+ if (newfile != NULL) load_file(newfile, -1);
+}
+\endcode
+
+We call the <tt>load_file()</tt> function to actually load the file.
+
+\subsection editor_paste_cb paste_cb()
+
+This callback function will call
+<A href="Fl_Text_Editor.html#Fl_Text_Editor.kf_paste"><tt>kf_paste()</tt></A>
+to paste the clipboard at the current position:
+
+\code
+void paste_cb(Fl_Widget*, void* v) {
+ EditorWindow* e = (EditorWindow*)v;
+ Fl_Text_Editor::kf_paste(0, e->editor);
+}
+\endcode
+
+\subsection editor_quit_cb quit_cb()
+
+The quit callback will first see if the current file has been
+modified, and if so give the user a chance to save it. It then exits
+from the program:
+
+\code
+void quit_cb(Fl_Widget*, void*) {
+ if (changed && !check_save())
+ return;
+
+ exit(0);
+}
+\endcode
+
+\subsection editor_replace_cb replace_cb()
+
+The replace callback just shows the replace dialog:
+
+\code
+void replace_cb(Fl_Widget*, void* v) {
+ EditorWindow* e = (EditorWindow*)v;
+ e->replace_dlg->show();
+}
+\endcode
+
+\subsection editor_replace2_cb replace2_cb()
+
+This callback will replace the next occurrence of the replacement
+string. If nothing has been entered for the replacement string, then
+the replace dialog is displayed instead:
+
+\code
+void replace2_cb(Fl_Widget*, void* v) {
+ EditorWindow* e = (EditorWindow*)v;
+ const char *find = e->replace_find->value();
+ const char *replace = e->replace_with->value();
+
+ if (find[0] == '\0') {
+ // Search string is blank; get a new one...
+ e->replace_dlg->show();
+ return;
+ }
+
+ e->replace_dlg->hide();
+
+ int pos = e->editor->insert_position();
+ int found = textbuf->search_forward(pos, find, &pos);
+
+ if (found) {
+ // Found a match; update the position and replace text...
+ textbuf->select(pos, pos+strlen(find));
+ textbuf->remove_selection();
+ textbuf->insert(pos, replace);
+ textbuf->select(pos, pos+strlen(replace));
+ e->editor->insert_position(pos+strlen(replace));
+ e->editor->show_insert_position();
+ }
+ else fl_alert("No occurrences of \'%s\' found!", find);
+}
+\endcode
+
+\subsection editor_replall_cb replall_cb()
+
+This callback will replace all occurrences of the search
+string in the file:
+
+\code
+void replall_cb(Fl_Widget*, void* v) {
+ EditorWindow* e = (EditorWindow*)v;
+ const char *find = e->replace_find->value();
+ const char *replace = e->replace_with->value();
+
+ find = e->replace_find->value();
+ if (find[0] == '\0') {
+ // Search string is blank; get a new one...
+ e->replace_dlg->show();
+ return;
+ }
+
+ e->replace_dlg->hide();
+
+ e->editor->insert_position(0);
+ int times = 0;
+
+ // Loop through the whole string
+ for (int found = 1; found;) {
+ int pos = e->editor->insert_position();
+ found = textbuf->search_forward(pos, find, &pos);
+
+ if (found) {
+ // Found a match; update the position and replace text...
+ textbuf->select(pos, pos+strlen(find));
+ textbuf->remove_selection();
+ textbuf->insert(pos, replace);
+ e->editor->insert_position(pos+strlen(replace));
+ e->editor->show_insert_position();
+ times++;
+ }
+ }
+
+ if (times) fl_message("Replaced %d occurrences.", times);
+ else fl_alert("No occurrences of \'%s\' found!", find);
+}
+\endcode
+
+\subsection editor_replcan_cb replcan_cb()
+
+This callback just hides the replace dialog:
+
+\code
+void replcan_cb(Fl_Widget*, void* v) {
+ EditorWindow* e = (EditorWindow*)v;
+ e->replace_dlg->hide();
+}
+\endcode
+
+\subsection editor_save_cb save_cb()
+
+This callback saves the current file. If the current filename is
+blank it calls the "save as" callback:
+
+\code
+void save_cb(void) {
+ if (filename[0] == '\0') {
+ // No filename - get one!
+ saveas_cb();
+ return;
+ }
+ else save_file(filename);
+}
+\endcode
+
+The <tt>save_file()</tt> function saves the current file to the
+specified filename.
+
+\subsection editor_saveas_cb saveas_cb()
+
+This callback asks the user for a filename and saves the current file:
+
+\code
+void saveas_cb(void) {
+ char *newfile;
+
+ newfile = fl_file_chooser("Save File As?", "*", filename);
+ if (newfile != NULL) save_file(newfile);
+}
+\endcode
+
+The <tt>save_file()</tt> function saves the current file to the
+specified filename.
+
+\section editor_other_functions Other Functions
+
+Now that we've defined the callback functions, we need our support
+functions to make it all work:
+
+\subsection editor_check_save check_save()
+
+This function checks to see if the current file needs to be saved. If
+so, it asks the user if they want to save it:
+
+\code
+int check_save(void) {
+ if (!changed) return 1;
+
+ int r = fl_choice("The current file has not been saved.\n"
+ "Would you like to save it now?",
+ "Cancel", "Save", "Discard");
+
+ if (r == 1) {
+ save_cb(); // Save the file...
+ return !changed;
+ }
+
+ return (r == 2) ? 1 : 0;
+}
+\endcode
+
+\subsection editor_load_file load_file()
+
+This function loads the specified file into the <tt>textbuf</tt> class:
+
+\code
+int loading = 0;
+void load_file(char *newfile, int ipos) {
+ loading = 1;
+ int insert = (ipos != -1);
+ changed = insert;
+ if (!insert) strcpy(filename, "");
+ int r;
+ if (!insert) r = textbuf->loadfile(newfile);
+ else r = textbuf->insertfile(newfile, ipos);
+ if (r)
+ fl_alert("Error reading from file \'%s\':\n%s.", newfile, strerror(errno));
+ else
+ if (!insert) strcpy(filename, newfile);
+ loading = 0;
+ textbuf->call_modify_callbacks();
+}
+\endcode
+
+When loading the file we use the
+<A href="Fl_Text_Buffer.html#Fl_Text_Buffer.loadfile"><tt>loadfile()</tt></A>
+method to "replace" the text in the buffer, or the
+<A href="Fl_Text_Buffer.html#Fl_Text_Buffer.insertfile"><tt>insertfile()</tt></A>
+method to insert text in the buffer from the named file.
+
+\subsection editor_save_file save_file()
+
+This function saves the current buffer to the specified file:
+
+\code
+void save_file(char *newfile) {
+ if (textbuf->savefile(newfile))
+ fl_alert("Error writing to file \'%s\':\n%s.", newfile, strerror(errno));
+ else
+ strcpy(filename, newfile);
+ changed = 0;
+ textbuf->call_modify_callbacks();
+}
+\endcode
+
+\subsection editor_set_title set_title()
+
+This function checks the <tt>changed</tt> variable and updates the
+window label accordingly:
+\code
+void set_title(Fl_Window* w) {
+ if (filename[0] == '\0') strcpy(title, "Untitled");
+ else {
+ char *slash;
+ slash = strrchr(filename, '/');
+#ifdef WIN32
+ if (slash == NULL) slash = strrchr(filename, '\\');
+#endif
+ if (slash != NULL) strcpy(title, slash + 1);
+ else strcpy(title, filename);
+ }
+
+ if (changed) strcat(title, " (modified)");
+
+ w->label(title);
+}
+\endcode
+
+\section editor_main_function The main() Function
+
+Once we've created all of the support functions, the only thing left
+is to tie them all together with the <tt>main()</tt> function.
+The <tt>main()</tt> function creates a new text buffer, creates a
+new view (window) for the text, shows the window, loads the file on
+the command-line (if any), and then enters the FLTK event loop:
+
+\code
+int main(int argc, char **argv) {
+ textbuf = new Fl_Text_Buffer;
+
+ Fl_Window* window = new_view();
+
+ window->show(1, argv);
+
+ if (argc > 1) load_file(argv[1], -1);
+
+ return Fl::run();
+}
+\endcode
+
+\section editor_compiling Compiling the Editor
+
+The complete source for our text editor can be found in the
+<tt>test/editor.cxx</tt> source file. Both the Makefile and Visual C++
+workspace include the necessary rules to build the editor. You can
+also compile it using a standard compiler with:
+
+\code
+CC -o editor editor.cxx -lfltk -lXext -lX11 -lm
+\endcode
+
+or by using the <tt>fltk-config</tt> script with:
+
+\code
+fltk-config --compile editor.cxx
+\endcode
+
+As noted in
+<A href="basics.html">Chapter 1</A>,
+you may need to
+include compiler and linker options to tell them where to find the FLTK
+library. Also, the <tt>CC</tt> command may also be called <tt>gcc</tt>
+or <tt>c++</tt> on your system.
+
+Congratulations, you've just built your own text editor!
+
+\section editor_final_product The Final Product
+
+The final editor window should look like the image in Figure 4-2.
+
+\image html editor.gif "Figure 4-2: The completed editor window"
+
+\section editor_advanced_features Advanced Features
+
+Now that we've implemented the basic functionality, it is
+time to show off some of the advanced features of the
+<CODE>Fl_Text_Editor</CODE> widget.
+
+\subsection editor_syntax Syntax Highlighting
+
+The <CODE>Fl_Text_Editor</CODE> widget supports highlighting
+of text with different fonts, colors, and sizes. The
+implementation is based on the excellent
+<A HREF="http://www.nedit.org/">NEdit</A>
+text editor core, which
+uses a parallel "style" buffer which tracks the font, color, and
+size of the text that is drawn.
+
+Styles are defined using the
+<CODE>Fl_Text_Display::Style_Table_Entry</CODE> structure
+defined in <CODE><FL/Fl_Text_Display.H></CODE>:
+
+\code
+struct Style_Table_Entry {
+ Fl_Color color;
+ Fl_Font font;
+ int size;
+ unsigned attr;
+};
+\endcode
+
+The <CODE>color</CODE> member sets the color for the text,
+the <CODE>font</CODE> member sets the FLTK font index to use,
+and the <CODE>size</CODE> member sets the pixel size of the
+text. The <CODE>attr</CODE> member is currently not used.
+
+For our text editor we'll define 7 styles for plain code,
+comments, keywords, and preprocessor directives:
+
+\code
+Fl_Text_Display::Style_Table_Entry styletable[] = { // Style table
+ { FL_BLACK, FL_COURIER, FL_NORMAL_SIZE }, // A - Plain
+ { FL_DARK_GREEN, FL_COURIER_ITALIC, FL_NORMAL_SIZE }, // B - Line comments
+ { FL_DARK_GREEN, FL_COURIER_ITALIC, FL_NORMAL_SIZE }, // C - Block comments
+ { FL_BLUE, FL_COURIER, FL_NORMAL_SIZE }, // D - Strings
+ { FL_DARK_RED, FL_COURIER, FL_NORMAL_SIZE }, // E - Directives
+ { FL_DARK_RED, FL_COURIER_BOLD, FL_NORMAL_SIZE }, // F - Types
+ { FL_BLUE, FL_COURIER_BOLD, FL_NORMAL_SIZE } // G - Keywords
+};
+\endcode
+
+You'll notice that the comments show a letter next to each
+style - each style in the style buffer is referenced using a
+character starting with the letter 'A'.
+
+You call the <CODE>highlight_data()</CODE> method to associate the
+style data and buffer with the text editor widget:
+
+\code
+Fl_Text_Buffer *stylebuf;
+
+w->editor->highlight_data(stylebuf, styletable,
+ sizeof(styletable) / sizeof(styletable[0]),
+ 'A', style_unfinished_cb, 0);
+\endcode
+
+Finally, you need to add a callback to the main text buffer so
+that changes to the text buffer are mirrored in the style buffer:
+
+\code
+textbuf->add_modify_callback(style_update, w->editor);
+\endcode
+
+The <CODE>style_update()</CODE> function, like the <CODE>change_cb()</CODE>
+function described earlier, is called whenever text is added or removed from
+the text buffer. It mirrors the changes in the style buffer and then updates
+the style data as necessary:
+
+\code
+//
+// 'style_update()' - Update the style buffer...
+//
+
+void
+style_update(int pos, // I - Position of update
+ int nInserted, // I - Number of inserted chars
+ int nDeleted, // I - Number of deleted chars
+ int nRestyled, // I - Number of restyled chars
+ const char *deletedText, // I - Text that was deleted
+ void *cbArg) { // I - Callback data
+ int start, // Start of text
+ end; // End of text
+ char last, // Last style on line
+ *style, // Style data
+ *text; // Text data
+
+
+ // If this is just a selection change, just unselect the style buffer...
+ if (nInserted == 0 && nDeleted == 0) {
+ stylebuf->unselect();
+ return;
+ }
+
+ // Track changes in the text buffer...
+ if (nInserted > 0) {
+ // Insert characters into the style buffer...
+ style = new char[nInserted + 1];
+ memset(style, 'A', nInserted);
+ style[nInserted] = '\0';
+
+ stylebuf->replace(pos, pos + nDeleted, style);
+ delete[] style;
+ } else {
+ // Just delete characters in the style buffer...
+ stylebuf->remove(pos, pos + nDeleted);
+ }
+
+ // Select the area that was just updated to avoid unnecessary
+ // callbacks...
+ stylebuf->select(pos, pos + nInserted - nDeleted);
+
+ // Re-parse the changed region; we do this by parsing from the
+ // beginning of the line of the changed region to the end of
+ // the line of the changed region... Then we check the last
+ // style character and keep updating if we have a multi-line
+ // comment character...
+ start = textbuf->line_start(pos);
+ end = textbuf->line_end(pos + nInserted - nDeleted);
+ text = textbuf->text_range(start, end);
+ style = stylebuf->text_range(start, end);
+ last = style[end - start - 1];
+
+ style_parse(text, style, end - start);
+
+ stylebuf->replace(start, end, style);
+ ((Fl_Text_Editor *)cbArg)->redisplay_range(start, end);
+
+ if (last != style[end - start - 1]) {
+ // The last character on the line changed styles, so reparse the
+ // remainder of the buffer...
+ free(text);
+ free(style);
+
+ end = textbuf->length();
+ text = textbuf->text_range(start, end);
+ style = stylebuf->text_range(start, end);
+
+ style_parse(text, style, end - start);
+
+ stylebuf->replace(start, end, style);
+ ((Fl_Text_Editor *)cbArg)->redisplay_range(start, end);
+ }
+
+ free(text);
+ free(style);
+}
+\endcode
+
+The <CODE>style_parse()</CODE> function scans a copy of the
+text in the buffer and generates the necessary style characters
+for display. It assumes that parsing begins at the start of a line:
+
+\code
+//
+// 'style_parse()' - Parse text and produce style data.
+//
+
+void
+style_parse(const char *text,
+ char *style,
+ int length) {
+ char current;
+ int col;
+ int last;
+ char buf[255],
+ *bufptr;
+ const char *temp;
+
+ for (current = *style, col = 0, last = 0; length > 0; length --, text ++) {
+ if (current == 'A') {
+ // Check for directives, comments, strings, and keywords...
+ if (col == 0 && *text == '#') {
+ // Set style to directive
+ current = 'E';
+ } else if (strncmp(text, "//", 2) == 0) {
+ current = 'B';
+ } else if (strncmp(text, "/*", 2) == 0) {
+ current = 'C';
+ } else if (strncmp(text, "\\\"", 2) == 0) {
+ // Quoted quote...
+ *style++ = current;
+ *style++ = current;
+ text ++;
+ length --;
+ col += 2;
+ continue;
+ } else if (*text == '\"') {
+ current = 'D';
+ } else if (!last && islower(*text)) {
+ // Might be a keyword...
+ for (temp = text, bufptr = buf;
+ islower(*temp) && bufptr < (buf + sizeof(buf) - 1);
+ *bufptr++ = *temp++);
+
+ if (!islower(*temp)) {
+ *bufptr = '\0';
+
+ bufptr = buf;
+
+ if (bsearch(&bufptr, code_types,
+ sizeof(code_types) / sizeof(code_types[0]),
+ sizeof(code_types[0]), compare_keywords)) {
+ while (text < temp) {
+ *style++ = 'F';
+ text ++;
+ length --;
+ col ++;
+ }
+
+ text --;
+ length ++;
+ last = 1;
+ continue;
+ } else if (bsearch(&bufptr, code_keywords,
+ sizeof(code_keywords) / sizeof(code_keywords[0]),
+ sizeof(code_keywords[0]), compare_keywords)) {
+ while (text < temp) {
+ *style++ = 'G';
+ text ++;
+ length --;
+ col ++;
+ }
+
+ text --;
+ length ++;
+ last = 1;
+ continue;
+ }
+ }
+ }
+ } else if (current == 'C' && strncmp(text, "*/", 2) == 0) {
+ // Close a C comment...
+ *style++ = current;
+ *style++ = current;
+ text ++;
+ length --;
+ current = 'A';
+ col += 2;
+ continue;
+ } else if (current == 'D') {
+ // Continuing in string...
+ if (strncmp(text, "\\\"", 2) == 0) {
+ // Quoted end quote...
+ *style++ = current;
+ *style++ = current;
+ text ++;
+ length --;
+ col += 2;
+ continue;
+ } else if (*text == '\"') {
+ // End quote...
+ *style++ = current;
+ col ++;
+ current = 'A';
+ continue;
+ }
+ }
+
+ // Copy style info...
+ if (current == 'A' && (*text == '{' || *text == '}')) *style++ = 'G';
+ else *style++ = current;
+ col ++;
+
+ last = isalnum(*text) || *text == '.';
+
+ if (*text == '\n') {
+ // Reset column and possibly reset the style
+ col = 0;
+ if (current == 'B' || current == 'E') current = 'A';
+ }
+ }
+}
+\endcode
+
+\htmlonly
+<hr>
+<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
+<a class="el" href="common.html">[Previous]&nbsp; 3 - Common Widgets and Attributes</a>&nbsp;
+<a class="el" href="drawing.html">[Next]&nbsp; 5 - Drawing Things in FLTK</a>&nbsp;
+\endhtmlonly
+*/
diff --git a/documentation/src_doc/editor.gif b/documentation/src_doc/editor.gif
new file mode 100644
index 000000000..8fce896f0
--- /dev/null
+++ b/documentation/src_doc/editor.gif
Binary files differ
diff --git a/documentation/src_doc/enumerations.dox b/documentation/src_doc/enumerations.dox
new file mode 100644
index 000000000..fa2045860
--- /dev/null
+++ b/documentation/src_doc/enumerations.dox
@@ -0,0 +1,301 @@
+/**
+
+ \page enumerations C - FLTK Enumerations
+
+ \note This file is not actively maintained any more, but is left
+ here as a reference, until the doxygen documentation is
+ completed.
+
+ \sa \ref FL/Enumerations.H.
+
+This appendix lists the enumerations provided in the
+<FL/Enumerations.H> header file, organized by section.
+Constants whose value is zero are marked with "(0)",
+this is often useful to know when programming.
+
+\section enumerations_versions Version Numbers
+
+The FLTK version number is stored in a number of compile-time constants:
+
+\li <tt>FL_MAJOR_VERSION</tt> - The major release number, currently 1.
+\li <tt>FL_MINOR_VERSION</tt> - The minor release number, currently 3.
+\li <tt>FL_PATCH_VERSION</tt> - The patch release number, currently 0.
+\li <tt>FL_VERSION</tt> - A combined floating-point version number for
+ the major, minor, and patch release numbers, currently 1.0300.
+
+<A NAME="events"> </A> <!-- For old HTML links only ! -->
+\section enumerations_events Events
+
+Events are identified by an <tt>Fl_Event</tt> enumeration value. The
+following events are currently defined:
+
+\li <tt>FL_NO_EVENT</tt> - No event (or an event fltk does not
+ understand) occurred (0).
+\li <tt>FL_PUSH</tt> - A mouse button was pushed.
+\li <tt>FL_RELEASE</tt> - A mouse button was released.
+\li <tt>FL_ENTER</tt> - The mouse pointer entered a widget.
+\li <tt>FL_LEAVE</tt> - The mouse pointer left a widget.
+\li <tt>FL_DRAG</tt> - The mouse pointer was moved with a button pressed.
+\li <tt>FL_FOCUS</tt> - A widget should receive keyboard focus.
+\li <tt>FL_UNFOCUS</tt> - A widget loses keyboard focus.
+\li <tt>FL_KEYBOARD</tt> - A key was pressed.
+\li <tt>FL_CLOSE</tt> - A window was closed.
+\li <tt>FL_MOVE</tt> - The mouse pointer was moved with no buttons pressed.
+\li <tt>FL_SHORTCUT</tt> - The user pressed a shortcut key.
+\li <tt>FL_DEACTIVATE</tt> - The widget has been deactivated.
+\li <tt>FL_ACTIVATE</tt> - The widget has been activated.
+\li <tt>FL_HIDE</tt> - The widget has been hidden.
+\li <tt>FL_SHOW</tt> - The widget has been shown.
+\li <tt>FL_PASTE</tt> - The widget should paste the contents of the
+ clipboard.
+\li <tt>FL_SELECTIONCLEAR</tt> - The widget should clear any selections
+ made for the clipboard.
+\li <tt>FL_MOUSEWHEEL</tt> - The horizontal or vertical mousewheel was turned.
+\li <tt>FL_DND_ENTER</tt> - The mouse pointer entered a widget dragging data.
+\li <tt>FL_DND_DRAG</tt> - The mouse pointer was moved dragging data.
+\li <tt>FL_DND_LEAVE</tt> - The mouse pointer left a widget still dragging
+ data.
+\li <tt>FL_DND_RELEASE</tt> - Dragged data is about to be dropped.
+
+<a name="when"> </A> <!-- For old HTML links only ! -->
+\section enumerations_when Callback "When" Conditions
+
+The following constants determine when a callback is performed:
+
+\li <tt>FL_WHEN_NEVER</tt> - Never call the callback (0).
+\li <tt>FL_WHEN_CHANGED</tt> - Do the callback only when the widget
+ value changes.
+\li <tt>FL_WHEN_NOT_CHANGED</tt> - Do the callback whenever the user
+ interacts with the widget.
+\li <tt>FL_WHEN_RELEASE</tt> - Do the callback when the button or key
+ is released and the value changes.
+\li <tt>FL_WHEN_ENTER_KEY</tt> - Do the callback when the user presses
+ the ENTER key and the value changes.
+\li <tt>FL_WHEN_RELEASE_ALWAYS</tt> - Do the callback when the button
+ or key is released, even if the value doesn't change.
+\li <tt>FL_WHEN_ENTER_KEY_ALWAYS</tt> - Do the callback when the user
+ presses the ENTER key, even if the value doesn't change.
+
+<A NAME="button_values"> </A> <!-- For old HTML links only ! -->
+\section enumeration_button_values Fl::event_button() Values
+
+The following constants define the button numbers for <tt>FL_PUSH</tt> and
+<tt>FL_RELEASE</tt> events:
+
+\li <tt>FL_LEFT_MOUSE</tt> - the left mouse button
+\li <tt>FL_MIDDLE_MOUSE</tt> - the middle mouse button
+\li <tt>FL_RIGHT_MOUSE</tt> - the right mouse button
+
+<A NAME="key_values"> </A> <!-- For old HTML links only ! -->
+\section enumerations_event_key Fl::event_key() Values
+
+The following constants define the non-ASCII keys on the keyboard for <tt>
+FL_KEYBOARD</tt> and <tt>FL_SHORTCUT</tt> events:
+
+\li <tt>FL_Button</tt> - A mouse button; use <tt>Fl_Button + n</tt>
+ for mouse button <tt>n</tt>.
+\li <tt>FL_BackSpace</tt> - The backspace key.
+\li <tt>FL_Tab</tt> - The tab key.
+\li <tt>FL_Enter</tt> - The enter key.
+\li <tt>FL_Pause</tt> - The pause key.
+\li <tt>FL_Scroll_Lock</tt> - The scroll lock key.
+\li <tt>FL_Escape</tt> - The escape key.
+\li <tt>FL_Home</tt> - The home key.
+\li <tt>FL_Left</tt> - The left arrow key.
+\li <tt>FL_Up</tt> - The up arrow key.
+\li <tt>FL_Right</tt> - The right arrow key.
+\li <tt>FL_Down</tt> - The down arrow key.
+\li <tt>FL_Page_Up</tt> - The page-up key.
+\li <tt>FL_Page_Down</tt> - The page-down key.
+\li <tt>FL_End</tt> - The end key.
+\li <tt>FL_Print</tt> - The print (or print-screen) key.
+\li <tt>FL_Insert</tt> - The insert key.
+\li <tt>FL_Menu</tt> - The menu key.
+\li <tt>FL_Num_Lock</tt> - The num lock key.
+\li <tt>FL_KP</tt> - One of the keypad numbers; use <tt>FL_KP + n</tt>
+ for number <tt>n</tt>.
+\li <tt>FL_KP_Enter</tt> - The enter key on the keypad.
+\li <tt>FL_F</tt> - One of the function keys; use <tt>FL_F + n</tt>
+ for function key <tt>n</tt>.
+\li <tt>FL_Shift_L</tt> - The lefthand shift key.
+\li <tt>FL_Shift_R</tt> - The righthand shift key.
+\li <tt>FL_Control_L</tt> - The lefthand control key.
+\li <tt>FL_Control_R</tt> - The righthand control key.
+\li <tt>FL_Caps_Lock</tt> - The caps lock key.
+\li <tt>FL_Meta_L</tt> - The left meta/Windows key.
+\li <tt>FL_Meta_R</tt> - The right meta/Windows key.
+\li <tt>FL_Alt_L</tt> - The left alt key.
+\li <tt>FL_Alt_R</tt> - The right alt key.
+\li <tt>FL_Delete</tt> - The delete key.
+
+\section enumerations_event_state Fl::event_state() Values
+
+The following constants define bits in the <tt>Fl::event_state()</tt>
+value:
+
+\li <tt>FL_SHIFT</tt> - One of the shift keys is down.
+\li <tt>FL_CAPS_LOCK</tt> - The caps lock is on.
+\li <tt>FL_CTRL</tt> - One of the ctrl keys is down.
+\li <tt>FL_ALT</tt> - One of the alt keys is down.
+\li <tt>FL_NUM_LOCK</tt> - The num lock is on.
+\li <tt>FL_META</tt> - One of the meta/Windows keys is down.
+\li <tt>FL_COMMAND</tt> - An alias for <tt>FL_CTRL</tt> on WIN32 and X11,
+ or <tt>FL_META</tt> on MacOS X.
+\li <tt>FL_SCROLL_LOCK</tt> - The scroll lock is on.
+\li <tt>FL_BUTTON1</tt> - Mouse button 1 is pushed.
+\li <tt>FL_BUTTON2</tt> - Mouse button 2 is pushed.
+\li <tt>FL_BUTTON3</tt> - Mouse button 3 is pushed.
+\li <tt>FL_BUTTONS</tt> - Any mouse button is pushed.
+\li <tt>FL_BUTTON(n)</tt> - Mouse button N (N &gt; 0) is pushed.
+
+<!-- NEED 4in -->
+
+<a name="align"> </A> <!-- For old HTML links only ! -->
+\section enumerations_alignment Alignment Values
+
+The following constants define bits that can be used with
+<A href=Fl_Widget.html#Fl_Widget.align><tt>Fl_Widget::align()</tt></A>
+to control the positioning of the label:
+
+\li <tt>FL_ALIGN_CENTER</tt> - The label is centered (0).
+\li <tt>FL_ALIGN_TOP</tt> - The label is top-aligned.
+\li <tt>FL_ALIGN_BOTTOM</tt> - The label is bottom-aligned.
+\li <tt>FL_ALIGN_LEFT</tt> - The label is left-aligned.
+\li <tt>FL_ALIGN_RIGHT</tt> - The label is right-aligned.
+\li <tt>FL_ALIGN_CLIP</tt> - The label is clipped to the widget.
+\li <tt>FL_ALIGN_WRAP</tt> - The label text is wrapped as needed.
+\li <tt>FL_ALIGN_TOP_LEFT</tt>
+\li <tt>FL_ALIGN_TOP_RIGHT</tt>
+\li <tt>FL_ALIGN_BOTTOM_LEFT</tt>
+\li <tt>FL_ALIGN_BOTTOM_RIGHT</tt>
+\li <tt>FL_ALIGN_LEFT_TOP</tt>
+\li <tt>FL_ALIGN_RIGHT_TOP</tt>
+\li <tt>FL_ALIGN_LEFT_BOTTOM</tt>
+\li <tt>FL_ALIGN_RIGHT_BOTTOM</tt>
+\li <tt>FL_ALIGN_INSIDE</tt> - 'or' this with other values to put
+ label inside the widget.
+
+<a name="fonts"> </A> <!-- For old HTML links only ! -->
+\section enumerations_fonts Fonts
+
+The following constants define the standard FLTK fonts:
+
+\li <tt>FL_HELVETICA</tt> - Helvetica (or Arial) normal (0).
+\li <tt>FL_HELVETICA_BOLD</tt> - Helvetica (or Arial) bold.
+\li <tt>FL_HELVETICA_ITALIC</tt> - Helvetica (or Arial) oblique.
+\li <tt>FL_HELVETICA_BOLD_ITALIC</tt> - Helvetica (or Arial) bold-oblique.
+\li <tt>FL_COURIER</tt> - Courier normal.
+\li <tt>FL_COURIER_BOLD</tt> - Courier bold.
+\li <tt>FL_COURIER_ITALIC</tt> - Courier italic.
+\li <tt>FL_COURIER_BOLD_ITALIC</tt> - Courier bold-italic.
+\li <tt>FL_TIMES</tt> - Times roman.
+\li <tt>FL_TIMES_BOLD</tt> - Times bold.
+\li <tt>FL_TIMES_ITALIC</tt> - Times italic.
+\li <tt>FL_TIMES_BOLD_ITALIC</tt> - Times bold-italic.
+\li <tt>FL_SYMBOL</tt> - Standard symbol font.
+\li <tt>FL_SCREEN</tt> - Default monospaced screen font.
+\li <tt>FL_SCREEN_BOLD</tt> - Default monospaced bold screen font.
+\li <tt>FL_ZAPF_DINGBATS</tt> - Zapf-dingbats font.
+
+<a name="colors"> </A> <!-- For old HTML links only ! -->
+\section enumerations_colors Colors
+
+The <tt>Fl_Color</tt> enumeration type holds a FLTK color value.
+Colors are either 8-bit indexes into a virtual colormap or 24-bit RGB
+color values. Color indices occupy the lower 8 bits of the value, while
+RGB colors occupy the upper 24 bits, for a byte organization of RGBI.
+
+\subsection enumerations_color_constants Color Constants
+
+Constants are defined for the user-defined foreground and background
+colors, as well as specific colors and the start of the grayscale ramp
+and color cube in the virtual colormap. Inline functions are provided to
+retrieve specific grayscale, color cube, or RGB color values.
+
+The following color constants can be used to access the user-defined
+colors:
+
+\li <tt>FL_BACKGROUND_COLOR</tt> - the default background color
+\li <tt>FL_BACKGROUND2_COLOR</tt> - the default
+ background color for text, list, and valuator widgets
+\li <tt>FL_FOREGROUND_COLOR</tt> - the default
+ foreground color (0) used for labels and text
+\li <tt>FL_INACTIVE_COLOR</tt> - the inactive foreground color
+\li <tt>FL_SELECTION_COLOR</tt> - the default selection/highlight color
+
+The following color constants can be used to access the colors from the
+FLTK standard color cube:
+
+\li <tt>FL_BLACK</tt>
+\li <tt>FL_BLUE</tt>
+\li <tt>FL_CYAN</tt>
+\li <tt>FL_DARK_BLUE</tt>
+\li <tt>FL_DARK_CYAN</tt>
+\li <tt>FL_DARK_GREEN</tt>
+\li <tt>FL_DARK_MAGENTA</tt>
+\li <tt>FL_DARK_RED</tt>
+\li <tt>FL_DARK_YELLOW</tt>
+\li <tt>FL_GREEN</tt>
+\li <tt>FL_MAGENTA</tt>
+\li <tt>FL_RED</tt>
+\li <tt>FL_WHITE</tt>
+\li <tt>FL_YELLOW</tt>
+
+The inline methods for getting a grayscale, color cube, or
+RGB color value are described in
+<A HREF="functions.html#functions">Appendix B - Function Reference</A>.
+
+<a name="cursor"> </A> <!-- For old HTML links only ! -->
+\section enumerations_cursors Cursors
+
+The following constants define the mouse cursors that are available in
+FLTK. The double-headed arrows are bitmaps
+provided by FLTK on X, the others are provided by system-defined
+cursors.
+
+
+\li <tt>FL_CURSOR_DEFAULT</tt> - the default cursor, usually an arrow (0)
+\li <tt>FL_CURSOR_ARROW</tt> - an arrow pointer
+\li <tt>FL_CURSOR_CROSS</tt> - crosshair
+\li <tt>FL_CURSOR_WAIT</tt> - watch or hourglass
+\li <tt>FL_CURSOR_INSERT</tt> - I-beam
+\li <tt>FL_CURSOR_HAND</tt> - hand (uparrow on MSWindows)
+\li <tt>FL_CURSOR_HELP</tt> - question mark
+\li <tt>FL_CURSOR_MOVE</tt> - 4-pointed arrow
+\li <tt>FL_CURSOR_NS</tt> - up/down arrow
+\li <tt>FL_CURSOR_WE</tt> - left/right arrow
+\li <tt>FL_CURSOR_NWSE</tt> - diagonal arrow
+\li <tt>FL_CURSOR_NESW</tt> - diagonal arrow
+\li <tt>FL_CURSOR_NONE</tt> - invisible
+
+\section enumerations_file_when FD "When" Conditions
+
+\li <tt>FL_READ</tt> - Call the callback when there is data to be
+ read.
+\li <tt>FL_WRITE</tt> - Call the callback when data can be written
+ without blocking.
+\li <tt>FL_EXCEPT</tt> - Call the callback if an exception occurs on
+ the file.
+
+<a name="damage"> </A> <!-- For old HTML links only ! -->
+\section enumerations_damage Damage Masks
+
+The following damage mask bits are used by the standard FLTK widgets:
+
+\li <tt>FL_DAMAGE_CHILD</tt> - A child needs to be redrawn.
+\li <tt>FL_DAMAGE_EXPOSE</tt> - The window was exposed.
+\li <tt>FL_DAMAGE_SCROLL</tt> - The <tt>Fl_Scroll</tt> widget was scrolled.
+\li <tt>FL_DAMAGE_OVERLAY</tt> - The overlay planes need to be redrawn.
+\li <tt>FL_DAMAGE_USER1</tt> - First user-defined damage bit.
+\li <tt>FL_DAMAGE_USER2</tt> - Second user-defined damage bit.
+\li <tt>FL_DAMAGE_ALL</tt> - Everything needs to be redrawn.
+
+\htmlonly
+<hr>
+<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
+<a class="el" href="globals_func.html">[Previous] B - Function Reference</a>&nbsp;
+<a class="el" href="glut.html">[Next]</a>&nbsp;
+ \ref glut
+
+\endhtmlonly
+*/
diff --git a/documentation/src_doc/events.dox b/documentation/src_doc/events.dox
new file mode 100644
index 000000000..9682cf3ce
--- /dev/null
+++ b/documentation/src_doc/events.dox
@@ -0,0 +1,389 @@
+/**
+
+ \page events 6 - Handling Events
+
+This chapter discusses the FLTK event model and how to handle
+events in your program or widget.
+
+\section events_model The FLTK Event Model
+
+Every time a user moves the mouse pointer, clicks a button,
+or presses a key, an event is generated and sent to your
+application. Events can also come from other programs like the
+window manager.
+
+Events are identified by the integer argument passed to the
+<A href="subclassing.html#handle"><tt>Fl_Widget::handle()</tt></A>
+virtual
+method. Other information about the most recent event is stored in
+static locations and acquired by calling the \ref events_event_xxx
+methods. This static information remains valid until the next event
+is read from the window system, so it is ok to look at it outside
+of the <tt>handle()</tt> method.
+
+\section events_mouse Mouse Events
+
+\subsection events_fl_push FL_PUSH
+
+A mouse button has gone down with the mouse pointing at this
+widget. You can find out what button by calling
+<A href="Fl.html#Fl.event_button"><tt>Fl::event_button()</tt></A>.
+You find out the mouse position by calling
+<A href="Fl.html#Fl.event_x"><tt>Fl::event_x()</tt></A>
+and
+<A href="Fl.html#Fl.event_y"> <tt>Fl::event_y()</tt></A>.
+
+A widget indicates that it &quot;wants&quot; the mouse click
+by returning non-zero from its
+<A href="subclassing.html#handle"><tt>handle()</tt></A>
+method. It will then become the
+<A href="Fl.html#Fl.pushed"><tt>Fl::pushed()</tt></A>
+widget and will get <tt>FL_DRAG</tt> and
+the matching <tt>FL_RELEASE</tt> events. If <tt>handle()</tt>
+returns zero then FLTK will try sending the <tt>FL_PUSH</tt> to
+another widget.
+
+\subsection events_fl_drag FL_DRAG
+
+The mouse has moved with a button held down. The current
+button state is in
+<a href="Fl.html#Fl.event_state"><tt>Fl::event_state()</tt></a>.
+The mouse position is in
+<a href="Fl.html#Fl.event_x"><tt>Fl::event_x()</tt></a>
+and
+<a href="Fl.html#Fl.event_y"><tt>Fl::event_y()</tt></a>.
+
+In order to receive <tt>FL_DRAG</tt> events, the widget must
+return non-zero when handling <tt>FL_PUSH</tt>.
+
+\subsection events_fl_release FL_RELEASE
+
+A mouse button has been released. You can find out what button by calling
+<A href="Fl.html#Fl.event_button"><tt>Fl::event_button()</tt></A>.
+
+In order to receive the <tt>FL_RELEASE</tt> event, the widget must
+return non-zero when handling <tt>FL_PUSH</tt>.
+
+\subsection events_fl_move FL_MOVE
+
+The mouse has moved without any mouse buttons held down.
+This event is sent to the
+<A href="Fl.html#Fl.belowmouse"><tt>Fl::belowmouse()</tt></A>
+widget.
+
+In order to receive <tt>FL_MOVE</tt> events, the widget must
+return non-zero when handling <tt>FL_ENTER</tt>.
+
+\subsection events_fl_mousewheel FL_MOUSEWHEEL
+
+The user has moved the mouse wheel. The
+<A HREF="Fl.html#Fl.event_dx"><tt>Fl::event_dx()</tt></A>
+and
+<A HREF="Fl.html#Fl.event_dy"><tt>Fl::event_dy()</tt></A>
+methods can be used to find the amount to scroll horizontally and
+vertically.
+
+\section events_focus Focus Events
+
+\subsection events_fl_enter FL_ENTER
+
+The mouse has been moved to point at this widget. This can
+be used for highlighting feedback. If a widget wants to
+highlight or otherwise track the mouse, it indicates this by
+returning non-zero from its
+<A href="Fl.html#Fl.handle"><tt>handle()</tt></A>
+method. It then becomes the
+<A href="Fl.html#Fl.belowmouse"><tt>Fl::belowmouse()</tt></A>
+widget and will receive <tt>FL_MOVE</tt> and <tt>FL_LEAVE</tt>
+events.
+
+\subsection events_fl_leave FL_LEAVE
+
+The mouse has moved out of the widget.
+
+In order to receive the <tt>FL_LEAVE</tt> event, the widget must
+return non-zero when handling <tt>FL_ENTER</tt>.
+
+\subsection events_fl_focus FL_FOCUS
+
+This indicates an <I>attempt</I> to give a widget the
+keyboard focus.
+
+If a widget wants the focus, it should change itself to
+display the fact that it has the focus, and return non-zero from its
+<A href="Fl_Widget.html#Fl_Widget.handle"><tt>handle()</tt></A>
+method. It then becomes the
+<A href="Fl.html#Fl.focus"><tt>Fl::focus()</tt></A>
+widget and gets
+<tt>FL_KEYDOWN</tt>, <tt>FL_KEYUP</tt>, and <tt>FL_UNFOCUS</tt>
+events.
+
+The focus will change either because the window manager
+changed which window gets the focus, or because the user tried
+to navigate using tab, arrows, or other keys. You can check
+<A href="Fl.html#Fl.event_key"><tt>Fl::event_key()</tt></A>
+to figure out why it moved. For navigation it will be the key
+pressed and interaction with the window manager it will be zero.
+
+\subsection events_fl_unfocus FL_UNFOCUS
+
+This event is sent to the previous
+<A href="Fl.html#Fl.focus"><tt>Fl::focus()</tt></A>
+widget when another widget gets the focus or the window loses focus.
+
+\section events_keyboard Keyboard Events
+
+\subsection events_fl_keydown FL_KEYDOWN, FL_KEYUP
+
+A key was pressed or released. The key can be found in
+<A href="Fl.html#Fl.event_key"><tt>Fl::event_key()</tt></A>.
+The text that the key should insert can be found with
+<A href="Fl.html#Fl.event_text"><tt>Fl::event_text()</tt></A>
+and its length is in
+<A href="Fl.html#Fl.event_length"><tt>Fl::event_length()</tt></A>.
+If you use the key <tt>handle()</tt> should return 1. If you
+return zero then FLTK assumes you ignored the key and will
+then attempt to send it to a parent widget. If none of them want
+it, it will change the event into a <tt>FL_SHORTCUT</tt> event.
+
+To receive <CODE>FL_KEYBOARD</CODE> events you must also
+respond to the <CODE>FL_FOCUS</CODE> and <CODE>FL_UNFOCUS</CODE>
+events.
+
+If you are writing a text-editing widget you may also want to
+call the
+<a href="Fl.html#Fl.compose"><tt>Fl::compose()</tt></a>
+function to translate individual keystrokes into foreign characters.
+
+<code>FL_KEYUP</code> events are sent to the widget that
+currently has focus. This is not necessarily the same widget
+that received the corresponding <code>FL_KEYDOWN</code> event
+because focus may have changed between events.
+
+\subsection events_fl_shortcut FL_SHORTCUT
+
+If the
+<A href="Fl.html#Fl.focus"><tt>Fl::focus()</tt></A>
+widget is zero or ignores an <tt>FL_KEYBOARD</tt> event then
+FLTK tries sending this event to every widget it can, until one
+of them returns non-zero. <tt>FL_SHORTCUT</tt> is first sent to
+the <tt>Fl::belowmouse()</tt> widget, then its parents and
+siblings, and eventually to every widget in the window, trying
+to find an object that returns non-zero. FLTK tries really hard
+to not to ignore any keystrokes!
+
+You can also make &quot;global&quot; shortcuts by using
+<A href="Fl.html#Fl.add_handler"><tt>Fl::add_handler()</tt></A>.
+A global shortcut will work no matter what windows are displayed
+or which one has the focus.
+
+\section events_widget Widget Events
+
+\subsection events_fl_deactivate FL_DEACTIVATE
+
+This widget is no longer active, due to
+<A href="Fl_Widget.html#Fl_Widget.deactivate"><tt>deactivate()</tt></A>
+being called on it or one of its parents. <tt> active()</tt> may
+still be true after this, the widget is only active if
+<tt>active()</tt> is true on it and all its parents (use <tt>active_r()</tt> to check this).
+
+\subsection events_fl_activate FL_ACTIVATE
+
+This widget is now active, due to
+<A href="Fl_Widget.html#Fl_Widget.activate"><tt>activate()</tt></A>
+being called on it or one of its parents.
+
+\subsection events_fl_hide FL_HIDE
+
+This widget is no longer visible, due to
+<A href="Fl_Widget.html#Fl_Widget.hide"><tt>hide()</tt></a>
+being called on it or one of its parents, or due to a parent window
+being minimized. <tt>visible()</tt> may still be true after
+this, but the widget is visible only if <tt>visible()</tt> is
+true for it and all its parents (use <tt>visible_r()</tt> to
+check this).
+
+\subsection events_fl_show FL_SHOW
+
+This widget is visible again, due to
+<a href="Fl_Widget.html#Fl_Widget.show"><tt>show()</tt></A>
+being called on it or one of its parents, or due to a parent window
+being restored. <I>Child <tt>Fl_Window</tt>s respond to this by
+actually creating the window if not done already, so if you
+subclass a window, be sure to pass <tt>FL_SHOW</tt> to the base
+class <tt>handle()</tt> method!</I>
+
+\section events_clipboard Clipboard Events
+
+\subsection events_fl_paste FL_PASTE
+
+You should get this event some time after you call
+<A href="Fl.html#Fl.paste"><tt>Fl::paste()</tt></A>.
+The contents of
+<A href="Fl.html#Fl.event_text"><tt>Fl::event_text()</tt></A>
+is the text to insert and the number of characters is in
+<A href="Fl.html#Fl.event_length"><tt>Fl::event_length()</tt></A>.
+
+\subsection events_fl_selectionclear FL_SELECTIONCLEAR
+
+The <A href="Fl.html#Fl.selection_owner"><tt>Fl::selection_owner()</tt></A>
+will get this event before the selection is moved to another
+widget. This indicates that some other widget or program has
+claimed the selection. Motif programs used this to clear the
+selection indication. Most modern programs ignore this.
+
+<A NAME="dnd"></A> <!-- For old HTML links only ! -->
+\section events_dnd Drag and Drop Events
+
+FLTK supports drag and drop of text and files from any
+application on the desktop. Text is transfered using
+the current code page. Files are received as a list of full path
+and file names, seperated by newline. On some platforms, path
+names are prepended with <tt>file://</tt>.
+
+The drag and drop data is available in <tt>Fl::event_text()</tt>
+at the concluding <tt>FL_PASTE</tt>. On some platforms, the
+event text is also available for the <tt>FL_DND_*</tt> events,
+however application must not depend on that behavior because it
+depends on the protocol used on each platform.
+
+<tt>FL_DND_*</tt> events cannot be used in widgets derived
+from <tt>Fl_Group</tt> or <tt>Fl_Window</tt>.
+
+\subsection events_fl_dnd_enter FL_DND_ENTER
+
+The mouse has been moved to point at this widget. A widget
+that is interested in receiving drag'n'drop data must return 1
+to receive FL_DND_DRAG, FL_DND_LEAVE and FL_DND_RELEASE events.
+
+\subsection events_fl_dnd_drag FL_DND_DRAG
+
+The mouse has been moved inside a widget while dragging data.
+A widget that is interested in receiving drag'n'drop data should
+indicate the possible drop position.
+
+\subsection events_fl_dnd_leave FL_DND_LEAVE
+
+The mouse has moved out of the widget.
+
+\subsection events_fl_dnd_release FL_DND_RELEASE
+
+The user has released the mouse button dropping data into
+the widget. If the widget returns 1, it will receive the data in
+the immediatly following FL_PASTE event.
+
+<!-- NEED 6in -->
+
+<A NAME="event_xxx"></A> <!-- For old HTML links only ! -->
+\section events_event_xxx Fl::event_*() methods
+
+FLTK keeps the information about the most recent event in
+static storage. This information is good until the next event is
+processed. Thus it is valid inside <tt>handle()</tt> and
+<tt>callback()</tt> methods.
+
+These are all trivial inline functions and thus very fast and small:
+
+\li <A HREF="Fl.html#Fl.event_button"><tt>Fl::event_button</tt></A>
+
+\li <A HREF="Fl.html#Fl.event_clicks"><tt>Fl::event_clicks</tt></A>
+
+\li <A HREF="Fl.html#Fl.event_dx"><tt>Fl::event_dx</tt></A>
+
+\li <A HREF="Fl.html#Fl.event_dy"><tt>Fl::event_dy</tt></A>
+
+\li <A HREF="Fl.html#Fl.event_inside"><tt>Fl::event_inside</tt></A>
+
+\li <A HREF="Fl.html#Fl.event_is_click"><tt>Fl::event_is_click</tt></A>
+
+\li <A HREF="Fl.html#Fl.event_key"><tt>Fl::event_key</tt></A>
+
+\li <A HREF="Fl.html#Fl.event_length"><tt>Fl::event_length</tt></A>
+
+\li <A HREF="Fl.html#Fl.event_state"><tt>Fl::event_state</tt></A>
+
+\li <A HREF="Fl.html#Fl.event_text"><tt>Fl::event_text</tt></A>
+
+\li <A HREF="Fl.html#Fl.event_x"><tt>Fl::event_x</tt></A>
+
+\li <A HREF="Fl.html#Fl.event_x_root"><tt>Fl::event_x_root</tt></A>
+
+\li <A HREF="Fl.html#Fl.event_y"><tt>Fl::event_y</tt></A>
+
+\li <A HREF="Fl.html#Fl.event_y_root"><tt>Fl::event_y_root</tt></A>
+
+\li <A HREF="Fl.html#Fl.get_key"><tt>Fl::get_key</tt></A>
+
+\li <A HREF="Fl.html#Fl.get_mouse"><tt>Fl::get_mouse</tt></A>
+
+\li <A HREF="Fl.html#Fl.test_shortcut"><tt>Fl::test_shortcut</tt></A>
+
+<A NAME="event_xxx"></A> <!-- For old HTML links only ! -->
+\section events_propagation Event Propagation
+
+FLTK follows very simple and unchangeable rules for sending
+events. The major innovation is that widgets can indicate (by
+returning 0 from the <tt>handle()</tt> method) that they are not
+interested in an event, and FLTK can then send that event
+elsewhere. This eliminates the need for &quot;interests&quot;
+(event masks or tables), and this is probably the main reason
+FLTK is much smaller than other toolkits.
+
+Most events are sent directly to the <tt>handle()</tt> method
+of the <tt>Fl_Window</tt> that the window system says they
+belong to. The window (actually the <tt>Fl_Group</tt> that
+<tt>Fl_Window</tt> is a subclass of) is responsible for sending
+the events on to any child widgets. To make the
+<tt>Fl_Group</tt> code somewhat easier, FLTK sends some events
+(<tt>FL_DRAG</tt>, <tt>FL_RELEASE</tt>, <tt>FL_KEYBOARD</tt>,
+<tt>FL_SHORTCUT</tt>, <tt>FL_UNFOCUS</tt>, and
+<tt>FL_LEAVE</tt>) directly to leaf widgets. These procedures
+control those leaf widgets:
+
+\li <A HREF="Fl.html#Fl.add_handler"><tt>Fl::add_handler</tt></A>
+
+\li <A HREF="Fl.html#Fl.belowmouse"><tt>Fl::belowmouse</tt></A>
+
+\li <A HREF="Fl.html#Fl.focus"><tt>Fl::focus</tt></A>
+
+\li <A HREF="Fl.html#Fl.grab"><tt>Fl::grab</tt></A>
+
+\li <A HREF="Fl.html#Fl.modal"><tt>Fl::modal</tt></A>
+
+\li <A HREF="Fl.html#Fl.pushed"><tt>Fl::pushed</tt></A>
+
+\li <A HREF="Fl.html#Fl.release"><tt>Fl::release</tt></A>
+
+\li <A HREF="Fl_Widget.html#Fl_Widget.take_focus"><tt>Fl_Widget::take_focus</tt></A>
+
+<A name="compose"></A> <!-- For old HTML links only ! -->
+\section events_compose_characters FLTK Compose-Character Sequences
+
+The foreign-letter compose processing done by the
+<A href="Fl_Input.html#compose"><tt>Fl_Input</tt></a>
+widget is provided in a function that you can call if you are writing
+your own text editor widget.
+
+FLTK uses its own compose processing to allow "preview" of
+the partially composed sequence, which is impossible with the
+usual "dead key" processing.
+
+Although currently only characters in the ISO-8859-1
+character set are handled, you should call this in case any
+enhancements to the processing are done in the future. The
+interface has been designed to handle arbitrary UTF-8 encoded
+text.
+
+The following methods are provided for character composition:
+
+\li <A HREF="Fl.html#Fl.compose"><tt>Fl::compose()</tt></A>
+
+\li <A HREF="Fl.html#Fl.compose_reset"><tt>Fl::compose_reset()</tt></A>
+
+\htmlonly
+<hr>
+<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
+<a class="el" href="drawing.html">[Previous]&nbsp; 5 - Drawing Things in FLTK</a>&nbsp;
+<a class="el" href="subclassing.html">[Next]&nbsp; 7 - Adding and Extending Widgets</a>&nbsp;
+\endhtmlonly
+*/
diff --git a/documentation/src_doc/examples.dox b/documentation/src_doc/examples.dox
new file mode 100644
index 000000000..3f84c4b95
--- /dev/null
+++ b/documentation/src_doc/examples.dox
@@ -0,0 +1,651 @@
+/**
+
+ \page examples K - Example Source Code
+
+\par March 19, 2005
+
+The FLTK distribution contains over 60 sample applications written
+in, or ported to, FLTK. If the FLTK archive you received does not
+contain a 'test' directory, you can download the complete FLTK
+distribution from \b http://fltk.org/software.php .
+
+Most of the example programs were created while testing a group of widgets.
+They are not meant to be great achievements in clean C++ programming, but
+merely a test platform to verify the functionality of the FLTK library.
+
+\section example_applications Example Applications
+
+<table width=100% border=0>
+<tr>
+<td> \ref examples_adjuster </td>
+<td> \ref examples_arc </td>
+<td> \ref examples_ask </td>
+<td> \ref examples_bitmap </td>
+<td> \ref examples_blocks </td>
+<td> \ref examples_boxtype </td>
+</tr>
+<tr>
+<td> \ref examples_browser </td>
+<td> \ref examples_button </td>
+<td> \ref examples_buttons </td>
+<td> \ref examples_checkers </td>
+<td> \ref examples_clock </td>
+<td> \ref examples_colbrowser </td>
+</tr>
+<tr>
+<td> \ref examples_color_chooser </td>
+<td> \ref examples_cube </td>
+<td> \ref examples_CubeView </td>
+<td> \ref examples_cursor </td>
+<td> \ref examples_curve </td>
+<td> \ref examples_demo </td>
+</tr>
+<tr>
+<td> \ref examples_doublebuffer </td>
+<td> \ref examples_editor </td>
+<td> \ref examples_fast_slow </td>
+<td> \ref examples_file_chooser </td>
+<td> \ref examples_fluid </td>
+<td> \ref examples_fonts </td>
+</tr>
+<tr>
+<td> \ref examples_forms </td>
+<td> \ref examples_fractals </td>
+<td> \ref examples_fullscreen </td>
+<td> \ref examples_gl_overlay </td>
+<td> \ref examples_glpuzzle </td>
+<td> \ref examples_hello </td>
+</tr>
+<tr>
+<td> \ref examples_help </td>
+<td> \ref examples_iconize </td>
+<td> \ref examples_image </td>
+<td> \ref examples_inactive </td>
+<td> \ref examples_input </td>
+<td> \ref examples_input_choice </td>
+</tr>
+<tr>
+<td> \ref examples_keyboard </td>
+<td> \ref examples_label </td>
+<td> \ref examples_line_style </td>
+<td> \ref examples_list_visuals </td>
+<td> \ref examples_mandelbrot </td>
+<td> \ref examples_menubar </td>
+</tr>
+<tr>
+<td> \ref examples_message </td>
+<td> \ref examples_minimum </td>
+<td> \ref examples_navigation </td>
+<td> \ref examples_output </td>
+<td> \ref examples_overlay </td>
+<td> \ref examples_pack </td>
+</tr>
+<tr>
+<td> \ref examples_pixmap_browser </td>
+<td> \ref examples_pixmap </td>
+<td> \ref examples_preferences </td>
+<td> \ref examples_radio </td>
+<td> \ref examples_resizebox </td>
+<td> \ref examples_resize </td>
+</tr>
+<tr>
+<td> \ref examples_scroll </td>
+<td> \ref examples_shape </td>
+<td> \ref examples_subwindow </td>
+<td> \ref examples_sudoku </td>
+<td> \ref examples_symbols </td>
+<td> \ref examples_tabs </td>
+</tr>
+<tr>
+<td> \ref examples_threads </td>
+<td> \ref examples_tile </td>
+<td> \ref examples_tiled_image </td>
+<td> \ref examples_valuators </td>
+<td> &nbsp; </td>
+<td> &nbsp; </td>
+</tr>
+</table>
+
+<a name="adjuster"></a> <!-- For old HTML links only ! -->
+\subsection examples_adjuster adjuster
+
+\par
+\c adjuster shows a nifty little widget for quickly
+setting values in a great range.
+
+<a name="arc"></a> <!-- For old HTML links only ! -->
+\subsection examples_arc arc
+
+\par
+The \c arc demo explains how to derive your own widget to
+generate some custom drawings. The sample drawings use the matrix
+based arc drawing for some fun effects.
+
+<a name="ask"></a> <!-- For old HTML links only ! -->
+\subsection examples_ask ask
+
+\par
+\c ask shows some of FLTK's standard dialog boxes. Click
+the correct answers or you may end up in a loop, or you may end
+up in a loop, or you... .
+
+<a name="bitmap"></a> <!-- For old HTML links only ! -->
+\subsection examples_bitmap bitmap
+
+\par
+This simple test shows the use of a single color bitmap as a
+label for a box widget. Bitmaps are stored in the X11 '.bmp'
+file format and can be part of the source code.
+
+<a name="blocks"></a> <!-- For old HTML links only ! -->
+\subsection examples_blocks blocks
+
+\par
+A wonderful and addictive game that shows the usage of FLTK
+timers, graphics, and how to implement sound on all platforms.
+\c blocks is also a good example for the Mac OS X specific
+bundle format.
+
+<a name="boxtype"></a> <!-- For old HTML links only ! -->
+\subsection examples_boxtype boxtype
+
+\par
+\c boxtype gives an overview of readily available boxes and
+frames in FLTK. More types can be added by the application programmer.
+When using themes, FLTK shuffles boxtypes around to give your program
+a new look.
+
+<a name="browser"></a> <!-- For old HTML links only ! -->
+\subsection examples_browser browser
+
+\par
+\c browser shows the capabilities of the Fl_Browser widget.
+Important features tested are loading of files, line formatting, and
+correct positioning of the browser data window.
+
+<a name="button"></a> <!-- For old HTML links only ! -->
+\subsection examples_button button
+
+\par
+The \c button test is a simple demo of push-buttons and callbacks.
+
+<a name="buttons"></a> <!-- For old HTML links only ! -->
+\subsection examples_buttons buttons
+
+\par
+\c buttons shows a sample of FLTK button types.
+
+<a name="checkers"></a> <!-- For old HTML links only ! -->
+\subsection examples_checkers checkers
+
+\par
+Written by Steve Poulsen in early 1979, \c checkers shows
+how to convert a VT100 text-terminal based program into a neat
+application with a graphical UI. Check out the code that drags the
+pieces, and how the pieces are drawn by layering. Then tell me
+how to beat the computer at Checkers.
+
+<a name="clock"></a> <!-- For old HTML links only ! -->
+\subsection examples_clock clock
+
+\par
+The \c clock demo shows two analog clocks. The innards of
+the Fl_Clock widget are pretty interesting, explaining
+the use of timeouts and matrix based drawing.
+
+<a name="colbrowser"></a> <!-- For old HTML links only ! -->
+\subsection examples_colbrowser colbrowser
+
+\par
+\c colbrowser runs only on X11 systems. It reads
+<i>/usr/lib/X11/rgb.txt</i> to show the color representation
+of every text entry in the file. This is beautiful, but
+only moderatly useful unless your UI is written in <i>Motif</i>.
+
+<a name="color_chooser"></a> <!-- For old HTML links only ! -->
+\subsection examples_color_chooser color_chooser
+
+\par
+The \c color_chooser gives a short demo of FLTK's palette based
+color chooser and of the RGB based color wheel.
+
+<a name="cube"></a> <!-- For old HTML links only ! -->
+\subsection examples_cube cube
+
+\par
+The \c cube demo shows the speed of OpenGL. It also tests
+the ability to render two OpenGL buffers into a single window,
+and shows OpenGL text.
+
+<a name="CubeView"></a> <!-- For old HTML links only ! -->
+\subsection examples_CubeView CubeView
+
+\par
+\c CubeView shows how to create a UI containing OpenGL with Fluid.
+
+<a name="cursor"></a> <!-- For old HTML links only ! -->
+\subsection examples_cursor cursor
+
+\par
+The \c cursor demo shows all mouse cursor shapes that come standard
+with FLTK. The <i>fgcolor</i> and <i>bgcolor</i> sliders work only
+on few systems (some version of Irix for example).
+
+<a name="curve"></a> <!-- For old HTML links only ! -->
+\subsection examples_curve curve
+
+\par
+\c curve draws a nice Bezier curve into a custom widget. The
+<i>points</i> option for splines is not supported on all platforms.
+
+<a name="demo"></a> <!-- For old HTML links only ! -->
+\subsection examples_demo demo
+
+\par
+This tool allows quick access to all programs in the \c test directory.
+\c demo is based on the visuals of the IrixGL demo program. The menu
+tree can be changed by editing <tt>test/demo.menu</tt>.
+
+<a name="doublebuffer"></a> <!-- For old HTML links only ! -->
+\subsection examples_doublebuffer doublebuffer
+
+\par
+The \c doublebuffer demo show the difference between a single
+buffered window, which may flicker during a slow redraw, and a
+double buffered window, which never flickers, but uses twice the
+amount of RAM. Some modern OS's double buffer all windows automatically
+to allow transparency and shadows on the desktop. FLTK is smart enough
+to not tripple buffer a window in that case.
+
+<a name="editor"></a> <!-- For old HTML links only ! -->
+\subsection examples_editor editor
+
+\par
+FLTK has two very different text input widgets. Fl_Input
+and derived classes are rather light weight, however
+Fl_Text_Editor is a complete port of <i>nedit</i> (with permission).
+The \c editor test is almost a full application, showing custom
+syntax highlighting and dialog creation.
+
+<a name="fast_slow"></a> <!-- For old HTML links only ! -->
+\subsection examples_fast_slow fast_slow
+
+\par
+\c fast_slow shows how an application can use the Fl_Widget::when()
+setting to receive different kinds of callbacks.
+
+<a name="file_chooser"></a> <!-- For old HTML links only ! -->
+\subsection examples_file_chooser file_chooser
+
+\par
+The standard FLTK \c file_chooser is the result of many
+iterations, trying to find a middle ground between a complex
+browser and a fast light implementation.
+
+<a name="fonts"></a> <!-- For old HTML links only ! -->
+\subsection examples_fonts fonts
+
+\par
+\c fonts shows all available text fonts on the host system.
+If your machine still has some pixmap based fonts, the supported
+sizes will be shown in bold face. Only the first 256 fonts will
+be listed.
+
+<a name="forms"></a> <!-- For old HTML links only ! -->
+\subsection examples_forms forms
+
+\par
+\c forms is an XForms program with very few changes.
+Search for "fltk" to find all changes necessary to port to fltk.
+This demo shows the different boxtypes. Note that some
+boxtypes are not appropriate for some objects.
+
+<a name="fractals"></a> <!-- For old HTML links only ! -->
+\subsection examples_fractals fractals
+
+\par
+\c fractals shows how to mix OpenGL, Glut and FLTK code.
+FLTK supports a rather large subset of Glut, so that many Glut
+applications compile just fine.
+
+<a name="fullscreen"></a> <!-- For old HTML links only ! -->
+\subsection examples_fullscreen fullscreen
+
+\par
+This demo shows how to do many of the window manipulations that
+are popular for games.
+You can toggle the border on/off, switch between single-
+and double-buffered rendering, and take over the entire
+screen. More information in the source code.
+
+<a name="gl_overlay"></a> <!-- For old HTML links only ! -->
+\subsection examples_gl_overlay gl_overlay
+
+\par
+\c gl_overlay shows OpenGL overlay plane rendering. If no
+hardware overlay plane is available, FLTK will simulate it
+for you.
+
+<a name="glpuzzle"></a> <!-- For old HTML links only ! -->
+\subsection examples_glpuzzle glpuzzle
+
+\par
+The \c glpuzzle test shows how most Glut source code compiles
+easily under FLTK.
+
+<a name="hello"></a> <!-- For old HTML links only ! -->
+\subsection examples_hello hello
+
+\par
+\c hello: Hello, World. Need I say more? Well, maybe. This
+tiny demo shows how little is needed to get a functioning application
+running with FLTK. Quite impressive, I'd say.
+
+<a name="help"></a> <!-- For old HTML links only ! -->
+\subsection examples_help help
+
+\par
+\c help displays the built-in FLTK help browser. The
+Fl_Help_Dialog understands a subset of html and renders
+various image formats. This widget makes it easy to provide help
+pages to the user without depending on the operating system's
+html browser.
+
+<a name="iconize"></a> <!-- For old HTML links only ! -->
+\subsection examples_iconize iconize
+
+\par
+\c iconize demonstrates the effect of the window functions
+hide(), iconize(), and show().
+
+<a name="image"></a> <!-- For old HTML links only ! -->
+\subsection examples_image image
+
+\par
+The \c image demo shows how an image can be created on the fly.
+This generated image contains an alpha (transparency) channel which
+lets previous renderings 'shine through', either via true
+transparency or by using screen door transparency (pixelation).
+
+<a name="inactive"></a> <!-- For old HTML links only ! -->
+\subsection examples_inactive inactive
+
+\par
+\c inactive tests the correct rendering of inactive widgets.
+To see the inactive version of images, you can check out the pixmap
+or image test.
+
+<a name="input"></a> <!-- For old HTML links only ! -->
+\subsection examples_input input
+
+\par
+This tool shows and tests different types of text input fields based on
+Fl_Input_. The \c input program also tests various
+settings of Fl_Input::when().
+
+<a name="input_choice"></a> <!-- For old HTML links only ! -->
+\subsection examples_input_choice input_choice
+
+\par
+\c input_choice tests the latest addition to FLTK1, a text input
+field with an attached pulldown menu. Windows users will recognize
+similarities to the 'ComboBox'. \c input_choice starts up in
+'plastic' scheme, but the traditional scheme is also supported.
+
+<a name="keyboard"></a> <!-- For old HTML links only ! -->
+\subsection examples_keyboard keyboard
+
+\par
+FLTK unifies keyboard events for all platforms. The \c keyboard
+test can be used to check the return values of Fl::event_key()
+and Fl::event_text(). It is also great to see the modifier
+buttons and the scroll wheel at work. Quit this application by closing
+the window. The ESC key will not work.
+
+<a name="label"></a> <!-- For old HTML links only ! -->
+\subsection examples_label label
+
+\par
+Every FLTK widget can have a label attached to it. The \c label
+demo shows alignment, clipping and wrapping of text labels. Labels
+can contain symbols at the start and end of the text, like <i>\@FLTK</i>
+or <i>\@circle uh-huh \@square</i>.
+
+<a name="line_style"></a> <!-- For old HTML links only ! -->
+\subsection examples_line_style line_style
+
+\par
+Advanced line drawing can be tested with \c line_style.
+Not all platforms support all line styles.
+
+<a name="list_visuals"></a> <!-- For old HTML links only ! -->
+\subsection examples_list_visuals list_visuals
+
+\par
+This little app finds all available pixel formats for the current X11
+screen. But since you are now an FLTK user, you don't have to worry
+about any of this.
+
+<a name="mandelbrot"></a> <!-- For old HTML links only ! -->
+\subsection examples_mandelbrot mandelbrot
+
+\par
+\c mandelbrot shows two advanced topics in one test. It creates
+grayscale images on the fly, updating them via the <i>idle</i> callback
+system. This is one of the few occasions where the <i>idle</i> callback
+is very useful by giving all available processor time to the application
+without blocking the UI or other apps.
+
+<a name="menubar"></a> <!-- For old HTML links only ! -->
+\subsection examples_menubar menubar
+
+\par
+The \c menubar tests many aspects of FLTK's popup menu system.
+Among the features are radio buttons, menus taller than the screen,
+arbitrary sub menu depth, and global shortcuts.
+
+<a name="message"></a> <!-- For old HTML links only ! -->
+\subsection examples_message message
+
+\par
+\c message pops up a few of FLTK's standard message boxes.
+
+<a name="minimum"></a> <!-- For old HTML links only ! -->
+\subsection examples_minimum minimum
+
+\par
+The \c minimum test program verifies that the update regions
+are set correctly. In a real life application, the trail would
+be avoided by choosing a smaller label or by setting label clipping
+differently.
+
+<a name="navigation"></a> <!-- For old HTML links only ! -->
+\subsection examples_navigation navigation
+
+\par
+\c navigation demonstrates how the text cursor moves from
+text field to text field when using the arrow keys, tab, and shift-tab.
+
+<a name="output"></a> <!-- For old HTML links only ! -->
+\subsection examples_output output
+
+\par
+\c output shows the difference between the single line and
+multi line mode of the Fl_Output widget. Fonts can be
+selected from the FLTK standard list of fonts.
+
+<a name="overlay"></a> <!-- For old HTML links only ! -->
+\subsection examples_overlay overlay
+
+\par
+The \c overlay test app show how easy an FLTK window can
+be layered to display cursor and manipulator style elements. This
+example derives a new class from Fl_Overlay_Window and
+provides a new function to draw custom overlays.
+
+<a name="pack"></a> <!-- For old HTML links only ! -->
+\subsection examples_pack pack
+
+\par
+The \c pack test program demonstrates the resizing
+and repositioning of children of the Fl_Pack group.
+Putting an Fl_Pack into an Fl_Scroll is
+a useful way to create a browser for large sets of data.
+
+<a name="pixmap_browser"></a> <!-- For old HTML links only ! -->
+\subsection examples_pixmap_browser pixmap_browser
+
+\par
+\c pixmap_browser tests the shared-image interface. When using
+the same image multiple times, Fl_Shared_Image will keep it
+only once in memory.
+
+<a name="pixmap"></a> <!-- For old HTML links only ! -->
+\subsection examples_pixmap pixmap
+
+\par
+This simple test shows the use of a LUT based pixmap as a
+label for a box widget. Pixmaps are stored in the X11 '.xpm'
+file format and can be part of the source code. Pixmaps support
+one transparent color.
+
+<a name="preferences"></a> <!-- For old HTML links only ! -->
+\subsection examples_preferences preferences
+
+\par
+I do have my \c preferences in the morning, but sometimes I
+just can't remember a thing. This is where the Fl_Preferences
+come in handy. They remember any kind of data between program launches.
+
+<a name="radio"></a> <!-- For old HTML links only ! -->
+\subsection examples_radio radio
+
+\par
+The \c radio tool was created entirely with <i>fluid</i>. It
+shows some of the available button types and tests radio
+button behavior.
+
+<a name="resizebox"></a> <!-- For old HTML links only ! -->
+\subsection examples_resizebox resizebox
+
+\par
+\c resizebox shows some possible ways of FLTK's automatic
+resize bahavior..
+
+<a name="resize"></a> <!-- For old HTML links only ! -->
+\subsection examples_resize resize
+
+\par
+The \c resize demo tests size and position functions with
+the given window manager.
+
+<a name="scroll"></a> <!-- For old HTML links only ! -->
+\subsection examples_scroll scroll
+
+\par
+\c scroll shows how to scroll an area of widgets, one of
+them beeing a slow custom drawing. Fl_Scroll uses
+clipping and smart window area copying to improve redraw speed.
+The buttons at the bottom of the window control decoration rendering
+and updates.
+
+<a name="shape"></a> <!-- For old HTML links only ! -->
+\subsection examples_shape shape
+
+\par
+\c shape is a very minimal demo that shows how to create
+your own OpenGL rendering widget. Now that you know that, go ahead
+and write that flight simulator you always dreamt of.
+
+<a name="subwindow"></a> <!-- For old HTML links only ! -->
+\subsection examples_subwindow subwindow
+
+\par
+The \c subwindow demo tests messaging and drawing between
+the main window and 'true' sub windows. A sub window is different
+to a group by resetting the FLTK coordinate system to 0, 0 in the
+top left corner. On Win32 and X11, subwindows have their own
+operating system specific handle.
+
+<a name="sudoku"></a> <!-- For old HTML links only ! -->
+\subsection examples_sudoku sudoku
+
+\par
+Another highly addictive game - don't play it, I warned you.
+The implementation shows how to create application icons,
+how to deal with OS specifics, and how to generate sound.
+
+<a name="symbols"></a> <!-- For old HTML links only ! -->
+\subsection examples_symbols symbols
+
+\par
+\c symbols are a speciality of FLTK. These little vector
+drawings can be integrated into labels. They scale and rotate,
+and with a little patience, you can define your own. The rotation
+number refers to 45 degree rotations if you were looking at a
+numeric keypad (2 is down, 6 is right, etc.).
+
+<a name="tabs"></a> <!-- For old HTML links only ! -->
+\subsection examples_tabs tabs
+
+\par
+The \c tabs tool was created with <i>fluid</i>. It tests
+correct hiding and redisplaying of tabs, navigation across tabs,
+resize behavior, and no unneeded redrawing of invisible widgets.
+
+\par
+The \c tabs application shows the Fl_Tabs widget
+on the left and the Fl_Wizard widget on the right side
+for direct comparison of these two panel management widgets.
+
+<a name="threads"></a> <!-- For old HTML links only ! -->
+\subsection examples_threads threads
+
+\par
+FLTK can be used in a multithreading environment. There are some
+limitations, mostly due to the underlying operating system.
+\c threads shows how to use Fl::lock(),
+Fl::unlock(), and Fl::awake() in secondary threads
+to keep FLTK happy. Although locking works on all platforms,
+this demo is not available on every machine.
+
+<a name="tile"></a> <!-- For old HTML links only ! -->
+\subsection examples_tile tile
+
+\par
+The \c tile tool shows a nice way of using Fl_Tile.
+To test correct resizing of subwindows, the widget for region
+1 is created from an Fl_Window class.
+
+<a name="tiled_image"></a> <!-- For old HTML links only ! -->
+\subsection examples_tiled_image tiled_image
+
+\par
+The \c tiled_image demo uses an image as the background
+for a window by repeating it over the full size of the widget.
+The window is resizable and shows how the image gets repeated.
+
+<a name="valuators"></a> <!-- For old HTML links only ! -->
+\subsection examples_valuators valuators
+
+\par
+\c valuators shows all of FLTK's nifty widgets to change
+numeric values.
+
+<a name="fluid"></a> <!-- For old HTML links only ! -->
+\subsection examples_fluid fluid
+
+\par
+\c fluid is not only a big test program, but also a very
+useful visual UI designer. Many parts of \c fluid were
+created using \c fluid. See the \link fluid Fluid Tutorial \endlink
+for more details.
+
+\htmlonly
+<hr>
+<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
+<a class="el" href="license.html">[Previous]</a>&nbsp;
+ \ref license &nbsp;&nbsp;
+
+\endhtmlonly
+*/
diff --git a/documentation/src_doc/fl_alert.gif b/documentation/src_doc/fl_alert.gif
new file mode 100644
index 000000000..be008e3ab
--- /dev/null
+++ b/documentation/src_doc/fl_alert.gif
Binary files differ
diff --git a/documentation/src_doc/fl_ask.gif b/documentation/src_doc/fl_ask.gif
new file mode 100644
index 000000000..00a9fbbe0
--- /dev/null
+++ b/documentation/src_doc/fl_ask.gif
Binary files differ
diff --git a/documentation/src_doc/fl_choice.gif b/documentation/src_doc/fl_choice.gif
new file mode 100644
index 000000000..940b22cf3
--- /dev/null
+++ b/documentation/src_doc/fl_choice.gif
Binary files differ
diff --git a/documentation/src_doc/fl_input.gif b/documentation/src_doc/fl_input.gif
new file mode 100644
index 000000000..63dc51cec
--- /dev/null
+++ b/documentation/src_doc/fl_input.gif
Binary files differ
diff --git a/documentation/src_doc/fl_message.gif b/documentation/src_doc/fl_message.gif
new file mode 100644
index 000000000..778020638
--- /dev/null
+++ b/documentation/src_doc/fl_message.gif
Binary files differ
diff --git a/documentation/src_doc/fl_password.gif b/documentation/src_doc/fl_password.gif
new file mode 100644
index 000000000..0523b574a
--- /dev/null
+++ b/documentation/src_doc/fl_password.gif
Binary files differ
diff --git a/documentation/src_doc/fl_show_colormap.gif b/documentation/src_doc/fl_show_colormap.gif
new file mode 100644
index 000000000..5c3b3518d
--- /dev/null
+++ b/documentation/src_doc/fl_show_colormap.gif
Binary files differ
diff --git a/documentation/src_doc/fluid-catgets.gif b/documentation/src_doc/fluid-catgets.gif
new file mode 100644
index 000000000..d81b20042
--- /dev/null
+++ b/documentation/src_doc/fluid-catgets.gif
Binary files differ
diff --git a/documentation/src_doc/fluid-gettext.gif b/documentation/src_doc/fluid-gettext.gif
new file mode 100644
index 000000000..db1608192
--- /dev/null
+++ b/documentation/src_doc/fluid-gettext.gif
Binary files differ
diff --git a/documentation/src_doc/fluid-org.gif b/documentation/src_doc/fluid-org.gif
new file mode 100644
index 000000000..e6e2ff659
--- /dev/null
+++ b/documentation/src_doc/fluid-org.gif
Binary files differ
diff --git a/documentation/src_doc/fluid.dox b/documentation/src_doc/fluid.dox
new file mode 100644
index 000000000..49591a5f1
--- /dev/null
+++ b/documentation/src_doc/fluid.dox
@@ -0,0 +1,1373 @@
+/**
+
+ \page fluid 9 - Programming with FLUID
+
+This chapter shows how to use the Fast Light User-Interface Designer
+("FLUID") to create your GUIs.
+
+Subchapters:
+
+\li <A HREF="#what_is_fluid">What is FLUID</A>
+\li <A HREF="#fluid_under_linux">Running FLUID Under UNIX</A>
+\li <A HREF="#fluid_under_windows">Running FLUID Under Microsoft Windows</A>
+\li <A HREF="#compiling_fl_files">Compiling <tt>.fl</tt> Files</A>
+\li <A HREF="#tutorial">A Short Tutorial</A>
+\li <A HREF="#references">FLUID Reference</A>
+\li <A HREF="#I18N">Internationalization with FLUID</A>
+\li <A HREF="#limitations">Known Limitations</A>
+
+<A NAME="what_is_fluid"> </A> <!-- For old HTML links only ! -->
+\section fluid_what_is_fluid What is FLUID?
+
+The Fast Light User Interface Designer, or FLUID, is a
+graphical editor that is used to produce FLTK source code. FLUID
+edits and saves its state in <tt>.fl</tt> files. These files
+are text, and you can (with care) edit them in a text editor,
+perhaps to get some special effects.
+
+FLUID can "compile" the <tt>.fl</tt> file into a
+<tt>.cxx</tt> and a <tt>.h</tt> file. The <tt>.cxx</tt> file
+defines all the objects from the <tt>.fl</tt> file and the
+<tt>.h</tt> file declares all the global ones. FLUID also
+supports localization (<A HREF="#I18N">Internationalization</A>)
+of label strings using message files and the GNU gettext or
+POSIX catgets interfaces.
+
+A simple program can be made by putting all your code (including a <tt>
+main()</tt> function) into the <tt>.fl</tt> file and thus making the <tt>.cxx</tt> file a
+single source file to compile. Most programs are more complex than
+this, so you write other <tt>.cxx</tt> files that call the FLUID functions.
+These <tt>.cxx</tt> files must <tt>\#include</tt> the <tt>.h</tt> file or they can <tt>
+\#include</tt> the <tt>.cxx</tt> file so it still appears to be a single source
+file.
+
+ \image html fluid-org.gif "Figure 9-1: FLUID organization"
+
+Normally the FLUID file defines one or more functions or classes which
+output C++ code. Each function defines a one or more FLTK
+windows, and all the widgets that go inside those windows.
+
+Widgets created by FLUID are either "named", "complex named" or
+"unnamed". A named widget has a legal C++ variable identifier as its
+name (i.e. only alphanumeric and underscore). In this case FLUID
+defines a global variable or class member that will point at the widget
+after the function defining it is called. A complex named object has
+punctuation such as '.' or '->' or any other symbols in its name. In
+this case FLUID assigns a pointer to the widget to the name, but does
+not attempt to declare it. This can be used to get the widgets into
+structures. An unnamed widget has a blank name and no pointer is stored.
+
+Widgets may either call a named callback function that you write in
+another source file, or you can supply a small piece of C++ source and
+FLUID will write a private callback function into the <tt>.cxx</tt> file.
+
+<A NAME="fluid_under_linux"> </A> <!-- For old HTML links only ! -->
+\section fluid_fluid_under_unix Running FLUID Under UNIX
+
+To run FLUID under UNIX, type:
+
+\code
+fluid filename.fl &
+\endcode
+
+to edit the <tt>.fl</tt> file <tt>filename.fl</tt>. If the file does not exist
+you will get an error pop-up, but if you dismiss it you will be editing
+a blank file of that name. You can run FLUID without any name, in
+which case you will be editing an unnamed blank setup (but you can use
+save-as to write it to a file).
+
+You can provide any of the standard FLTK switches before the filename:
+
+\code
+-display host:n.n
+-geometry WxH+X+Y
+-title windowtitle
+-name classname
+-iconic
+-fg color
+-bg color
+-bg2 color
+-scheme schemename
+\endcode
+
+Changing the colors may be useful to see what your interface
+will look at if the user calls it with the same switches.
+Similarly, using "-scheme plastic" will show how the interface
+will look using the "plastic" scheme.
+
+In the current version, if you don't put FLUID into the
+background with '&' then you will be able to abort FLUID by
+typing <KBD>CTRL-C</KBD> on the terminal. It will exit
+immediately, losing any changes.
+
+<A NAME="fluid_under_windows"> </A> <!-- For old HTML links only ! -->
+\section fluid_fluid_under_windows Running FLUID Under Microsoft Windows
+
+To run FLUID under WIN32, double-click on the <I>FLUID.exe</I>
+file. You can also run FLUID from the Command Prompt window.
+FLUID always runs in the background under WIN32.
+
+<A NAME="compiling_fl_files"> </A> <!-- For old HTML links only ! -->
+\section fluid_compiling_fl_files Compiling .fl files
+
+FLUID can also be called as a command-line
+"compiler" to create the <tt>.cxx</tt> and <tt>.h</tt>
+file from a <tt>.fl</tt> file. To do this type:
+
+\code
+fluid -c filename.fl
+\endcode
+
+This will read the <tt>filename.fl</tt> file and write
+<I>filename.cxx</I> and <I> filename.h</I>. Any leading
+directory on <tt>filename.fl</tt> will be stripped, so they are
+always written to the current directory. If there are any errors
+reading or writing the files, FLUID will print the error and
+exit with a non-zero code. You can use the following lines in a
+makefile to automate the creation of the source and header
+files:
+
+\code
+my_panels.h my_panels.cxx: my_panels.fl
+ fluid -c my_panels.fl
+\endcode
+
+Most versions of make support rules that cause <tt>.fl</tt>
+files to be compiled:
+
+\code
+.SUFFIXES: .fl .cxx .h
+.fl.h .fl.cxx:
+ fluid -c $<
+\endcode
+
+<A NAME="tutorial"> </A> <!-- For old HTML links only ! -->
+\section fluid_tutorial A Short Tutorial
+
+FLUID is an amazingly powerful little program. However, this
+power comes at a price as it is not always obvious how to
+accomplish seemingly simple tasks with it. This tutorial will
+show you how to generate a complete user interface class with
+FLUID that is used for the CubeView program provided with FLTK.
+
+\image html cubeview.gif "Figure 9-2: CubeView demo"
+
+The window is of class CubeViewUI, and is completely generated by FLUID,
+including
+class member functions. The central display of the cube is a separate
+subclass of Fl_Gl_Window called CubeView. CubeViewUI manages CubeView
+using callbacks from the various sliders and rollers to manipulate the
+viewing angle and zoom of CubeView.
+
+At the completion of this tutorial you will (hopefully) understand
+how to:
+
+-# Use FLUID to create a complete user interface class, including
+ constructor and any member functions necessary.
+-# Use FLUID to set callbacks member functions of a custom widget
+ classes.
+-# Subclass an Fl_Gl_Window to suit your purposes.
+
+\subsection fluid_cubeview The CubeView Class
+
+The CubeView class is a subclass of Fl_Gl_Window. It has methods for
+setting the zoom, the <i>x</i> and <i>y</i> pan, and the rotation angle
+about the <i>x</i> and <i>y</i>axes.
+
+You can safely skip this section as long as you realize the CubeView
+is a sublass of Fl_Gl_Window and will respond to calls from
+CubeViewUI, generated by FLUID.
+
+<a name="def"> </A> <!-- For old HTML links only ! -->
+\par The CubeView Class Definition
+
+Here is the CubeView class definition, as given by its header file
+"test/CubeView.h":
+
+\code
+class CubeView : public Fl_Gl_Window {
+ public:
+ CubeView(int x,int y,int w,int h,const char *l=0);
+ // this value determines the scaling factor used to draw the cube.
+ double size;
+ /* Set the rotation about the vertical (y ) axis.
+ *
+ * This function is called by the horizontal roller in CubeViewUI
+ * and the initialize button in CubeViewUI.
+ */
+ void v_angle(float angle){vAng=angle;};
+ // Return the rotation about the vertical (y ) axis.
+ float v_angle(){return vAng;};
+ /* Set the rotation about the horizontal (x ) axis.
+ *
+ * This function is called by the vertical roller in CubeViewUI
+ and the
+ * initialize button in CubeViewUI.
+ */
+ void h_angle(float angle){hAng=angle;};
+ // the rotation about the horizontal (x ) axis.
+ float h_angle(){return hAng;};
+ /* Sets the x shift of the cube view camera.
+ *
+ * This function is called by the slider in CubeViewUI and the
+ * initialize button in CubeViewUI.
+ */
+ void panx(float x){xshift=x;};
+ /* Sets the y shift of the cube view camera.
+ *
+ * This function is called by the slider in CubeViewUI and the
+ * initialize button in CubeViewUI.
+ */
+ void pany(float y){yshift=y;};
+ /* The widget class draw() override.
+ * The draw() function initialize Gl for another round of
+ * drawing then calls specialized functions for drawing each
+ * of the entities displayed in the cube view.
+ */
+ void draw();
+
+ private:
+ /* Draw the cube boundaries
+ * Draw the faces of the cube using the boxv[] vertices, using
+ * GL_LINE_LOOP for the faces. The color is #defined by
+ * CUBECOLOR.
+ */
+ void drawCube();
+
+ float vAng,hAng; float xshift,yshift;
+
+ float boxv0[3];float boxv1[3]; float boxv2[3];float boxv3[3];
+ float boxv4[3];float boxv5[3]; float boxv6[3];float boxv7[3];
+};
+\endcode
+
+<a name="imp"> </A> <!-- For old HTML links only ! -->
+\par The CubeView Class Implementation
+
+Here is the CubeView implementation. It is very similar to the
+"cube" demo included with FLTK.
+
+\code
+#include "CubeView.h"
+#include <math.h>
+
+CubeView::CubeView(int x,int y,int w,int h,const char *l)
+ : Fl_Gl_Window(x,y,w,h,l)
+{
+ vAng = 0.0; hAng=0.0; size=10.0;
+ /* The cube definition. These are the vertices of a unit cube
+ * centered on the origin.*/
+ boxv0[0] = -0.5; boxv0[1] = -0.5; boxv0[2] = -0.5; boxv1[0] = 0.5;
+ boxv1[1] = -0.5; boxv1[2] = -0.5; boxv2[0] = 0.5; boxv2[1] = 0.5;
+ boxv2[2] = -0.5; boxv3[0] = -0.5; boxv3[1] = 0.5; boxv3[2] = -0.5;
+ boxv4[0] = -0.5; boxv4[1] = -0.5; boxv4[2] = 0.5; boxv5[0] = 0.5;
+ boxv5[1] = -0.5; boxv5[2] = 0.5; boxv6[0] = 0.5; boxv6[1] = 0.5;
+ boxv6[2] = 0.5; boxv7[0] = -0.5; boxv7[1] = 0.5; boxv7[2] = 0.5;
+};
+
+// The color used for the edges of the bounding cube.
+#define CUBECOLOR 255,255,255,255
+
+void CubeView::drawCube() {
+/* Draw a colored cube */
+#define ALPHA 0.5
+ glShadeModel(GL_FLAT);
+
+ glBegin(GL_QUADS);
+ glColor4f(0.0, 0.0, 1.0, ALPHA);
+ glVertex3fv(boxv0);
+ glVertex3fv(boxv1);
+ glVertex3fv(boxv2);
+ glVertex3fv(boxv3);
+
+ glColor4f(1.0, 1.0, 0.0, ALPHA);
+ glVertex3fv(boxv0);
+ glVertex3fv(boxv4);
+ glVertex3fv(boxv5);
+ glVertex3fv(boxv1);
+
+ glColor4f(0.0, 1.0, 1.0, ALPHA);
+ glVertex3fv(boxv2);
+ glVertex3fv(boxv6);
+ glVertex3fv(boxv7);
+ glVertex3fv(boxv3);
+
+ glColor4f(1.0, 0.0, 0.0, ALPHA);
+ glVertex3fv(boxv4);
+ glVertex3fv(boxv5);
+ glVertex3fv(boxv6);
+ glVertex3fv(boxv7);
+
+ glColor4f(1.0, 0.0, 1.0, ALPHA);
+ glVertex3fv(boxv0);
+ glVertex3fv(boxv3);
+ glVertex3fv(boxv7);
+ glVertex3fv(boxv4);
+
+ glColor4f(0.0, 1.0, 0.0, ALPHA);
+ glVertex3fv(boxv1);
+ glVertex3fv(boxv5);
+ glVertex3fv(boxv6);
+ glVertex3fv(boxv2);
+ glEnd();
+
+ glColor3f(1.0, 1.0, 1.0);
+ glBegin(GL_LINES);
+ glVertex3fv(boxv0);
+ glVertex3fv(boxv1);
+
+ glVertex3fv(boxv1);
+ glVertex3fv(boxv2);
+
+ glVertex3fv(boxv2);
+ glVertex3fv(boxv3);
+
+ glVertex3fv(boxv3);
+ glVertex3fv(boxv0);
+
+ glVertex3fv(boxv4);
+ glVertex3fv(boxv5);
+
+ glVertex3fv(boxv5);
+ glVertex3fv(boxv6);
+
+ glVertex3fv(boxv6);
+ glVertex3fv(boxv7);
+
+ glVertex3fv(boxv7);
+ glVertex3fv(boxv4);
+
+ glVertex3fv(boxv0);
+ glVertex3fv(boxv4);
+
+ glVertex3fv(boxv1);
+ glVertex3fv(boxv5);
+
+ glVertex3fv(boxv2);
+ glVertex3fv(boxv6);
+
+ glVertex3fv(boxv3);
+ glVertex3fv(boxv7);
+ glEnd();
+};//drawCube
+
+void CubeView::draw() {
+ if (!valid()) {
+ glLoadIdentity(); glViewport(0,0,w(),h());
+ glOrtho(-10,10,-10,10,-20000,10000); glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ }
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ glPushMatrix(); glTranslatef(xshift, yshift, 0);
+ glRotatef(hAng,0,1,0); glRotatef(vAng,1,0,0);
+ glScalef(float(size),float(size),float(size)); drawCube();
+ glPopMatrix();
+};
+\endcode
+
+\subsection fluid_cubevieui The CubeViewUI Class
+
+We will completely construct a window to display and control the
+CubeView defined in the previous section using FLUID.
+
+<a name="defui"> </A> <!-- For old HTML links only ! -->
+\par Defining the CubeViewUI Class
+
+Once you have started FLUID, the first step in defining a class is to
+create a new class within FLUID using the \em New->Code->Class
+menu item. Name the class "CubeViewUI" and leave the
+subclass blank. We do not need any inheritance for this
+window. You should see the new class declaration in the FLUID
+browser window.
+
+\image html fluid1.gif "Figure 9-3: FLUID file for CubeView"
+
+<a name="addcon"> </A> <!-- For old HTML links only ! -->
+\par Adding the Class Constructor
+
+Click on the CubeViewUI class in the FLUID window and add a new method
+by selecting <b>New->Code->Function/Method.</b> The name of the
+function will also be CubeViewUI. FLUID will understands that this will
+be the constructor for the class and will generate the appropriate
+code. Make sure you declare the constructor public.
+
+Then add a window to the CubeViewUI class. Highlight the name of
+the constructor in the FLUID browser window and click on
+<b>New->Group->Window</b>. In a similar manner add the
+following to the CubeViewUI constructor:
+
+\li A horizontal roller named <tt>hrot</tt>
+\li A vertical roller named <tt>vrot</tt>
+\li A horizontal slider named <tt>xpan</tt>
+\li A vertical slider named <tt>ypan</tt>
+\li A horizontal value slider named <tt>zoom</tt>
+
+None of these additions need be public. And they shouldn't be
+unless you plan to expose them as part of the interface for
+CubeViewUI.
+
+When you are finished you should have something like this:
+
+\image html fluid2.gif "Figure 9-4: FLUID window containing CubeView demo"
+
+We will talk about the <tt>show()</tt> method that is highlighted
+shortly.
+
+<a name="addcube"> </A> <!-- For old HTML links only ! -->
+\par Adding the CubeView Widget
+
+What we have is nice, but does little to show our cube. We have already
+defined the CubeView class and we would like to show it within the
+CubeViewUI.
+
+The CubeView class inherits the Fl_Gl_Window class, which
+is created in the same way as a Fl_Box widget. Use
+<b>New->Other->Box</b> to add a square box to the main window.
+This will be no ordinary box, however.
+
+The Box properties window will appear. The key to letting CubeViewUI
+display CubeView is to enter CubeView in the "Class:" text
+entry box. This tells FLUID that it is not an Fl_Box, but a
+similar widget with the same constructor.
+
+In the "Extra Code:" field enter <tt>\#include "CubeView.h"</tt>
+
+This <tt>\#include</tt> is important, as we have just included
+CubeView as a member of CubeViewUI, so any public CubeView methods are
+now available to CubeViewUI.
+
+\image html fluid3-cxx.gif "Figure 9-5: CubeView methods"
+
+<a name="defcall"> </A> <!-- For old HTML links only ! -->
+\par Defining the Callbacks
+
+Each of the widgets we defined before adding CubeView can have
+callbacks that call CubeView methods. You can call an external
+function or put in a short amount of code in the "Callback"
+field of the widget panel. For example, the callback for the
+<tt>ypan</tt> slider is:
+
+\code
+cube->pany(((Fl_Slider *)o)->value());
+cube->redraw();
+\endcode
+
+We call <tt>cube->redraw()</tt> after changing the value to update
+the CubeView window. CubeView could easily be modified to do this, but
+it is nice to keep this exposed in the case where you may want to do
+more than one view change only redrawing once saves a lot of time.
+
+There is no reason no wait until after you have added CubeView to
+enter these callbacks. FLUID assumes you are smart enough not to refer
+to members or functions that don't exist.
+
+<a name="addmeth"> </A> <!-- For old HTML links only ! -->
+\par Adding a Class Method
+
+You can add class methods within FLUID that have nothing to do with the
+GUI. An an example add a show function so that CubeViewUI can actually
+appear on the screen.
+
+Make sure the top level CubeViewUI is selected and select
+<b>New->Code->Function/Method</b>. Just use the name
+<tt>show()</tt>. We don't need a return value here, and since we will
+not be adding any widgets to this method FLUID will assign it a return
+type of <tt>void</tt>.
+
+\image html fluid4.gif "Figure 9-6: CubeView constructor"
+
+Once the new method has been added, highlight its name and select
+<B>New->Code->Code.</B> Enter the method's code in the code window.
+
+<a name="addconst"> </A> <!-- For old HTML links only ! -->
+\subsection fluid_addconst Adding Constructor Initialization Code
+
+If you need to add code to initialize class, for example setting
+initial values of the horizontal and vertical angles in the
+CubeView, you can simply highlight the Constructor and select
+<b>New->Code->Code</b>. Add any required code.
+
+<a name="gencode"> </A> <!-- For old HTML links only ! -->
+\subsection fluid_gencode Generating the Code
+
+Now that we have completely defined the CubeViewUI, we have to generate
+the code. There is one last trick to ensure this all works. Open the
+preferences dialog from <b>Edit->Preferences</b>.
+
+At the bottom of the preferences dialog box is the key: "Include
+Header from Code". Select that option and set your desired file
+extensions and you are in business. You can include the CubeViewUI.h
+(or whatever extension you prefer) as you would any other C++ class.
+
+<!-- NEW PAGE -->
+
+<A NAME="references"> </A> <!-- For old HTML links only ! -->
+\section fluid_references FLUID Reference
+
+The following sections describe each of the windows in FLUID.
+
+\subsection fluid_browser The Widget Browser
+
+The main window shows a menu bar and a scrolling browser of
+all the defined widgets. The name of the <tt>.fl</tt> file being
+edited is shown in the window title.
+
+The widgets are stored in a hierarchy. You can open and close a
+level by clicking the "triangle" at the left of a widget.
+The leftmost widgets are the <I>parents</I>, and all the widgets
+listed below them are their <I>children</I>. Parents don't have to have
+any children.
+
+The top level of the hierarchy is composed of <I>functions</I> and
+<I>classes</I>. Each of these will produce a single C++ public
+function or class in the output <tt>.cxx</tt> file. Calling the function or
+instantiating the class will create all of the child widgets.
+
+The second level of the hierarchy contains the <I>windows</I>. Each of these
+produces an instance of class <tt>Fl_Window</tt>.
+
+Below that are either <I>widgets</I> (subclasses of <tt>Fl_Widget</tt>) or <I>
+groups</I> of widgets (including other groups). Plain groups are for
+layout, navigation, and resize purposes. <I>Tab groups</I> provide the
+well-known file-card tab interface.
+
+Widgets are shown in the browser by either their <I>name</I> (such
+as "main_panel" in the example), or by their <I>type</I>
+and <I>label</I> (such as "Button "the green"").
+
+You <I>select</I> widgets by clicking on their names, which highlights
+them (you can also select widgets from any displayed window). You can
+select many widgets by dragging the mouse across them, or by using
+Shift+Click to toggle them on and off. To select no widgets, click in
+the blank area under the last widget. Note that hidden children may
+be selected even when there is no visual indication of this.
+
+You <I>open</I> widgets by double-clicking on them, or (to open several
+widgets you have picked) by typing the F1 key. A control panel will appear
+so you can change the widget(s).
+
+\subsection fluid_menu_items Menu Items
+
+The menu bar at the top is duplicated as a pop-up menu on any
+displayed window. The shortcuts for all the menu items work in any
+window. The menu items are:
+
+\par File/Open... (Ctrl+o)
+
+Discards the current editing session and reads in a different
+<tt>.fl</tt> file. You are asked for confirmation if you have
+changed the current file.
+
+FLUID can also read <tt>.fd</tt> files produced by the Forms
+and XForms "fdesign" programs. It is best to
+File/Merge them instead of opening them. FLUID does not
+understand everything in a <tt>.fd</tt> file, and will print a
+warning message on the controlling terminal for all data it does
+not understand. You will probably need to edit the resulting
+setup to fix these errors. Be careful not to save the file
+without changing the name, as FLUID will write over the
+<tt>.fd</tt> file with its own format, which fdesign cannot
+read!
+
+\par File/Insert... (Ctrl+i)
+
+Inserts the contents of another <tt>.fl</tt> file, without
+changing the name of the current <tt>.fl</tt> file. All the
+functions (even if they have the same names as the current ones)
+are added, and you will have to use cut/paste to put the widgets
+where you want.
+
+\par File/Save (Ctrl+s)
+
+Writes the current data to the <tt>.fl</tt> file. If the
+file is unnamed then FLUID will ask for a filename.
+
+\par File/Save As... (Ctrl+Shift+S)
+
+Asks for a new filename and saves the file.
+
+\par File/Write Code (Ctrl+Shift+C)
+
+"Compiles" the data into a <tt>.cxx</tt> and <tt>.h</tt>
+file. These are exactly the same as the files you get when you run
+FLUID with the <tt>-c</tt> switch.
+
+The output file names are the same as the <tt>.fl</tt> file, with
+the leading directory and trailing ".fl" stripped, and
+".h" or ".cxx" appended.
+
+\par File/Write Strings (Ctrl+Shift+W)
+
+Writes a message file for all of the text labels defined in
+the current file.
+
+The output file name is the same as the <tt>.fl</tt> file,
+with the leading directory and trailing ".fl"
+stripped, and ".txt", ".po", or ".msg" appended depending on the
+<A HREF="#I18N">Internationalization Mode</A>.
+
+\par File/Quit (Ctrl+q)
+
+Exits FLUID. You are asked for confirmation if you have
+changed the current file.
+
+\par Edit/Undo (Ctrl+z)
+
+This isn't implemented yet. You should do save often so you can
+recover from any mistakes you make.
+
+\par Edit/Cut (Ctrl+x)
+
+Deletes the selected widgets and all of their children.
+These are saved to a "clipboard" file and can be
+pasted back into any FLUID window.
+
+\par Edit/Copy (Ctrl+c)
+
+Copies the selected widgets and all of their children to the
+"clipboard" file.
+
+\par Edit/Paste (Ctrl+c)
+
+Pastes the widgets from the clipboard file.
+
+If the widget is a window, it is added to whatever function
+is selected, or contained in the current selection.
+
+If the widget is a normal widget, it is added to whatever
+window or group is selected. If none is, it is added to the
+window or group that is the parent of the current selection.
+
+To avoid confusion, it is best to select exactly one widget
+before doing a paste.
+
+Cut/paste is the only way to change the parent of a
+widget.
+
+\par Edit/Select All (Ctrl+a)
+
+Selects all widgets in the same group as the current selection.
+
+If they are all selected already then this selects all
+widgets in that group's parent. Repeatedly typing Ctrl+a will
+select larger and larger groups of widgets until everything is
+selected.
+
+\par Edit/Open... (F1 or double click)
+
+Displays the current widget in the attributes panel. If the
+widget is a window and it is not visible then the window is
+shown instead.
+
+\par Edit/Sort
+
+Sorts the selected widgets into left to right, top to bottom
+order. You need to do this to make navigation keys in FLTK work
+correctly. You may then fine-tune the sorting with
+"Earlier" and "Later". This does not affect
+the positions of windows or functions.
+
+\par Edit/Earlier (F2)
+
+Moves all of the selected widgets one earlier in order among
+the children of their parent (if possible). This will affect
+navigation order, and if the widgets overlap it will affect how
+they draw, as the later widget is drawn on top of the earlier
+one. You can also use this to reorder functions, classes, and
+windows within functions.
+
+\par Edit/Later (F3)
+
+<P>Moves all of the selected widgets one later in order among
+the children of their parent (if possible).
+
+\par Edit/Group (F7)
+
+Creates a new <tt>Fl_Group</tt> and make all the currently
+selected widgets children of it.
+
+\par Edit/Ungroup (F8)
+
+Deletes the parent group if all the children of a group are
+selected.
+
+\par Edit/Overlays on/off (Ctrl+Shift+O)
+
+Toggles the display of the red overlays off, without changing
+the selection. This makes it easier to see box borders and how
+the layout looks. The overlays will be forced back on if you
+change the selection.
+
+\par Edit/Project Settings... (Ctrl+p)
+
+Displays the project settings panel.
+The output filenames control the extensions or names of the
+files the are generated by FLUID. If you check the "Include .h
+from .cxx" button the code file will include the header file
+automatically.
+
+The internationalization options are described
+<A HREF="#I18N">later in this chapter</A>.
+
+\image html fluid_prefs.gif "Figure 9-7: FLUID Preferences Window"
+
+\par Edit/GUI Settings... (Shift+Ctrl+p)
+
+Displays the GUI settings panel. This panel is used
+to control the user interface settings.
+
+\par New/Code/Function
+
+Creates a new C function. You will be asked for a name for
+the function. This name should be a legal C++ function
+template, without the return type. You can pass arguments which
+can be referred to by code you type into the individual widgets.
+
+If the function contains any unnamed windows, it will be
+declared as returning a Fl_Window pointer. The unnamed window
+will be returned from it (more than one unnamed window is
+useless). If the function contains only named windows, it will
+be declared as returning nothing (<tt>void</tt>).
+
+It is possible to make the <tt>.cxx</tt> output be a
+self-contained program that can be compiled and executed. This
+is done by deleting the function name so
+<tt>main(argc,argv)</tt> is used. The function will call
+<tt>show()</tt> on all the windows it creates and then call
+<tt>Fl::run()</tt>. This can also be used to test resize
+behavior or other parts of the user interface.
+
+You can change the function name by double-clicking on the
+function.
+
+\par New/Window
+
+Creates a new <tt>Fl_Window</tt> widget. The window is added
+to the currently selected function, or to the function
+containing the currently selected item. The window will appear,
+sized to 100x100. You can resize it to whatever size you
+require.
+
+The widget panel will also appear and is described later in
+this chapter.
+
+\par New/...
+
+All other items on the New menu are subclasses of
+<tt>Fl_Widget</tt>. Creating them will add them to the
+currently selected group or window, or the group or window
+containing the currently selected widget. The initial
+dimensions and position are chosen by copying the current
+widget, if possible.
+
+When you create the widget you will get the widget's control
+panel, which is described later in this chapter.
+
+\par Layout/Align/...
+
+Align all selected widgets to the first widget in the selection.
+
+\par Layout/Space Evenly/...
+
+Space all selected widgets evenly inside the selected space.
+Widgets will be sorted from first to last.
+
+\par Layout/Make Same Size/...
+
+Make all slected widgets the same size as the first selected widget.
+
+\par Layout/Center in Group/...
+
+Center all selected widgets relative to their parent widget
+
+\par Layout/Grid... (Ctrl+g)
+
+Displays the grid settings panel.
+This panel
+controls the grid that all widgets snap to when you move and
+resize them, and for the "snap" which is how far a widget has to
+be dragged from its original position to actually change.
+
+\par Shell/Execute Command... (Alt+x)
+
+Displays the shell command panel. The shell command
+is commonly used to run a 'make' script to compile the FLTK output.
+
+\par Shell/Execute Again (Alt+g)
+
+Run the shell command again.
+
+\par Help/About FLUID
+
+Pops up a panel showing the version of FLUID.
+
+\par Help/On FLUID
+
+Shows this chapter of the manual.
+
+\par Help/Manual
+
+Shows the contents page of the manual
+
+\subsection fluid_widget_panel The Widget Panel
+
+When you double-click on a widget or a set of widgets you
+will get the "widget attribute panel".
+
+When you change attributes using this panel, the changes are
+reflected immediately in the window. It is useful to hit the
+"no overlay" button (or type Ctrl+Shift+O) to hide the
+red overlay so you can see the widgets more accurately,
+especially when setting the box type.
+
+If you have several widgets selected, they may have different
+values for the fields. In this case the value for <I>one</I> of
+the widgets is shown. But if you change this value, <I>all</I>
+of the selected widgets are changed to the new value.
+
+Hitting "OK" makes the changes permanent.
+Selecting a different widget also makes the changes permanent.
+FLUID checks for simple syntax errors such as mismatched
+parenthesis in any code before saving any text.
+
+"Revert" or "Cancel" put everything back
+to when you last brought up the panel or hit OK. However in the
+current version of FLUID, changes to "visible"
+attributes (such as the color, label, box) are not undone by
+revert or cancel. Changes to code like the callbacks are
+undone, however.
+
+<!-- NEW PAGE -->
+
+\image html fluid_widget_gui.gif "Figure 9-8: The FLUID widget GUI attributes"
+
+\section fluid_widget_attributes GUI Attributes
+
+\par Label (text field)
+
+String to print next to or inside the button. You can put
+newlines into the string to make multiple lines. The easiest way
+is by typing Ctrl+j.
+
+<A href="common.html#symbols">Symbols</A>
+can be added to the label using the at sign ("@").
+
+\par Label (pull down menu)
+
+How to draw the label. Normal, shadowed, engraved, and
+embossed change the appearance of the text.
+
+\par Image
+
+The active image for the widget. Click on the
+<B>Browse...</B> button to pick an image file using the file
+chooser.
+
+\par Inactive
+
+The inactive image for the widget. Click on the
+<B>Browse...</B> button to pick an image file using the file
+chooser.
+
+\par Alignment (buttons)
+
+Where to draw the label. The arrows put it on that side of
+the widget, you can combine the to put it in the corner. The
+"box" button puts the label inside the widget, rather
+than outside.
+
+The <B>clip</B> button clips the label to the widget box, the
+<B>wrap</B> button wraps any text in the label, and the <B>text
+image</B> button puts the text over the image instead of under
+the image.
+
+\par Position (text fields)
+
+The position fields show the current position and size of the
+widget box. Enter new values to move and/or resize a widget.
+
+\par Values (text fields)
+
+The values and limits of the current widget. Depending on the
+type of widget, some or all of these fields may be inactive.
+
+\par Shortcut
+
+The shortcut key to activate the widget. Click on the
+shortcut button and press any key sequence to set the shortcut.
+
+\par Attributes (buttons)
+
+The <B>Visible</B> button controls whether the widget is
+visible (on) or hidden (off) initially. Don't change this for
+windows or for the immediate children of a Tabs group.
+
+The <B>Active</B> button controls whether the widget is
+activated (on) or deactivated (off) initially. Most widgets
+appear greyed out when deactivated.
+
+The <B>Resizable</B> button controls whether the window is
+resizeable. In addition all the size changes of a window or
+group will go "into" the resizable child. If you have
+a large data display surrounded by buttons, you probably want
+that data area to be resizable. You can get more complex
+behavior by making invisible boxes the resizable widget, or by
+using hierarchies of groups. Unfortunately the only way to test
+it is to compile the program. Resizing the FLUID window is
+<I>not</I> the same as what will happen in the user program.
+
+The <B>Hotspot</B> button causes the parent window to be
+positioned with that widget centered on the mouse. This
+position is determined <I>when the FLUID function is called</I>,
+so you should call it immediately before showing the window. If
+you want the window to hide and then reappear at a new position,
+you should have your program set the hotspot itself just before
+<tt>show()</tt>.
+
+The <B>Border</B> button turns the window manager border on
+or off. On most window managers you will have to close the
+window and reopen it to see the effect.
+
+\par X Class (text field)
+
+The string typed into here is passed to the X window manager
+as the class. This can change the icon or window decorations.
+On most (all?) window managers you will have to close the window
+and reopen it to see the effect.
+
+\image html fluid_widget_style.gif "Figure 9-9: The FLUID widget Style attributes"
+
+\subsection fluid_style_attributes Style Attributes
+
+\par Label Font (pulldown menu)
+
+Font to draw the label in. Ignored by symbols, bitmaps, and
+pixmaps. Your program can change the actual font used by these
+"slots" in case you want some font other than the 16
+provided.
+
+\par Label Size (pulldown menu)
+
+Pixel size (height) for the font to draw the label in.
+Ignored by symbols, bitmaps, and pixmaps. To see the result
+without dismissing the panel, type the new number and then Tab.
+
+\par Label Color (button)
+
+Color to draw the label. Ignored by pixmaps (bitmaps,
+however, do use this color as the foreground color).
+
+\par Box (pulldown menu)
+
+The boxtype to draw as a background for the widget.
+
+Many widgets will work, and draw faster, with a
+"frame" instead of a "box". A frame does
+not draw the colored interior, leaving whatever was already
+there visible. Be careful, as FLUID may draw this ok but the
+real program may leave unwanted stuff inside the widget.
+
+If a window is filled with child widgets, you can speed up
+redrawing by changing the window's box type to
+"NO_BOX". FLUID will display a checkerboard for any
+areas that are not colored in by boxes. Note that this
+checkerboard is not drawn by the resulting program. Instead
+random garbage will be displayed.
+
+\par Down Box (pulldown menu)
+
+The boxtype to draw when a button is pressed or for some
+parts of other widgets like scrollbars and valuators.
+
+\par Color (button)
+
+The color to draw the box with.
+
+\par Select Color (button)
+
+Some widgets will use this color for certain parts. FLUID
+does not always show the result of this: this is the color
+buttons draw in when pushed down, and the color of input fields
+when they have the focus.
+
+\par Text Font, Size, and Color
+
+Some widgets display text, such as input fields, pull-down
+menus, and browsers.
+
+\image html fluid_widget_cxx.gif "Figure 9-10: The FLUID widget C++ attributes"
+
+\subsection fluid_cpp_attributes C++ Attributes
+
+\par Class
+
+This is how you use your own subclasses of
+<tt>Fl_Widget</tt>. Whatever identifier you type in here will
+be the class that is instantiated.
+
+In addition, no <tt>\#include</tt> header file is put in the
+<tt>.h</tt> file. You must provide a <tt>\#include</tt> line as
+the first line of the "Extra Code" which declares your
+subclass.
+
+The class must be similar to the class you are spoofing. It
+does not have to be a subclass. It is sometimes useful to
+change this to another FLTK class. Currently the only way to get
+a double-buffered window is to change this field for the window
+to "Fl_Double_Window" and to add
+\code "#include <FL/Fl_Double_Window.h> \endcode
+to the extra code.
+
+\par Type (upper-right pulldown menu)
+
+Some classes have subtypes that modify their appearance or behavior.
+You pick the subtype off of this menu.
+
+\par Name (text field)
+
+Name of a variable to declare, and to store a pointer to this
+widget into. This variable will be of type "<class>*". If the name is
+blank then no variable is created.
+
+You can name several widgets with "name[0]", "name[1]", "name[2]",
+etc. This will cause FLUID to declare an array of pointers. The array
+is big enough that the highest number found can be stored. All widgets
+that in the array must be the same type.
+
+\par Public (button)
+
+Controls whether the widget is publicly accessible. When
+embedding widgets in a C++ class, this controls whether the
+widget is <tt>public</tt> or <tt>private</tt> in the class.
+Otherwise is controls whether the widget is declared
+<tt>static</tt> or global (<tt>extern</tt>).
+
+\par Extra Code (text fields)
+
+These four fields let you type in literal lines of code to
+dump into the <tt>.h</tt> or <tt>.cxx</tt> files.
+
+If the text starts with a <tt>\#</tt> or the word
+<tt>extern</tt> then FLUID thinks this is an "include"
+line, and it is written to the <tt>.h</tt> file. If the same
+include line occurs several times then only one copy is
+written.
+
+All other lines are "code" lines. The current
+widget is pointed to by the local variable <tt>o</tt>. The
+window being constructed is pointed to by the local variable
+<tt>w</tt>. You can also access any arguments passed to the
+function here, and any named widgets that are before this
+one.
+
+FLUID will check for matching parenthesis, braces, and
+quotes, but does not do much other error checking. Be careful
+here, as it may be hard to figure out what widget is producing
+an error in the compiler. If you need more than four lines you
+probably should call a function in your own <tt>.cxx</tt>
+code.
+
+\par Callback (text field)
+
+This can either be the name of a function, or a small snippet
+of code. If you enter anything but letters, numbers, and the
+underscore then FLUID treats it as code.
+
+A name names a function in your own code. It must be
+declared as <tt>void name(<class>*,void*)</tt>.
+
+A code snippet is inserted into a static function in the
+<tt>.cxx</tt> output file. The function prototype is <tt>void
+name(class *o, void *v)</tt> so that you can refer to the
+widget as <tt>o</tt> and the <tt>user_data()</tt> as
+<tt>v</tt>. FLUID will check for matching parenthesis, braces,
+and quotes, but does not do much other error checking. Be
+careful here, as it may be hard to figure out what widget is
+producing an error in the compiler.
+
+If the callback is blank then no callback is set.
+
+\par User Data (text field)
+
+This is a value for the <tt>user_data()</tt> of the widget.
+If blank the default value of zero is used. This can be any
+piece of C code that can be cast to a <tt>void</tt> pointer.
+
+\par Type (text field)
+
+The <tt>void *</tt> in the callback function prototypes is
+replaced with this. You may want to use <tt>long</tt> for old
+XForms code. Be warned that anything other than <tt>void *</tt>
+is not guaranteed to work! However on most architectures other
+pointer types are ok, and <tt>long</tt> is usually ok, too.
+
+\par When (pulldown menu)
+
+When to do the callback. This can be <B>Never</B>,
+<B>Changed</B>, <B>Release</B>, or <B>Enter Key</B>. The value of
+<B>Enter Key</B> is only useful for text input fields.
+
+There are other rare but useful values for the
+<tt>when()</tt> field that are not in the menu. You should use
+the extra code fields to put these values in.
+
+\par No Change (button)
+
+The <B>No Change</B> button means the callback is done on the
+matching event even if the data is not changed.
+
+\section fluid_selecting_moving Selecting and Moving Widgets
+
+Double-clicking a window name in the browser will display it,
+if not displayed yet. From this display you can select widgets,
+sets of widgets, and move or resize them. To close a window
+either double-click it or type <KBD>ESC</KBD>.
+
+To select a widget, click it. To select several widgets drag
+a rectangle around them. Holding down shift will toggle the
+selection of the widgets instead.
+
+You cannot pick hidden widgets. You also cannot choose some
+widgets if they are completely overlapped by later widgets. Use
+the browser to select these widgets.
+
+The selected widgets are shown with a red "overlay"
+line around them. You can move the widgets by dragging this
+box. Or you can resize them by dragging the outer edges and
+corners. Hold down the Alt key while dragging the mouse to
+defeat the snap-to-grid effect for fine positioning.
+
+If there is a tab box displayed you can change which child is
+visible by clicking on the file tabs. The child you pick is
+selected.
+
+The arrow, tab, and shift+tab keys "navigate" the
+selection. Left, right, tab, or shift+tab move to the next or
+previous widgets in the hierarchy. Hit the right arrow enough
+and you will select every widget in the window. Up/down widgets
+move to the previous/next widgets that overlap horizontally. If
+the navigation does not seem to work you probably need to
+"Sort" the widgets. This is important if you have
+input fields, as FLTK uses the same rules when using arrow keys
+to move between input fields.
+
+To "open" a widget, double click it. To open
+several widgets select them and then type F1 or pick
+"Edit/Open" off the pop-up menu.
+
+Type Ctrl+o to temporarily toggle the overlay off without
+changing the selection, so you can see the widget borders.
+
+You can resize the window by using the window manager border
+controls. FLTK will attempt to round the window size to the
+nearest multiple of the grid size and makes it big enough to
+contain all the widgets (it does this using illegal X methods,
+so it is possible it will barf with some window managers!).
+Notice that the actual window in your program may not be
+resizable, and if it is, the effect on child widgets may be
+different.
+
+The panel for the window (which you get by double-clicking
+it) is almost identical to the panel for any other Fl_Widget.
+There are three extra items:
+
+\section fluid_images Image Labels
+
+The <I>contents</I> of the image files in the <B>Image</B>
+and <B>Inactive</B> text fields are written to the <tt>.cxx</tt>
+file. If many widgets share the same image then only one copy is
+written. Since the image data is embedded in the generated
+source code, you need only distribute the C++ code and not the
+image files themselves.
+
+However, the <I>filenames</I> are stored in the <tt>.fl</tt>
+file so you will need the image files as well to read the
+<tt>.fl</tt> file. Filenames are relative to the location of the
+<tt>.fl</tt> file and not necessarily the current directory. We
+recommend you either put the images in the same directory as the
+<tt>.fl</tt> file, or use absolute path names.
+
+\par Notes for All Image Types
+
+FLUID runs using the default visual of your X server. This
+may be 8 bits, which will give you dithered images. You may get
+better results in your actual program by adding the code
+"Fl::visual(FL_RGB)" to your code right before the
+first window is displayed.
+
+All widgets with the same image on them share the same code
+and source X pixmap. Thus once you have put an image on a
+widget, it is nearly free to put the same image on many other
+widgets.
+
+If you edit an image at the same time you are using it in FLUID,
+the only way to convince FLUID to read the image file again is to
+remove the image from all widgets that are using it or re-load the
+<tt>.fl</tt> file.
+
+Don't rely on how FLTK crops images that are outside the
+widget, as this may change in future versions! The cropping of
+inside labels will probably be unchanged.
+
+To more accurately place images, make a new "box"
+widget and put the image in that as the label.
+
+\par XBM (X Bitmap) Files
+
+FLUID reads X bitmap files which use C source code to define
+a bitmap. Sometimes they are stored with the ".h" or
+".bm" extension rather than the standard
+".xbm" extension.
+
+FLUID writes code to construct an Fl_Bitmap image and use it
+to label the widget. The '1' bits in the bitmap are drawn using
+the label color of the widget. You can change this color in the
+FLUID widget attributes panel. The '0' bits are transparent.
+
+The program "bitmap" on the X distribution does an
+adequate job of editing bitmaps.
+
+\par XPM (X Pixmap) Files
+
+FLUID reads X pixmap files as used by the <tt>libxpm</tt>
+library. These files use C source code to define a pixmap. The
+filenames usually have the ".xpm" extension.
+
+FLUID writes code to construct an Fl_Pixmap image and use it
+to label the widget. The label color of the widget is ignored,
+even for 2-color images that could be a bitmap. XPM files can
+mark a single color as being transparent, and FLTK uses this
+information to generate a transparency mask for the image.
+
+We have not found any good editors for small iconic pictures.
+For pixmaps we have used
+<A href="http://home.worldonline.dk/~torsten/xpaint/index.html">XPaint</A>
+and the KDE icon editor.
+
+\par BMP Files
+
+FLUID reads Windows BMP image files which are often used in
+WIN32 applications for icons. FLUID converts BMP files into
+(modified) XPM format and uses a Fl_BMP_Image image to label the
+widget. Transparency is handled the same as for XPM files. All
+image data is uncompressed when written to the source file, so
+the code may be much bigger than the <tt>.bmp</tt> file.
+
+\par GIF Files
+
+FLUID reads GIF image files which are often used in HTML
+documents to make icons. FLUID converts GIF files into
+(modified) XPM format and uses a Fl_GIF_Image image to label the
+widget. Transparency is handled the same as for XPM files. All
+image data is uncompressed when written to the source file, so
+the code may be much bigger than the <tt>.gif</tt> file. Only
+the first image of an animated GIF file is used.
+
+\par JPEG Files
+
+If FLTK is compiled with JPEG support, FLUID can read JPEG
+image files which are often used for digital photos. FLUID uses
+a Fl_JPEG_Image image to label the widget, and writes
+uncompressed RGB or grayscale data to the source file.
+
+\par PNG (Portable Network Graphics) Files
+
+If FLTK is compiled with PNG support, FLUID can read PNG
+image files which are often used in HTML documents. FLUID uses a
+Fl_PNG_Image image to label the widget, and writes uncompressed
+RGB or grayscale data to the source file. PNG images can provide
+a full alpha channel for partial transparency, and FLTK supports
+this as best as possible on each platform.
+
+<A NAME="I18N"> </A> <!-- For old HTML links only ! -->
+\section fluid_i18n Internationalization with FLUID
+
+FLUID supports internationalization (I18N for short) of label
+strings used by widgets. The preferences window
+(<tt>Ctrl+p</tt>) provides access to the I18N options.
+
+\subsection fluid_i18n_methods I18N Methods
+
+FLUID supports three methods of I18N: use none, use GNU
+gettext, and use POSIX catgets. The "use none" method is the
+default and just passes the label strings as-is to the widget
+constructors.
+
+The "GNU gettext" method uses GNU gettext (or a similar
+text-based I18N library) to retrieve a localized string before
+calling the widget constructor.
+
+The "POSIX catgets" method uses the POSIX catgets function to
+retrieve a numbered message from a message catalog before
+calling the widget constructor.
+
+\subsection fluid_gettext_i18n Using GNU gettext for I18N
+
+FLUID's code support for GNU gettext is limited to calling a
+function or macro to retrieve the localized label; you still
+need to call <tt>setlocale()</tt> and <tt>textdomain()</tt> or
+<tt>bindtextdomain()</tt> to select the appropriate language and
+message file.
+
+To use GNU gettext for I18N, open the preferences window and
+choose "GNU gettext" from the "Use" chooser. Two new input
+fields will then appear to control the include file and
+function/macro name to use when retrieving the localized label
+strings.
+
+ \image html fluid-gettext.gif "Figure 9-11: Internationalization using GNU gettext"
+
+The "\#include" field controls the header file to include for
+I18N; by default this is \b <libintl.h>, the
+standard I18N file for GNU gettext.
+
+The "Function" field controls the function (or macro) that
+will retrieve the localized message; by default the
+<tt>gettext</tt> function will be called.
+
+\subsection fluid_catgets_i18n Using POSIX catgets for I18N
+
+FLUID's code support for POSIX catgets allows you to use a
+global message file for all interfaces or a file specific to
+each <tt>.fl</tt> file; you still need to call
+<tt>setlocale()</tt> to select the appropriate language.
+
+To use POSIX catgets for I18N, open the preferences window
+and choose "POSIX catgets" from the "Use" chooser. Three new
+input fields will then appear to control the include file,
+catalog file, and set number for retrieving the localized label
+strings.
+
+ \image html fluid-catgets.gif "Figure 9-12: Internationalization using POSIX catgets"
+
+The "\#include" field controls the header file to include for
+I18N; by default this is \b <nl_types.h>, the
+standard I18N file for POSIX catgets.
+
+The "File" field controls the name of the catalog file
+variable to use when retrieving localized messages; by default
+the file field is empty which forces a local (static) catalog
+file to be used for all of the windows defined in your
+<tt>.fl</tt> file.
+
+The "Set" field controls the set number in the catalog file.
+The default set is 1 and rarely needs to be changed.
+
+<A NAME="limitations"> </A> <!-- For old HTML links only ! -->
+\section fluid_limitations Known limitations
+
+Declaration Blocks can be used to temporarily block out already
+designed code using <tt>\#if 0</tt> and <tt>\#endif</tt>
+type construction. This will effectively avoid compilation of
+blocks of code. However, static code and data generated by this
+segment (menu items, images, include statements, etc.) will still
+be generated and likely cause compile-time warnings.
+
+\htmlonly
+<hr>
+<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
+<a class="el" href="opengl.html">[Previous]&nbsp; 8 - Using OpenGL</a>&nbsp;
+<a class="el" href="advanced.html">[Next]&nbsp; 10 - Advanced FLTK</a>&nbsp;
+\endhtmlonly
+*/
diff --git a/documentation/src_doc/fluid1.gif b/documentation/src_doc/fluid1.gif
new file mode 100644
index 000000000..cfdefd7a7
--- /dev/null
+++ b/documentation/src_doc/fluid1.gif
Binary files differ
diff --git a/documentation/src_doc/fluid2.gif b/documentation/src_doc/fluid2.gif
new file mode 100644
index 000000000..e551e84a5
--- /dev/null
+++ b/documentation/src_doc/fluid2.gif
Binary files differ
diff --git a/documentation/src_doc/fluid3-cxx.gif b/documentation/src_doc/fluid3-cxx.gif
new file mode 100644
index 000000000..420ccaf31
--- /dev/null
+++ b/documentation/src_doc/fluid3-cxx.gif
Binary files differ
diff --git a/documentation/src_doc/fluid3-gui.gif b/documentation/src_doc/fluid3-gui.gif
new file mode 100644
index 000000000..5f757264c
--- /dev/null
+++ b/documentation/src_doc/fluid3-gui.gif
Binary files differ
diff --git a/documentation/src_doc/fluid3-style.gif b/documentation/src_doc/fluid3-style.gif
new file mode 100644
index 000000000..ecb55b40c
--- /dev/null
+++ b/documentation/src_doc/fluid3-style.gif
Binary files differ
diff --git a/documentation/src_doc/fluid4.gif b/documentation/src_doc/fluid4.gif
new file mode 100644
index 000000000..d9e029273
--- /dev/null
+++ b/documentation/src_doc/fluid4.gif
Binary files differ
diff --git a/documentation/src_doc/fluid_prefs.gif b/documentation/src_doc/fluid_prefs.gif
new file mode 100644
index 000000000..0bc7d8d11
--- /dev/null
+++ b/documentation/src_doc/fluid_prefs.gif
Binary files differ
diff --git a/documentation/src_doc/fluid_widget_cxx.gif b/documentation/src_doc/fluid_widget_cxx.gif
new file mode 100644
index 000000000..cb12e76dc
--- /dev/null
+++ b/documentation/src_doc/fluid_widget_cxx.gif
Binary files differ
diff --git a/documentation/src_doc/fluid_widget_gui.gif b/documentation/src_doc/fluid_widget_gui.gif
new file mode 100644
index 000000000..d5ac3c676
--- /dev/null
+++ b/documentation/src_doc/fluid_widget_gui.gif
Binary files differ
diff --git a/documentation/src_doc/fluid_widget_style.gif b/documentation/src_doc/fluid_widget_style.gif
new file mode 100644
index 000000000..f5bf9b1e2
--- /dev/null
+++ b/documentation/src_doc/fluid_widget_style.gif
Binary files differ
diff --git a/documentation/src_doc/forms.dox b/documentation/src_doc/forms.dox
new file mode 100644
index 000000000..d48457e60
--- /dev/null
+++ b/documentation/src_doc/forms.dox
@@ -0,0 +1,247 @@
+/**
+
+ \page forms E - Forms Compatibility
+
+This appendix describes the Forms compatibility included with FLTK.
+
+\section forms_importing Importing Forms Layout Files
+
+<A href=fluid.html#FLUID>FLUID</A> can read the .fd files put out by
+all versions of Forms and XForms fdesign. However, it will mangle them
+a bit, but it prints a warning message about anything it does not
+understand. FLUID cannot write fdesign files, so you should save to a
+new name so you don't write over the old one.
+
+You will need to edit your main code considerably to get it to link
+with the output from FLUID. If you are not interested in this you may
+have more immediate luck with the forms compatibility header, <tt>
+<FL/forms.H></tt>.
+
+\section forms_using Using the Compatibility Header File
+
+You should be able to compile existing Forms or XForms source code by
+changing the include directory switch to your compiler so that the <tt>
+forms.h</tt> file supplied with FLTK is included. Take a look at <tt>
+forms.h</tt> to see how it works, but the basic trick is lots of inline
+functions. Most of the XForms demo programs work without changes.
+
+You will also have to compile your Forms or XForms program using a
+C++ compiler. The FLTK library does not provide C bindings or header
+files.
+
+Although FLTK was designed to be compatible with the GL Forms
+library (version 0.3 or so), XForms has bloated severely and it's
+interface is X-specific. Therefore, XForms compatibility is no longer
+a goal of FLTK. Compatibility was limited to things that were free, or
+that would add code that would not be linked in if the feature is
+unused, or that was not X-specific.
+
+To use any new features of FLTK, you should rewrite your code to not
+use the inline functions and instead use "pure" FLTK. This will make
+it a lot cleaner and make it easier to figure out how to call the FLTK
+functions. Unfortunately this conversion is harder than expected and
+even Digital Domain's inhouse code still uses <tt>forms.H</tt> a lot.
+
+\section forms_problems Problems You Will Encounter
+
+Many parts of XForms use X-specific structures like <tt>XEvent</tt>
+in their interface. I did not emulate these! Unfortunately these
+features (such as the "canvas" widget) are needed by most large
+programs. You will need to rewrite these to use FLTK subclasses.
+
+<A href=Fl_Free.html#Fl_Free><tt>Fl_Free</tt></A> widgets emulate
+the <I>old</I> Forms "free" widget. It may be useful for porting
+programs that change the <tt>handle()</tt> function on widgets, but you
+will still need to rewrite things.
+
+<A href=Fl_Timer.html#Fl_Timer><tt>Fl_Timer</tt></A> widgets are
+provided to emulate the XForms timer. These work, but are quite
+inefficient and inaccurate compared to using <A href="Fl.html#Fl.add_timeout">
+<tt>Fl::add_timeout()</tt></A>.
+
+<I>All instance variables are hidden.</I> If you directly refer to
+the x, y, w, h, label, or other fields of your Forms widgets you will
+have to add empty parenthesis after each reference. The easiest way to
+do this is to globally replace "->x" with "->x()", etc. Replace
+"boxtype" with "box()".
+
+<tt>const char *</tt> arguments to most FLTK methods are simply
+stored, while Forms would <tt>strdup()</tt> the passed string. This is
+most noticable with the label of widgets. Your program must always
+pass static data such as a string constant or malloc'd buffer to <tt>
+label()</tt>. If you are using labels to display program output you
+may want to try the <A href=Fl_Output.html#Fl_Output><tt>Fl_Output</tt></A>
+widget.
+
+The default fonts and sizes are matched to the older GL version of
+Forms, so all labels will draw somewhat larger than an XForms program
+does.
+
+fdesign outputs a setting of a "fdui" instance variable to the main
+window. I did not emulate this because I wanted all instance variables
+to be hidden. You can store the same information in the <tt>user_data()</tt>
+ field of a window. To do this, search through the fdesign output for
+all occurances of "->fdui" and edit to use "->user_data()" instead.
+This will require casts and is not trivial.
+
+The prototype for the functions passed to <tt>fl_add_timeout()</tt>
+and <tt>fl_set_idle_callback()</tt> callback are different.
+
+<B>All the following XForms calls are missing:</B>
+
+\li <tt>FL_REVISION</tt>, <tt>fl_library_version()</tt>
+\li <tt>FL_RETURN_DBLCLICK</tt> (use <tt>Fl::event_clicks()</tt>)
+\li <tt>fl_add_signal_callback()</tt>
+\li <tt>fl_set_form_atactivate()</tt> <tt>fl_set_form_atdeactivate()</tt>
+\li <tt>fl_set_form_property()</tt>
+\li <tt>fl_set_app_mainform()</tt>, <tt>fl_get_app_mainform()</tt>
+\li <tt>fl_set_form_minsize()</tt>, <tt>fl_set_form_maxsize()</tt>
+\li <tt>fl_set_form_event_cmask()</tt>, <tt>fl_get_form_event_cmask()</tt>
+\li <tt>fl_set_form_dblbuffer()</tt>, <tt>fl_set_object_dblbuffer()</tt>
+ (use an <tt>Fl_Double_Window</tt> instead)
+\li <tt>fl_adjust_form_size()</tt>
+\li <tt>fl_register_raw_callback()</tt>
+\li <tt>fl_set_object_bw()</tt>, <tt>fl_set_border_width()</tt>
+\li <tt>fl_set_object_resize()</tt>, <tt>fl_set_object_gravity()</tt>
+\li <tt>fl_set_object_shortcutkey()</tt>
+\li <tt>fl_set_object_automatic()</tt>
+\li <tt>fl_get_object_bbox()</tt> (maybe FLTK should do this)
+\li <tt>fl_set_object_prehandler()</tt>, <tt>fl_set_object_posthandler()</tt>
+\li <tt>fl_enumerate_fonts()</tt>
+\li Most drawing functions
+\li <tt>fl_set_coordunit()</tt> (FLTK uses pixels all the time)
+\li <tt>fl_ringbell()</tt>
+\li <tt>fl_gettime()</tt>
+\li <tt>fl_win*()</tt> (all these functions)
+\li <tt>fl_initialize(argc,argv,x,y,z)</tt> ignores last 3 arguments
+\li <tt>fl_read_bitmapfile()</tt>, <tt>fl_read_pixmapfile()</tt>
+\li <tt>fl_addto_browser_chars()</tt>
+\li <tt>FL_MENU_BUTTON</tt> just draws normally
+\li <tt>fl_set_bitmapbutton_file()</tt>, <tt>fl_set_pixmapbutton_file()</tt>
+\li <tt>FL_CANVAS</tt> objects
+\li <tt>FL_DIGITAL_CLOCK</tt> (comes out analog)
+\li <tt>fl_create_bitmap_cursor()</tt>, <tt>fl_set_cursor_color()</tt>
+\li <tt>fl_set_dial_angles()</tt>
+\li <tt>fl_show_oneliner()</tt>
+\li <tt>fl_set_choice_shortcut(a,b,c) </tt>
+\li command log
+\li Only some of file selector is emulated
+\li <tt>FL_DATE_INPUT</tt>
+\li <tt>fl_pup*()</tt> (all these functions)
+\li textbox object (should be easy but I had no sample programs)
+\li xyplot object
+
+\section forms_notes Additional Notes
+
+These notes were written for porting programs written with the older
+IRISGL version of Forms. Most of these problems are the same ones
+encountered when going from old Forms to XForms:
+
+\par Does Not Run In Background
+
+The IRISGL library always forked when you created the first window,
+unless "foreground()" was called. FLTK acts like "foreground()" is
+called all the time. If you really want the fork behavior do "if
+(fork()) exit(0)" right at the start of your program.
+
+\par You Cannot Use IRISGL Windows or fl_queue
+
+If a Forms (not XForms) program if you wanted your own window for
+displaying things you would create a IRISGL window and draw in it,
+periodically calling Forms to check if the user hit buttons on the
+panels. If the user did things to the IRISGL window, you would find
+this out by having the value FL_EVENT returned from the call to Forms.
+
+None of this works with FLTK. Nor will it compile, the necessary
+calls are not in the interface.
+
+You have to make a subclass of <A href=Fl_Gl_Window.html#Fl_Gl_Window>
+<tt>Fl_Gl_Window</tt></A> and write a <tt>draw()</tt> method and <tt>
+handle()</tt> method. This may require anywhere from a trivial to a
+major rewrite.
+
+If you draw into the overlay planes you will have to also write a <tt>
+draw_overlay()</tt> method and call <tt>redraw_overlay()</tt> on the
+OpenGL window.
+
+One easy way to hack your program so it works is to make the <tt>
+draw()</tt> and <tt>handle()</tt> methods on your window set some
+static variables, storing what event happened. Then in the main loop
+of your program, call <tt>Fl::wait()</tt> and then check these
+variables, acting on them as though they are events read from <tt>
+fl_queue</tt>.
+
+\par You Must Use OpenGL to Draw Everything
+
+The file <tt><FL/gl.h></tt> defines replacements for a lot of IRISGL
+calls, translating them to OpenGL. There are much better translators
+available that you might want to investigate.
+
+\par You Cannot Make Forms Subclasses
+
+Programs that call <tt>fl_make_object</tt> or directly setting the
+handle routine will not compile. You have to rewrite them to use a
+subclass of <tt>Fl_Widget</tt>. It is important to note that the <tt>
+handle()</tt> method is not exactly the same as the <tt>handle()</tt>
+function of Forms. Where a Forms <tt>handle()</tt> returned non-zero,
+your <tt>handle()</tt> must call <tt>do_callback()</tt>. And your <tt>
+handle()</tt> must return non-zero if it "understood" the event.
+
+An attempt has been made to emulate the "free" widget. This appears
+to work quite well. It may be quicker to modify your subclass into a
+"free" widget, since the "handle" functions match.
+
+If your subclass draws into the overlay you are in trouble and will
+have to rewrite things a lot.
+
+\par You Cannot Use <device.h>
+
+If you have written your own "free" widgets you will probably get a
+lot of errors about "getvaluator". You should substitute:
+
+<CENTER>
+<TABLE border=1 WIDTH=90% summary="Mapping of Forms valuators to FLTK.">
+<TR><TH align=center>Forms</TH><TH align=center>FLTK</TH></TR>
+<TR><TD>MOUSE_X</TD><TD>Fl::event_x_root()</TD></TR>
+<TR><TD>MOUSE_Y</TD><TD>Fl::event_y_root()</TD></TR>
+<TR><TD>LEFTSHIFTKEY,RIGHTSHIFTKEY</TD><TD>Fl::event_shift()</TD></TR>
+<TR><TD>CAPSLOCKKEY</TD><TD>Fl::event_capslock()</TD></TR>
+<TR><TD>LEFTCTRLKEY,RIGHTCTRLKEY</TD><TD>Fl::event_ctrl()</TD></TR>
+<TR><TD>LEFTALTKEY,RIGHTALTKEY</TD><TD>Fl::event_alt()</TD></TR>
+<TR><TD>MOUSE1,RIGHTMOUSE</TD><TD>Fl::event_state()</TD></TR>
+<TR><TD>MOUSE2,MIDDLEMOUSE</TD><TD>Fl::event_state()</TD></TR>
+<TR><TD>MOUSE3,LEFTMOUSE</TD><TD>Fl::event_state()</TD></TR>
+</TABLE>
+</CENTER>
+
+Anything else in <tt>getvaluator</tt> and you are on your own...
+
+\par Font Numbers Are Different
+
+The "style" numbers have been changed because I wanted to insert
+bold-italic versions of the normal fonts. If you use Times, Courier,
+or Bookman to display any text you will get a different font out of
+FLTK. If you are really desperate to fix this use the following code:
+
+\code
+fl_font_name(3,"*courier-medium-r-no*");
+fl_font_name(4,"*courier-bold-r-no*");
+fl_font_name(5,"*courier-medium-o-no*");
+fl_font_name(6,"*times-medium-r-no*");
+fl_font_name(7,"*times-bold-r-no*");
+fl_font_name(8,"*times-medium-i-no*");
+fl_font_name(9,"*bookman-light-r-no*");
+fl_font_name(10,"*bookman-demi-r-no*");
+fl_font_name(11,"*bookman-light-i-no*");
+\endcode
+
+\htmlonly
+<hr>
+<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
+<a class="el" href="glut.html">[Previous]</a>&nbsp;
+ \ref glut &nbsp;&nbsp;
+<a class="el" href="osissues.html">[Next]</a>&nbsp;
+ \ref osissues
+
+\endhtmlonly
+*/
diff --git a/documentation/src_doc/glut.dox b/documentation/src_doc/glut.dox
new file mode 100644
index 000000000..18d4f25bd
--- /dev/null
+++ b/documentation/src_doc/glut.dox
@@ -0,0 +1,248 @@
+/**
+
+ \page glut D - GLUT Compatibility
+
+This appendix describes the GLUT compatibility header file supplied with
+FLTK. FLTK's GLUT compatibility is based on the original GLUT 3.7 and
+the follow-on FreeGLUT 2.4.0 libraries.
+
+\section glut_using Using the GLUT Compatibility Header File
+
+You should be able to compile existing GLUT source code by including
+<tt><FL/glut.H></tt> instead of <tt><GL/glut.h></tt>. This can be
+done by editing the source, by changing the <tt>-I</tt> switches to
+the compiler, or by providing a symbolic link from <tt>GL/glut.h</tt>
+to <tt>FL/glut.H</tt>.
+
+<I>All files calling GLUT procedures must be compiled with C++</I>. You
+may have to alter them slightly to get them to compile without warnings,
+and you may have to rename them to get make to use the C++ compiler.
+
+You must link with the FLTK library. Most of <tt>FL/glut.H</tt>
+is inline functions. You should take a look at it (and maybe at
+<tt>test/glpuzzle.cxx</tt> in the FLTK source) if you are having trouble
+porting your GLUT program.
+
+This has been tested with most of the demo programs that come with
+the GLUT and FreeGLUT distributions.
+
+\section glut_known_problems Known Problems
+
+The following functions and/or arguments to functions are missing,
+and you will have to replace them or comment them out for your code
+to compile:
+
+\li <tt>glutGet(GLUT_ELAPSED_TIME)</tt>
+\li <tt>glutGet(GLUT_SCREEN_HEIGHT_MM)</tt>
+\li <tt>glutGet(GLUT_SCREEN_WIDTH_MM)</tt>
+\li <tt>glutGet(GLUT_WINDOW_NUM_CHILDREN)</tt>
+\li <tt>glutInitDisplayMode(GLUT_LUMINANCE)</tt>
+\li <tt>glutLayerGet(GLUT_HAS_OVERLAY)</tt>
+\li <tt>glutLayerGet(GLUT_LAYER_IN_USE)</tt>
+\li <tt>glutPushWindow()</tt>
+\li <tt>glutSetColor(), glutGetColor(), glutCopyColormap()</tt>
+\li <tt>glutVideoResize()</tt> missing.
+\li <tt>glutWarpPointer()</tt>
+\li <tt>glutWindowStatusFunc()</tt>
+\li Spaceball, buttonbox, dials, and tablet functions
+
+Most of the symbols/enumerations have different values than GLUT uses.
+This will break code that relies on the actual values. The only
+symbols guaranteed to have the same values are true/false pairs like <tt>
+GLUT_DOWN</tt> and <tt>GLUT_UP</tt>, mouse buttons <tt>
+GLUT_LEFT_BUTTON, GLUT_MIDDLE_BUTTON, GLUT_RIGHT_BUTTON</tt>, and <tt>
+GLUT_KEY_F1</tt> thru <tt>F12</tt>.
+
+The strings passed as menu labels are not copied.
+
+<tt>glutPostRedisplay()</tt> does not work if called from inside a
+display function. You must use <tt>glutIdleFunc()</tt> if you want
+your display to update continuously.
+
+<tt>glutSwapBuffers()</tt> does not work from inside a display
+function. This is on purpose, because FLTK swaps the buffers for you.
+
+<tt>glutUseLayer()</tt> does not work well, and should only be used
+to initialize transformations inside a resize callback. You should
+redraw overlays by using <tt>glutOverlayDisplayFunc()</tt>.
+
+Overlays are cleared before the overlay display function is called. <tt>
+glutLayerGet(GLUT_OVERLAY_DAMAGED)</tt> always returns true for
+compatibility with some GLUT overlay programs. You must rewrite your
+code so that <tt>gl_color()</tt> is used to choose colors in an
+overlay, or you will get random overlay colors.
+
+<tt>glutSetCursor(GLUT_CURSOR_FULL_CROSSHAIR)</tt> just results in a
+small crosshair.
+
+The fonts used by <tt>glutBitmapCharacter() and glutBitmapWidth()</tt>
+may be different.
+
+<tt>glutInit(argc,argv)</tt> will consume different switches than
+GLUT does. It accepts the switches recognized by <A href="Fl.html#Fl.args">
+<tt>Fl::args()</tt></A>, and will accept any abbreviation of these
+switches (such as "-di" for "-display").
+
+\section glut_mixing Mixing GLUT and FLTK Code
+
+You can make your GLUT window a child of a <tt>Fl_Window</tt> with the
+following scheme. The biggest trick is that GLUT insists on
+<tt>show()</tt>'ing the window at the point it is created, which means the
+<tt>Fl_Window</tt> parent window must already be shown.
+
+\li Don't call <tt>glutInit()</tt>.
+\li Create your <tt>Fl_Window</tt>, and any FLTK widgets. Leave a
+ blank area in the window for your GLUT window.
+\li <tt>show()</tt> the <tt>Fl_Window</tt>. Perhaps call <tt>
+ show(argc,argv)</tt>.
+\li Call <tt>window->begin()</tt> so that the GLUT window will be
+ automatically added to it.
+\li Use <tt>glutInitWindowSize()</tt> and <tt>glutInitWindowPosition()</tt>
+ to set the location in the parent window to put the GLUT window.
+\li Put your GLUT code next. It probably does not need many changes.
+ Call <tt>window->end()</tt> immediately after the
+ <tt>glutCreateWindow()</tt>!
+\li You can call either <tt>glutMainLoop()</tt>, <tt>Fl::run()</tt>,
+ or loop calling <tt>Fl::wait()</tt> to run the program.
+
+<HR break>
+ <A NAME="Fl_Glut_Window"></A> <!-- For old HTML links only ! -->
+ \section glut_Fl_Glut_Window class Fl_Glut_Window
+\htmlonly
+<HR>
+
+\subsection glut_class_hierarchy Class Hierarchy
+
+\code
+Fl_Gl_Window
+ |
+ +----Fl_Glut_Window
+\endcode
+
+\subsection glut_include_files Include Files
+
+\code
+#include <FL/glut.H>
+\endcode
+
+\subsection glut_description Description
+
+Each GLUT window is an instance of this class. You may find it useful
+to manipulate instances directly rather than use GLUT window id's.
+These may be created without opening the display, and thus can fit
+better into FLTK's method of creating windows.
+
+The current GLUT window is available in the global variable <tt>
+glut_window</tt>. </P>
+
+<tt>new Fl_Glut_Window(...)</tt> is the same as <tt>
+glutCreateWindow()</tt> except it does not <tt>show()</tt> the window
+or make the window current. </P>
+
+<tt>window->make_current()</tt> is the same as <tt>glutSetWindow(number)</tt>.
+If the window has not had <tt>show()</tt> called on it yet, some functions
+that assumme an OpenGL context will not work.
+If you do <tt>show()</tt> the window, call <tt>make_current()</tt>
+again to set the context. </P>
+
+<tt>~Fl_Glut_Window()</tt> is the same as <tt>glutDestroyWindow()</tt>.
+
+\subsection glut_members Members
+
+The <tt>Fl_Glut_Window</tt> class contains several public members that can
+be altered directly:
+
+<CENTER><TABLE WIDTH="80%" BORDER="1" ALT="Fl_Glut_Window public members.">
+<TR>
+ <TH>member</TH>
+ <TH>description</TH>
+</TR>
+<TR>
+ <TD>display</TD>
+ <TD>A pointer to the function to call to draw the normal planes.</TD>
+</TR>
+<TR>
+ <TD>entry</TD>
+ <TD>A pointer to the function to call when the mouse moves into
+ or out of the window.</TD>
+</TR>
+<TR>
+ <TD>keyboard</TD>
+ <TD>A pointer to the function to call when a regular key is pressed.</TD>
+</TR>
+<TR>
+ <TD>menu[3]</TD>
+ <TD>The menu to post when one of the mouse buttons is pressed.</TD>
+</TR>
+<TR>
+ <TD>mouse</TD>
+ <TD>A pointer to the function to call when a button is pressed or
+ released.</TD>
+</TR>
+<TR>
+ <TD>motion</TD>
+ <TD>A pointer to the function to call when the mouse is moved with
+ a button down.</TD>
+</TR>
+<TR>
+ <TD>overlaydisplay</TD>
+ <TD>A pointer to the function to call to draw the overlay planes.</TD>
+</TR>
+<TR>
+ <TD>passivemotion</TD>
+ <TD>A pointer to the function to call when the mouse is moved with
+ no buttons down.</TD>
+</TR>
+<TR>
+ <TD>reshape</TD>
+ <TD>A pointer to the function to call when the window is resized.</TD>
+</TR>
+<TR>
+ <TD>special</TD>
+ <TD>A pointer to the function to call when a special key is pressed.</TD>
+</TR>
+<TR>
+ <TD>visibility</TD>
+ <TD>A pointer to the function to call when the window is iconified
+ or restored (made visible.)</TD>
+</TR>
+</TABLE></CENTER>
+
+\subsection glut_methods Methods
+
+\li <A href=#Fl_Glut_Window.Fl_Glut_Window>Fl_Glut_Window</A>
+\li <A href=#Fl_Glut_Window.~Fl_Glut_Window>~Fl_Glut_Window</A>
+\li <A href=#Fl_Glut_Window.make_current>make_current</A>
+
+<A name="Fl_Glut_Window.Fl_Glut_Window"></A> <!-- For old HTML links only ! -->
+Fl_Glut_Window::Fl_Glut_Window(int x, int y, int w, int h, const char
+*title = 0) <br>
+Fl_Glut_Window::Fl_Glut_Window(int w, int h, const char *title = 0)
+
+\par
+The first constructor takes 4 int arguments to create the window with
+a preset position and size. The second constructor with 2 arguments
+will create the window with a preset size, but the window manager will
+choose the position according to it's own whims.
+
+<A name="Fl_Glut_Window.~Fl_Glut_Window"> </A> <!-- For old HTML links only ! -->
+virtual Fl_Glut_Window::~Fl_Glut_Window()
+
+\par
+Destroys the GLUT window.
+
+<A name="Fl_Glut_Window.make_current"> </A> <!-- For old HTML links only ! -->
+void Fl_Glut_Window::make_current()
+
+\par
+Switches all drawing functions to the GLUT window.
+
+<hr>
+<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
+<a class="el" href="enumerations.html">[Previous]</a>&nbsp;
+ \ref enumerations &nbsp;&nbsp;
+<a class="el" href="forms.html">[Next]</a>&nbsp;
+ \ref forms
+
+\endhtmlonly
+*/
diff --git a/documentation/src_doc/hello.C.gif b/documentation/src_doc/hello.C.gif
new file mode 100644
index 000000000..559b69520
--- /dev/null
+++ b/documentation/src_doc/hello.C.gif
Binary files differ
diff --git a/documentation/src_doc/intro.dox b/documentation/src_doc/intro.dox
new file mode 100644
index 000000000..2965883c1
--- /dev/null
+++ b/documentation/src_doc/intro.dox
@@ -0,0 +1,353 @@
+/**
+
+ \page intro 1 - Introduction to FLTK
+
+The Fast Light Tool Kit ("FLTK", pronounced
+"fulltick") is a cross-platform C++ GUI toolkit for
+UNIX&reg;/Linux&reg; (X11), Microsoft&reg; Windows&reg;, and
+MacOS&reg; X. FLTK provides modern GUI functionality without the
+bloat and supports 3D graphics via OpenGL&reg; and its built-in
+GLUT emulation. It was originally developed by Mr. Bill Spitzak
+and is currently maintained by a small group of developers
+across the world with a central repository in the US.
+
+\section intro_history History of FLTK
+
+It has always been Bill's belief that the GUI API of all
+modern systems is much too high level. Toolkits (even FLTK) are
+<I>not</I> what should be provided and documented as part of an
+operating system. The system only has to provide arbitrary
+shaped but featureless windows, a powerful set of graphics
+drawing calls, and a simple <I>unalterable</I> method of
+delivering events to the owners of the windows. NeXT (if you
+ignored NextStep) provided this, but they chose to hide it and
+tried to push their own baroque toolkit instead.
+
+Many of the ideas in FLTK were developed on a NeXT (but
+<I>not</I> using NextStep) in 1987 in a C toolkit Bill called
+"views". Here he came up with passing events downward
+in the tree and having the handle routine return a value
+indicating whether it used the event, and the table-driven menus. In
+general he was trying to prove that complex UI ideas could be
+entirely implemented in a user space toolkit, with no knowledge
+or support by the system.
+
+After going to film school for a few years, Bill worked at
+Sun Microsystems on the (doomed) NeWS project. Here he found an
+even better and cleaner windowing system, and he reimplemented
+"views" atop that. NeWS did have an unnecessarily
+complex method of delivering events which hurt it. But the
+designers did admit that perhaps the user could write just as
+good of a button as they could, and officially exposed the lower
+level interface.
+
+With the death of NeWS Bill realized that he would have to
+live with X. The biggest problem with X is the "window
+manager", which means that the toolkit can no longer
+control the window borders or drag the window around.
+
+At Digital Domain Bill discovered another toolkit,
+"Forms". Forms was similar to his work, but provided
+many more widgets, since it was used in many real applications,
+rather then as theoretical work. He decided to use Forms, except
+he integrated his table-driven menus into it. Several very large
+programs were created using this version of Forms.
+
+The need to switch to OpenGL and GLX, portability, and a
+desire to use C++ subclassing required a rewrite of Forms.
+This produced the first version of FLTK. The conversion to C++
+required so many changes it made it impossible to recompile any
+Forms objects. Since it was incompatible anyway, Bill decided
+to incorporate his older ideas as much as possible by
+simplifying the lower level interface and the event passing
+mechanisim.
+
+Bill received permission to release it for free on the
+Internet, with the GNU general public license. Response from
+Internet users indicated that the Linux market dwarfed the SGI
+and high-speed GL market, so he rewrote it to use X for all
+drawing, greatly speeding it up on these machines. That is the
+version you have now.
+
+Digital Domain has since withdrawn support for FLTK. While
+Bill is no longer able to actively develop it, he still
+contributes to FLTK in his free time and is a part of the FLTK
+development team.
+
+\section intro_features Features
+
+FLTK was designed to be statically linked. This was done by
+splitting it into many small objects and designing it so that
+functions that are not used do not have pointers to them in the
+parts that are used, and thus do not get linked in. This allows
+you to make an easy-to-install program or to modify FLTK to
+the exact requirements of your application without worrying
+about bloat. FLTK works fine as a shared library, though, and
+is now included with several Linux distributions.
+
+Here are some of the core features unique to FLTK:
+
+\li sizeof(Fl_Widget) == 64 to 92.
+
+\li The "core" (the "hello" program compiled & linked with a static FLTK
+ library using gcc on a 486 and then stripped) is 114K.
+
+\li The FLUID program (which includes every widget) is 538k.
+
+\li Written directly atop core libraries (Xlib, WIN32 or Carbon) for
+ maximum speed, and carefully optimized for code size and performance.
+
+\li Precise low-level compatability between the X11, WIN32 and MacOS
+ versions - only about 10% of the code is different.
+
+\li Interactive user interface builder program. Output is human-readable
+ and editable C++ source code.
+
+\li Support for overlay hardware, with emulation if none is available.
+
+\li Very small & fast portable 2-D drawing library to hide Xlib, WIN32,
+ or QuickDraw.
+
+\li OpenGL/Mesa drawing area widget.
+
+\li Support for OpenGL overlay hardware on both X11 and WIN32, with
+ emulation if none is available.
+
+\li Text widgets with Emacs key bindings, X cut & paste, and foreign
+ letter compose!
+
+\li Compatibility header file for the GLUT library.
+
+\li Compatibility header file for the XForms library.
+
+\section intro_licensing Licensing
+
+FLTK comes with complete free source code. FLTK is available
+under the terms of the <A href="license.html">GNU Library
+General Public License</A> with exceptions that allow for static
+linking. Contrary to popular belief, it can be used in
+commercial software - even Bill Gates could use it!
+
+\section intro_what What Does "FLTK" Mean?
+
+FLTK was originally designed to be compatible with the Forms
+Library written for SGI machines. In that library all the
+functions and structures started with "fl_". This
+naming was extended to all new methods and widgets in the C++
+library, and this prefix was taken as the name of the library.
+It is almost impossible to search for "FL" on the
+Internet, due to the fact that it is also the abbreviation for
+Florida. After much debating and searching for a new name for
+the toolkit, which was already in use by several people, Bill
+came up with "FLTK", including a bogus excuse that it
+stands for "The Fast Light Toolkit".
+
+\section intro_unix Building and Installing FLTK Under UNIX and MacOS X
+
+In most cases you can just type "make". This will
+run configure with the default of no options and then compile
+everything.
+
+FLTK uses GNU autoconf to configure itself for your UNIX
+platform. The main things that the configure script will look
+for are the X11 and OpenGL (or Mesa) header and library files.
+If these cannot be found in the standard include/library
+locations you'll need to define the <tt>CFLAGS</tt>,
+<tt>CXXFLAGS</tt>, and <tt>LDFLAGS</tt> environment variables.
+For the Bourne and Korn shells you'd use:
+
+\code
+CFLAGS=-Iincludedir; export CFLAGS
+CXXFLAGS=-Iincludedir; export CXXFLAGS
+LDFLAGS=-Llibdir; export LDFLAGS
+\endcode
+
+For C shell and tcsh, use:
+
+\code
+setenv CFLAGS "-Iincludedir"
+setenv CXXFLAGS "-Iincludedir"
+setenv LDFLAGS "-Llibdir"
+\endcode
+
+By default configure will look for a C++ compiler named
+<tt>CC</tt>, <tt>c++</tt>, <tt>g++</tt>, or <tt>gcc</tt> in that
+order. To use another compiler you need to set the <tt>CXX</tt>
+environment variable:
+
+\code
+CXX=xlC; export CXX
+setenv CXX "xlC"
+\endcode
+
+The <tt>CC</tt> environment variable can also be used to
+override the default C compiler (<tt>cc</tt> or <tt>gcc</tt>),
+which is used for a few FLTK source files.
+
+You can run configure yourself to get the exact setup you need.
+Type "./configure <options>", where options are:
+
+\par --enable-cygwin
+Enable the Cygwin libraries under WIN32
+
+\par --enable-debug
+Enable debugging code & symbols
+
+\par --disable-gl
+Disable OpenGL support
+
+\par --enable-shared
+Enable generation of shared libraries
+
+\par --enable-threads
+Enable multithreading support
+
+\par --enable-xdbe
+Enable the X double-buffer extension
+
+\par --enable-xft
+Enable the Xft library for anti-aliased fonts under X11
+
+\par --bindir=/path
+Set the location for executables [default = $prefix/bin]
+
+\par --datadir=/path
+Set the location for data files. [default = $prefix/share]
+
+\par --libdir=/path
+Set the location for libraries [default = $prefix/lib]
+
+\par --includedir=/path
+Set the location for include files. [default = $prefix/include]
+
+\par --mandir=/path
+Set the location for man pages. [default = $prefix/man]
+
+\par --prefix=/dir
+Set the directory prefix for files [default = /usr/local]
+
+When the configure script is done you can just run the
+"make" command. This will build the library, FLUID
+tool, and all of the test programs.
+
+To install the library, become root and type "make
+install". This will copy the "fluid" executable
+to "bindir", the header files to
+"includedir", and the library files to
+"libdir".
+
+\section intro_windows Building FLTK Under Microsoft Windows
+
+There are three ways to build FLTK under Microsoft Windows.
+The first is to use the Visual C++ 5.0 project files under the
+"visualc" directory. Just open (or double-click on)
+the "fltk.dsw" file to get the whole shebang.
+
+The second method is to use the <TT>configure</TT> script
+included with the FLTK software; this has only been tested with
+the CygWin tools:
+
+\code
+sh configure --prefix=C:/FLTK
+make
+\endcode
+
+The final method is to use a GNU-based development tool with
+the files in the "makefiles" directory. To build
+using one of these tools simply copy the appropriate
+makeinclude and config files to the main directory and do a
+make:
+
+\code
+copy makefiles\Makefile.<env> Makefile
+make
+\endcode
+
+\subsection intro_visualcpp Using the Visual C++ DLL Library
+
+The "fltkdll.dsp" project file builds a DLL-version
+of the FLTK library. Because of name mangling differences
+between PC compilers (even between different versions of Visual
+C++!) you can only use the DLL that is generated with the same
+version compiler that you built it with.
+
+When compiling an application or DLL that uses the FLTK DLL,
+you will need to define the <tt>FL_DLL</tt> preprocessor symbol
+to get the correct linkage commands embedded within the FLTK
+header files.
+
+\section intro_os2 Building FLTK Under OS/2
+
+The current OS/2 build requires XFree86 for OS/2 to work. A
+native Presentation Manager version has not been implemented
+yet (volunteers are welcome!).
+
+The current set of Makefiles/configuration failes assumes that EMX 0.9d
+and libExt (from
+<A HREF="http://posix2.sourceforge.net">posix2.sourceforge.net</A>)
+is installed.
+
+To build the XFree86 version of FLTK for OS/2, copy the appropriate
+makeinclude and config files to the main directory and do a make:
+
+\code
+copy makefiles\Makefile.os2x Makefile
+make
+\endcode
+
+\section intro_internet Internet Resources
+
+FLTK is available on the 'net in a bunch of locations:
+
+\par WWW
+<A href="http://www.fltk.org/">http://www.fltk.org/</A> <BR>
+<A href="http://www.fltk.org/str.php">http://www.fltk.org/str.php</A>
+ [for reporting bugs]<BR>
+<A href="http://www.fltk.org/software.php">http://www.fltk.org/software.php</A>
+ [source code]
+
+\par FTP
+<A HREF="ftp://ftp.fltk.org/pub/fltk">California, USA (ftp.fltk.org)</A><BR>
+<A HREF="ftp://ftp2.fltk.org/pub/fltk">Maryland, USA (ftp2.fltk.org)</A><BR>
+<A HREF="ftp://ftp.funet.fi/pub/mirrors/ftp.fltk.org/pub/fltk">Espoo, Finland (ftp.funet.fi)</A><BR>
+<A HREF="ftp://linux.mathematik.tu-darmstadt.de/pub/linux/mirrors/misc/fltk">Germany (linux.mathematik.tu-darmstadt.de)</A><BR>
+<A HREF="ftp://gd.tuwien.ac.at/hci/fltk">Austria (gd.tuwien.ac.at)</A>
+
+\par EMail
+<A href="mailto:fltk@fltk.org">fltk@fltk.org</A> [see instructions below]<BR>
+<A href="mailto:fltk-bugs@fltk.org">fltk-bugs@fltk.org</A> [for reporting bugs]
+
+\par NNTP Newsgroups
+news.easysw.com
+
+To send a message to the FLTK mailing list
+("fltk@fltk.org") you must first join the list.
+Non-member submissions are blocked to avoid problems with
+unsolicited email.
+
+To join the FLTK mailing list, send a message to
+"majordomo@fltk.org" with "subscribe fltk"
+in the message body. A digest of this list is available by
+subscribing to the "fltk-digest" mailing list.
+
+\section intro_reporting Reporting Bugs
+
+To report a bug in FLTK, send an email to
+"fltk-bugs@fltk.org". Please include the FLTK version,
+operating system & version, and compiler that you are using
+when describing the bug or problem. We will be unable to provide
+any kind of help without that basic information.
+
+Bugs can also be reported to the "fltk.bugs" newsgroup or on the
+SourceForge bug tracker pages.
+
+For general support and questions, please use the FLTK mailing list
+at "fltk@fltk.org" or one of the newsgroups.
+
+\htmlonly
+<hr>
+<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
+<a class="el" href="preface.html">[Previous]&nbsp; Preface</a>&nbsp;
+<a class="el" href="basics.html">[Next]&nbsp; 2 - FLTK Basics</a>&nbsp;
+\endhtmlonly
+*/
diff --git a/documentation/src_doc/license.dox b/documentation/src_doc/license.dox
new file mode 100644
index 000000000..d90bc8bab
--- /dev/null
+++ b/documentation/src_doc/license.dox
@@ -0,0 +1,502 @@
+/**
+
+ \page license J - Software License
+
+\par December 11, 2001
+
+The FLTK library and included programs are provided under the terms
+of the GNU Library General Public License (LGPL) with the following
+exceptions:
+
+-# Modifications to the FLTK configure script, config
+ header file, and makefiles by themselves to support
+ a specific platform do not constitute a modified or
+ derivative work.<BR>
+ <BR>
+ The authors do request that such modifications be
+ contributed to the FLTK project - send all
+ contributions to "fltk-bugs@fltk.org".<BR>
+ <BR>
+-# Widgets that are subclassed from FLTK widgets do not
+ constitute a derivative work.<BR>
+ <BR>
+-# Static linking of applications and widgets to the
+ FLTK library does not constitute a derivative work
+ and does not require the author to provide source
+ code for the application or widget, use the shared
+ FLTK libraries, or link their applications or
+ widgets against a user-supplied version of FLTK.<BR>
+ <BR>
+ If you link the application or widget to a modified
+ version of FLTK, then the changes to FLTK must be
+ provided under the terms of the LGPL in sections
+ 1, 2, and 4.<BR>
+ <BR>
+-# You do not have to provide a copy of the FLTK license
+ with programs that are linked to the FLTK library, nor
+ do you have to identify the FLTK license in your
+ program or documentation as required by section 6
+ of the LGPL.<BR>
+ <BR>
+ However, programs must still identify their use of FLTK.
+ The following example statement can be included in user
+ documentation to satisfy this requirement:<BR>
+ <BR>
+ <I>[program/widget] is based in part on the work of
+ the FLTK project (http://www.fltk.org).</I>
+
+\htmlonly
+<HR>
+
+\par GNU LIBRARY GENERAL PUBLIC LICENSE
+
+Version 2, June 1991 <BR>
+Copyright (C) 1991 Free Software Foundation, Inc. <BR>
+59 Temple Place - Suite 330, Boston, MA 02111-1307, USA <BR>
+Everyone is permitted to copy and distribute verbatim copies of
+this license document, but changing it is not allowed. <BR>
+[This is the first released version of the library GPL. It is
+numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+\par Preamble
+
+The licenses for most software are designed to take away your freedom
+to share and change it. By contrast, the GNU General Public Licenses
+are intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.
+
+This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it. You can use it for
+your libraries, too.
+
+When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it in
+new free programs; and that you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the library, or if you modify it.
+
+For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library. If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software. To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License, which was designed for utility
+programs. This license, the GNU Library General Public License,
+applies to certain designated libraries. This license is quite
+different from the ordinary one; be sure to read it in full, and don't
+assume that anything in it is the same as in the ordinary license.
+
+The reason we have a separate public license for some libraries is
+that they blur the distinction we usually make between modifying or
+adding to a program and simply using it. Linking a program with a
+library, without changing the library, is in some sense simply using
+the library, and is analogous to running a utility program or
+application program. However, in a textual and legal sense, the linked
+executable is a combined work, a derivative of the original library,
+and the ordinary General Public License treats it as such.
+
+Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries. We
+concluded that weaker conditions might promote sharing better.
+
+However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves. This Library General Public License is intended
+to permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them. (We have not seen how to
+achieve this as regards changes in header files, but we have achieved
+it as regards changes in the actual functions of the Library.) The
+hope is that this will lead to faster development of free libraries.
+
+The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+&quot;work based on the libary&quot; and a &quot;work that uses the library&quot;. The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+\par TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+\b 0. This License Agreement applies to any software
+library which contains a notice placed by the copyright holder or other
+authorized party saying it may be distributed under the terms of this
+Library General Public License (also called &quot;this License&quot;).
+Each licensee is addressed as &quot;you&quot;.
+
+A &quot;library&quot; means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+The &quot;Library&quot;, below, refers to any such software library or work
+which has been distributed under these terms. A &quot;work based on the
+Library&quot; means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term &quot;modification&quot;.)
+
+&quot;Source code&quot; for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control
+compilation and installation of the library.
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does and
+what the program that uses the Library does.
+
+\b 1. You may copy and distribute verbatim copies of
+the Library's complete source code as you receive it, in any medium,
+provided that you conspicuously and appropriately publish on each copy
+an appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the Library.
+
+You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+\b 2. You may modify your copy or copies of the
+Library or any portion of it, thus forming a work based on the Library,
+and copy and distribute such modifications or work under the terms of
+Section 1 above, provided that you also meet all of these conditions:
+
+\b a) The modified work must itself be a software library.
+
+\b b) You must cause the files modified to carry
+prominent notices stating that you changed the files and the date of
+any change.
+
+\b c) You must cause the whole of the work to be
+licensed at no charge to all third parties under the terms of this
+License.
+
+\b d) If a facility in the modified Library refers to
+a function or a table of data to be supplied by an application program
+that uses the facility, other than as an argument passed when the
+facility is invoked, then you must make a good faith effort to ensure
+that, in the event an application does not supply such function or
+table, the facility still operates, and performs whatever part of its
+purpose remains meaningful.
+
+(For example, a function in a library to compute square roots has a
+purpose that is entirely well-defined independent of the application.
+ Therefore, Subsection 2d requires that any application-supplied
+function or table used by this function must be optional: if the
+application does not supply it, the square root function must still
+compute square roots.)
+
+These requirements apply to the modified work as a whole.
+If identifiable sections of that work are not derived from the
+Library, and can be reasonably considered independent and separate
+works in themselves, then this License, and its terms, do not apply to
+those sections when you distribute them as separate works. But when
+you distribute the same sections as part of a whole which is a work
+based on the Library, the distribution of the whole must be on the
+terms of this License, whose permissions for other licensees extend to
+the entire whole, and thus to each and every part regardless of who
+wrote it.
+
+Thus, it is not the intent of this section to claim rights or
+contest your rights to work written entirely by you; rather, the intent
+is to exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the
+Library with the Library (or with a work based on the Library) on a
+volume of a storage or distribution medium does not bring the other
+work under the scope of this License.
+
+\b 3. You may opt to apply the terms of the ordinary
+GNU General Public License instead of this License to a given copy of
+the Library. To do this, you must alter all the notices that refer to
+this License, so that they refer to the ordinary GNU General Public
+License, version 2, instead of to this License. (If a newer version
+than version 2 of the ordinary GNU General Public License has appeared,
+then you can specify that version instead if you wish.) Do not make
+any other change in these notices.
+
+Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+This option is useful when you wish to copy part of the code of the
+Library into a program that is not a library.
+
+\b 4. You may copy and distribute the Library (or a
+portion or derivative of it, under Section 2) in object code or
+executable form under the terms of Sections 1 and 2 above provided that
+you accompany it with the complete corresponding machine-readable
+source code, which must be distributed under the terms of Sections 1
+and 2 above on a medium customarily used for software interchange.
+
+If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to distribute
+the source code, even though third parties are not compelled to copy
+the source along with the object code.
+
+\b 5. A program that contains no derivative of any
+portion of the Library, but is designed to work with the Library by
+being compiled or linked with it, is called a &quot;work that uses the
+Library&quot;. Such a work, in isolation, is not a derivative work of the
+Library, and therefore falls outside the scope of this License.
+
+However, linking a &quot;work that uses the Library&quot; with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a &quot;work that uses the
+library&quot;. The executable is therefore covered by this License. Section
+6 states terms for distribution of such executables.
+
+When a &quot;work that uses the Library&quot; uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6, whether
+or not they are linked directly with the Library itself.
+
+\b 6. As an exception to the Sections above, you may also compile or
+link a &quot;work that uses the Library&quot; with the Library to
+produce a work containing portions of the Library, and distribute that
+work under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+\b a) Accompany the work
+with the complete corresponding machine-readable source code for the
+Library including whatever changes were used in the work (which must
+be distributed under Sections 1 and 2 above); and, if the work is an
+executable linked with the Library, with the complete machine-readable
+&quot;work that uses the Library&quot;, as object code and/or source code, so
+that the user can modify the Library and then relink to produce a
+modified executable containing the modified Library. (It is
+understood that the user who changes the contents of definitions files
+in the Library will not necessarily be able to recompile the
+application to use the modified definitions.)
+
+\b b) Accompany the work with a written offer, valid
+for at least three years, to give the same user the materials
+specified in Subsection 6a, above, for a charge no more than the cost
+of performing this distribution.
+
+\b c) If distribution of the work is made by offering
+access to copy from a designated place, offer equivalent access to
+copy the above specified materials from the same place.
+
+\b d) Verify that the user has already received a copy
+of these materials or that you have already sent this user a copy.
+
+For an executable, the required form of the &quot;work that
+uses the Library&quot; must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major components
+(compiler, kernel, and so on) of the operating system on which the
+executable runs, unless that component itself accompanies the
+executable.
+
+It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+\b 7. You may place library facilities that are a work
+based on the Library side-by-side in a single library together with
+other library facilities not covered by this License, and distribute
+such a combined library, provided that the separate distribution of the
+work based on the Library and of the other library facilities is
+otherwise permitted, and provided that you do these two things:
+
+\b a) Accompany the combined library with a copy of the
+same work based on the Library, uncombined with any other library
+facilities. This must be distributed under the terms of the Sections
+above.
+
+\b b) Give prominent notice with the combined library
+of the fact that part of it is a work based on the Library, and
+explaining where to find the accompanying uncombined form of the same
+work.
+
+
+\b 8. You may not copy, modify, sublicense,
+link with, or distribute the Library except as expressly provided under
+this License. Any attempt otherwise to copy, modify, sublicense, link
+with, or distribute the Library is void, and will automatically
+terminate your rights under this License. However, parties who have
+received copies, or rights, from you under this License will not have
+their licenses terminated so long as such parties remain in full
+compliance.
+
+\b 9. You are not required to accept this License,
+since you have not signed it. However, nothing else grants you
+permission to modify or distribute the Library or its derivative works.
+These actions are prohibited by law if you do not accept this License.
+Therefore, by modifying or distributing the Library (or any work based
+on the Library), you indicate your acceptance of this License to do so,
+and all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+\b 10. Each time you redistribute the Library (or any
+work based on the Library), the recipient automatically receives a
+license from the original licensor to copy, distribute, link with or
+modify the Library subject to these terms and conditions. You may not
+impose any further restrictions on the recipients' exercise of the
+rights granted herein. You are not responsible for enforcing compliance
+by third parties to this License.
+
+\b 11. If, as a consequence of a court judgment or
+allegation of patent infringement or for any other reason (not limited
+to patent issues), conditions are imposed on you (whether by court
+order, agreement or otherwise) that contradict the conditions of this
+License, they do not excuse you from the conditions of this License.
+If you cannot distribute so as to satisfy simultaneously your
+obligations under this License and any other pertinent obligations,
+then as a consequence you may not distribute the Library at all. For
+example, if a patent license would not permit royalty-free
+redistribution of the Library by all those who receive copies directly
+or indirectly through you, then the only way you could satisfy both it
+and this License would be to refrain entirely from distribution of the
+Library.
+
+If any portion of this section is held invalid or unenforceable
+under any particular circumstance, the balance of the section is
+intended to apply, and the section as a whole is intended to apply in
+other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is implemented
+by public license practices. Many people have made generous
+contributions to the wide range of software distributed through that
+system in reliance on consistent application of that system; it is up
+to the author/donor to decide if he or she is willing to distribute
+software through any other system and a licensee cannot impose that
+choice.
+
+This section is intended to make thoroughly clear what is believed
+to be a consequence of the rest of this License.
+
+\b 12. If the distribution and/or use of the Library
+is restricted in certain countries either by patents or by copyrighted
+interfaces, the original copyright holder who places the Library under
+this License may add an explicit geographical distribution limitation
+excluding those countries, so that distribution is permitted only in or
+among countries not thus excluded. In such case, this License
+incorporates the limitation as if written in the body of this License.
+
+\b 13. The Free Software Foundation may publish
+revised and/or new versions of the Library General Public License from
+time to time. Such new versions will be similar in spirit to the
+present version, but may differ in detail to address new problems or
+concerns.
+
+Each version is given a distinguishing version number. If the
+Library specifies a version number of this License which applies to it
+and &quot;any later version&quot;, you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+\b 14. If you wish to incorporate parts of the Library
+into other free programs whose distribution conditions are incompatible
+with these, write to the author to ask for permission. For software
+which is copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+\par NO WARRANTY
+
+\b 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE,
+THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY &quot;AS IS&quot; WITHOUT
+WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE
+OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU
+ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+\b 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW
+OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY
+WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE
+LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL
+OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+\par END OF TERMS AND CONDITIONS
+
+<hr>
+<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
+<a class="el" href="development.html">[Previous]</a>&nbsp;
+ \ref development &nbsp;&nbsp;
+<a class="el" href="examples.html">[Next]</a>&nbsp;
+ \ref examples
+
+\endhtmlonly
+*/
diff --git a/documentation/src_doc/menu.gif b/documentation/src_doc/menu.gif
new file mode 100644
index 000000000..6ed0f6d32
--- /dev/null
+++ b/documentation/src_doc/menu.gif
Binary files differ
diff --git a/documentation/src_doc/menu_button.gif b/documentation/src_doc/menu_button.gif
new file mode 100644
index 000000000..9fc5df0dd
--- /dev/null
+++ b/documentation/src_doc/menu_button.gif
Binary files differ
diff --git a/documentation/src_doc/menubar.gif b/documentation/src_doc/menubar.gif
new file mode 100644
index 000000000..5c6c9442b
--- /dev/null
+++ b/documentation/src_doc/menubar.gif
Binary files differ
diff --git a/documentation/src_doc/migration_1_1.dox b/documentation/src_doc/migration_1_1.dox
new file mode 100644
index 000000000..17a498cc0
--- /dev/null
+++ b/documentation/src_doc/migration_1_1.dox
@@ -0,0 +1,172 @@
+/**
+
+ \page migration_1_1 G - Migrating Code from FLTK 1.0 to 1.1
+
+
+This appendix describes the differences between the FLTK
+1.0.x and FLTK 1.1.x functions and classes.
+
+\section migration_1_1_color Color Values
+
+Color values are now stored in a 32-bit unsigned integer
+instead of the unsigned character in 1.0.x. This allows for the
+specification of 24-bit RGB values or 8-bit FLTK color indices.
+
+<tt>FL_BLACK</tt> and <tt>FL_WHITE</tt> now remain black and
+white, even if the base color of the gray ramp is changed using
+<A HREF="Fl.html#Fl.background"><tt>Fl::background()</tt></A>.
+<tt>FL_DARK3</tt> and <tt>FL_LIGHT3</tt> can be used instead to
+draw a very dark or a very bright background hue.
+
+Widgets use the new color symbols <tt>FL_FORGROUND_COLOR</tt>,
+<tt>FL_BACKGROUND_COLOR</tt>, <tt>FL_BACKGROUND2_COLOR</tt>,
+<tt>FL_INACTIVE_COLOR</tt>, and <tt>FL_SELECTION_COLOR</tt>.
+More details can be found in the chapter
+<A HREF="enumerations.html#colors">Enumerations</A>.
+
+\section migration_1_1_cutnpaste Cut and Paste Support
+
+The FLTK clipboard is now broken into two parts - a local
+selection value and a cut-and-paste value. This allows FLTK to
+support things like highlighting and replacing text that was
+previously cut or copied, which makes FLTK applications behave
+like traditional GUI applications.
+
+\section migration_1_1_file_chooser File Chooser
+
+The file chooser in FLTK 1.1.x is significantly different
+than the one supplied with FLTK 1.0.x. Any code that directly
+references the old <tt>FCB</tt> class or members will need
+to be ported to the new
+<A HREF="Fl_File_Chooser.html"><tt>Fl_File_Chooser</tt></A>
+class.
+
+\section migration_1_1_functions Function Names
+
+Some function names have changed from FLTK 1.0.x to 1.1.x in
+order to avoid name space collisions. You can still use the old
+function names by defining the <tt>FLTK_1_0_COMPAT</tt>
+symbol on the command-line when you compile
+(<tt>-DFLTK_1_0_COMPAT</tt>) or in your source, e.g.:
+
+\code
+#define FLTK_1_0_COMPAT
+#include <FL/Fl.H>
+#include <FL/Enumerations.H>
+#include <FL/filename.H>
+\endcode
+
+The following table shows the old and new function names:
+
+<CENTER>
+<TABLE WIDTH="80%" BORDER="1">
+<TR>
+ <TH>Old 1.0.x Name</TH>
+ <TH>New 1.1.x Name</TH>
+</TR>
+<TR>
+ <TD>contrast()</TD>
+ <TD>fl_contrast()</TD>
+</TR>
+<TR>
+ <TD>down()</TD>
+ <TD>fl_down()</TD>
+</TR>
+<TR>
+ <TD>filename_absolute()</TD>
+ <TD>fl_filename_absolute()</TD>
+</TR>
+<TR>
+ <TD>filename_expand()</TD>
+ <TD>fl_filename_expand()</TD>
+</TR>
+<TR>
+ <TD>filename_ext()</TD>
+ <TD>fl_filename_ext()</TD>
+</TR>
+<TR>
+ <TD>filename_isdir()</TD>
+ <TD>fl_filename_isdir()</TD>
+</TR>
+<TR>
+ <TD>filename_list()</TD>
+ <TD>fl_filename_list()</TD>
+</TR>
+<TR>
+ <TD>filename_match()</TD>
+ <TD>fl_filename_match()</TD>
+</TR>
+<TR>
+ <TD>filename_name()</TD>
+ <TD>fl_filename_name()</TD>
+</TR>
+<TR>
+ <TD>filename_relative()</TD>
+ <TD>fl_filename_relative()</TD>
+</TR>
+<TR>
+ <TD>filename_setext()</TD>
+ <TD>fl_filename_setext()</TD>
+</TR>
+<TR>
+ <TD>frame()</TD>
+ <TD>fl_frame()</TD>
+</TR>
+<TR>
+ <TD>inactive()</TD>
+ <TD>fl_inactive()</TD>
+</TR>
+<TR>
+ <TD>numericsort()</TD>
+ <TD>fl_numericsort()</TD>
+</TR>
+</TABLE>
+</CENTER>
+
+\section migration_1_1_images Image Support
+
+Image support in FLTK has been significantly revamped in
+1.1.x. The <A HREF="Fl_Image.html"><tt>Fl_Image</tt></A> class
+is now a proper base class, with the core image drawing
+functionality in the
+<A HREF="Fl_Bitmap.html"><tt>Fl_Bitmap</tt></A>,
+<A HREF="Fl_Pixmap.html"><tt>Fl_Pixmap</tt></A>,
+and
+<A HREF="Fl_RGB_Image.html"><tt>Fl_RGB_Image</tt></A>
+classes.
+
+BMP, GIF, JPEG, PNG, XBM, and XPM image files can now be
+loaded using the appropriate image classes, and the
+<A HREF="Fl_Shared_Image.html"><tt>Fl_Shared_Image</tt></A>
+class can be used to cache images in memory.
+
+Image labels are no longer provided as an add-on label type.
+If you use the old <tt>label()</tt> methods on an image, the
+widget's <tt>image()</tt> method is called to set the image
+as the label.
+
+Image labels in menu items must still use the old labeltype
+mechanism to preserve source compatibility.
+
+\section migration_1_1_keyboard Keyboard Navigation
+
+FLTK 1.1.x now supports keyboard navigation and control with
+all widgets. To restore the old FLTK 1.0.x behavior so that only
+text widgets get keyboard focus, call the
+<A HREF="Fl.html#Fl.visible_focus"><CODE>Fl::visible_focus()</CODE></A>
+method to disable it:
+
+\code
+Fl::visible_focus(0);
+\endcode
+
+\htmlonly
+<hr>
+<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
+<a class="el" href="osissues.html">[Previous]</a>&nbsp;
+ \ref osissues &nbsp;&nbsp;
+<a class="el" href="migration_1_3.html">[Next]</a>&nbsp;
+ \ref migration_1_3
+
+\endhtmlonly
+*/
diff --git a/documentation/src_doc/migration_1_3.dox b/documentation/src_doc/migration_1_3.dox
new file mode 100644
index 000000000..70023b38c
--- /dev/null
+++ b/documentation/src_doc/migration_1_3.dox
@@ -0,0 +1,20 @@
+/**
+
+ \page migration_1_3 H - Migrating Code from FLTK 1.1 to 1.3
+
+This appendix describes the differences between the FLTK
+1.1.x and FLTK 1.3.x functions and classes.
+
+If you want to migrate your code from FLTK 1.0 to FLTK 1.3,
+then you should also consult Appendix \ref migration_1_1.
+
+\htmlonly
+<hr>
+<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
+<a class="el" href="migration_1_1.html">[Previous]</a>&nbsp;
+ \ref migration_1_1 &nbsp;&nbsp;
+<a class="el" href="development.html">[Next]</a>&nbsp;
+ \ref development
+
+\endhtmlonly
+*/
diff --git a/documentation/src_doc/opengl.dox b/documentation/src_doc/opengl.dox
new file mode 100644
index 000000000..bed6b5d5c
--- /dev/null
+++ b/documentation/src_doc/opengl.dox
@@ -0,0 +1,459 @@
+/**
+
+ \page opengl 8 - Using OpenGL
+
+This chapter discusses using FLTK for your OpenGL applications.
+
+\section opengl_using Using OpenGL in FLTK
+
+The easiest way to make an OpenGL display is to subclass
+<A href="Fl_Gl_Window.html#Fl_Gl_Window"><tt>Fl_Gl_Window</tt></A>.
+Your subclass must implement a <tt>draw()</tt> method which uses
+OpenGL calls to draw the display. Your main program should call
+<tt>redraw()</tt> when the display needs to change, and
+(somewhat later) FLTK will call <tt>draw()</tt>.
+
+With a bit of care you can also use OpenGL to draw into
+normal FLTK windows. This allows you to use Gouraud shading for
+drawing your widgets. To do this you use the
+<A href="#gl_start"><tt>gl_start()</tt></A>
+and
+<A href=#gl_finish><tt>gl_finish()</tt></A>
+functions around your OpenGL code.
+
+You must include FLTK's <tt><FL/gl.h></tt> header
+file. It will include the file <tt><GL/gl.h></tt>, define
+some extra drawing functions provided by FLTK, and include the
+<tt><windows.h></tt> header file needed by WIN32
+applications.
+
+\section opengl_subclass Making a Subclass of Fl_Gl_Window
+
+To make a subclass of Fl_Gl_Window, you must provide:
+
+\li A class definition.
+
+\li A <tt>draw()</tt> method.
+
+\li A <tt>handle()</tt> method if you need to receive input from the user.
+
+If your subclass provides static controls in the window, they
+must be redrawn whenever the <tt>FL_DAMAGE_ALL</tt> bit is set
+in the value returned by <tt>damage()</tt>. For double-buffered
+windows you will need to surround the drawing code with the
+following code to make sure that both buffers are redrawn:
+
+\code
+#ifndef MESA
+glDrawBuffer(GL_FRONT_AND_BACK);
+#endif // !MESA
+... draw stuff here ...
+#ifndef MESA
+glDrawBuffer(GL_BACK);
+#endif // !MESA
+\endcode
+
+<CENTER><TABLE WIDTH="80%" BORDER="1" CELLPADDING="5" CELLSPACING="0" BGCOLOR="#cccccc">
+<TR>
+ <TD><B>Note:</B>
+
+ <P>If you are using the Mesa graphics library, the call
+ to <tt>glDrawBuffer()</tt> is not required and will slow
+ down drawing considerably. The preprocessor instructions
+ shown above will optimize your code based upon the
+ graphics library used.
+
+ </TD>
+
+</TR>
+</TABLE></CENTER>
+
+\subsection opengl_defining Defining the Subclass
+
+To define the subclass you just subclass the <tt>Fl_Gl_Window</tt> class:
+
+\code
+class MyWindow : public Fl_Gl_Window {
+ void draw();
+ int handle(int);
+
+public:
+ MyWindow(int X, int Y, int W, int H, const char *L)
+ : Fl_Gl_Window(X, Y, W, H, L) {}
+};
+\endcode
+
+The <tt>draw()</tt> and <tt>handle()</tt> methods are
+described below. Like any widget, you can include additional
+private and public data in your class (such as scene graph
+information, etc.)
+
+\subsection opengl_draw The draw() Method
+
+The <tt>draw()</tt> method is where you actually do your OpenGL drawing:
+
+\code
+void MyWindow::draw() {
+ if (!valid()) {
+ ... set up projection, viewport, etc ...
+ ... window size is in w() and h().
+ ... valid() is turned on by FLTK after draw() returns
+ }
+ ... draw ...
+}
+\endcode
+
+\subsection opengl_handle The handle() Method
+
+The <tt>handle()</tt> method handles mouse and keyboard
+events for the window:
+
+\code
+int MyWindow::handle(int event) {
+ switch(event) {
+ case FL_PUSH:
+ ... mouse down event ...
+ ... position in Fl::event_x() and Fl::event_y()
+ return 1;
+ case FL_DRAG:
+ ... mouse moved while down event ...
+ return 1;
+ case FL_RELEASE:
+ ... mouse up event ...
+ return 1;
+ case FL_FOCUS :
+ case FL_UNFOCUS :
+ ... Return 1 if you want keyboard events, 0 otherwise
+ return 1;
+ case FL_KEYBOARD:
+ ... keypress, key is in Fl::event_key(), ascii in Fl::event_text()
+ ... Return 1 if you understand/use the keyboard event, 0 otherwise...
+ return 1;
+ case FL_SHORTCUT:
+ ... shortcut, key is in Fl::event_key(), ascii in Fl::event_text()
+ ... Return 1 if you understand/use the shortcut event, 0 otherwise...
+ return 1;
+ default:
+ // pass other events to the base class...
+ return Fl_Gl_Window::handle(event);
+ }
+}
+\endcode
+
+When <tt>handle()</tt> is called, the OpenGL context is not
+set up! If your display changes, you should call
+<tt>redraw()</tt> and let <tt>draw()</tt> do the work. Don't
+call any OpenGL drawing functions from inside <tt>handle()</tt>!
+
+You can call <I>some</I> OpenGL stuff like hit detection and texture
+loading functions by doing:
+
+\code
+ case FL_PUSH:
+ make_current(); // make OpenGL context current
+ if (!valid()) {
+
+ ... set up projection exactly the same as draw ...
+
+ valid(1); // stop it from doing this next time
+ }
+ ... ok to call NON-DRAWING OpenGL code here, such as hit
+ detection, loading textures, etc...
+\endcode
+
+Your main program can now create one of your windows by doing
+<tt>new MyWindow(...)</tt>. You can also use
+<A href="fluid.html#FLUID">FLUID</A>
+by:
+
+-# Putting your class definition in a <tt>MyWindow.H</tt> file.
+ <br>
+-# Creating a <tt>Fl_Box</tt> widget in FLUID.
+ <br>
+-# In the widget panel fill in the "class" field with <tt>MyWindow</tt>.
+ This will make FLUID produce constructors for your new class.
+ <br>
+-# In the "Extra Code" field put <tt>\#include "MyWindow.H"</tt>,
+ so that the FLUID output file will compile.
+
+You must put <tt>glwindow->show()</tt> in your main code
+after calling <tt>show()</tt> on the window containing the
+OpenGL window.
+
+\section opengl_normal Using OpenGL in Normal FLTK Windows
+
+You can put OpenGL code into an
+<A href="subclassing.html#draw"><tt>Fl_Widget::draw()</tt></A>
+method or into the code for a
+<A href="common.html#boxtypes">boxtype</A>
+or other places with some care.
+
+Most importantly, before you show <I>any</I> windows,
+including those that don't have OpenGL drawing, you <B>must</B>
+initialize FLTK so that it knows it is going to use OpenGL. You
+may use any of the symbols described for Fl_Gl_Window::mode()
+to describe how you intend to use OpenGL:
+
+\code
+Fl::gl_visual(FL_RGB);
+\endcode
+
+You can then put OpenGL drawing code anywhere you can draw
+normally by surrounding it with:
+
+\code
+gl_start();
+... put your OpenGL code here ...
+gl_finish();
+\endcode
+
+<A name="gl_start"><tt>gl_start()</tt></A>
+and
+<A name="gl_finish"><tt>gl_finish()</tt></A>
+set up an OpenGL
+context with an orthographic projection so that 0,0 is the
+lower-left corner of the window and each pixel is one unit. The
+current clipping is reproduced with OpenGL <tt>glScissor()</tt>
+commands. These functions also synchronize the OpenGL graphics stream
+with the drawing done by other X, WIN32, or FLTK functions.
+
+The same context is reused each time. If your code changes
+the projection transformation or anything else you should use
+<tt>glPushMatrix()</tt> and <tt>glPopMatrix()</tt> functions to
+put the state back before calling <tt>gl_finish()</tt>.
+
+You may want to use Fl_Window::current()->h() to
+get the drawable height so that you can flip the Y
+coordinates.
+
+Unfortunately, there are a bunch of limitations you must
+adhere to for maximum portability:
+
+\li You must choose a default visual with Fl::gl_visual().
+
+\li You cannot pass <tt>FL_DOUBLE</tt> to Fl::gl_visual().
+
+\li You cannot use Fl_Double_Window or Fl_Overlay_Window.
+
+Do <I>not</I> call <tt>gl_start()</tt> or
+<tt>gl_finish()</tt> when drawing into an Fl_Gl_Window !
+
+\section opengl_drawing OpenGL Drawing Functions
+
+FLTK provides some useful OpenGL drawing functions. They can
+be freely mixed with any OpenGL calls, and are defined by
+including <FL/gl.H> which you should include
+instead of the OpenGL header <tt><GL/gl.h></tt>.
+
+void gl_color(Fl_Color)
+
+\par
+Sets the current OpenGL color to a FLTK color. <I>For
+color-index modes it will use <tt>fl_xpixel(c)</tt>, which is
+only right if this window uses the default colormap!</I>
+
+void gl_rect(int x, int y, int w, int h) <br>
+void gl_rectf(int x, int y, int w, int h)
+
+\par
+Outlines or fills a rectangle with the current color. If
+Fl_Gl_Window::ortho() has been called, then the rectangle will exactly
+fill the pixel rectangle passed.
+
+void gl_font(Fl_Font fontid, int size)
+
+\par
+Sets the current OpenGL font to the same font you get by calling
+<A href="drawing.html#fl_font"><tt>fl_font()</tt></A>.
+
+int gl_height() <br>
+int gl_descent() <br>
+float gl_width(const char *) <br>
+float gl_width(const char *, int n) <br>
+float gl_width(uchar)
+
+\par
+Returns information about the current OpenGL font.
+
+void gl_draw(const char *) <br>
+void gl_draw(const char *, int n)
+
+\par
+Draws a nul-terminated string or an array of <tt>n</tt>
+characters in the current OpenGL font at the current raster
+position.
+
+void gl_draw(const char *, int x, int y) <br>
+void gl_draw(const char *, int n, int x, int y) <br>
+void gl_draw(const char *, float x, float y) <br>
+void gl_draw(const char *, int n, float x, float y)
+
+\par
+Draws a nul-terminated string or an array of <tt>n</tt>
+characters in the current OpenGL font at the given position.
+
+void gl_draw(const char *, int x, int y, int w, int h, Fl_Align)
+
+\par
+Draws a string formatted into a box, with newlines and tabs
+expanded, other control characters changed to ^X, and aligned
+with the edges or center. Exactly the same output as
+<A href="drawing.html#text"><tt>fl_draw()</tt></A>.
+
+\section opengl_speed Speeding up OpenGL
+
+Performance of Fl_Gl_Window may be improved on some types of
+OpenGL implementations, in particular MESA and other software
+emulators, by setting the <tt>GL_SWAP_TYPE</tt> environment
+variable. This variable declares what is in the backbuffer after
+you do a swapbuffers.
+
+\li <tt>setenv GL_SWAP_TYPE COPY</tt> <br>
+ <br>
+ This indicates that the back buffer is copied to the
+ front buffer, and still contains it's old data. This is
+ true of many hardware implementations. Setting this
+ will speed up emulation of overlays, and widgets that
+ can do partial update can take advantage of this as
+ damage() will not be cleared to -1. <p>
+
+\li <tt>setenv GL_SWAP_TYPE NODAMAGE</tt> <br>
+ <br>
+ This indicates that nothing changes the back buffer
+ except drawing into it. This is true of MESA and Win32
+ software emulation and perhaps some hardware emulation
+ on systems with lots of memory. <p>
+
+\li All other values for <tt>GL_SWAP_TYPE</tt>, and not
+ setting the variable, cause FLTK to assume that the
+ back buffer must be completely redrawn after a swap.
+
+This is easily tested by running the <tt>gl_overlay</tt> demo
+program and seeing if the display is correct when you drag
+another window over it or if you drag the window off the screen
+and back on. You have to exit and run the program again for it
+to see any changes to the environment variable.
+
+\section opengl_optimizer Using OpenGL Optimizer with FLTK
+
+<A href="http://www.sgi.com/software/optimizer">OpenGL Optimizer</A>
+is a scene graph toolkit for OpenGL available from
+Silicon Graphics for IRIX and Microsoft Windows. It allows you
+to view large scenes without writing a lot of OpenGL code.
+
+\par OptimizerWindow Class Definition
+
+\par
+To use OpenGL Optimizer with FLTK you'll need to create a
+subclass of <tt>Fl_Gl_Widget</tt> that includes several state
+variables:
+
+\code
+class OptimizerWindow : public Fl_Gl_Window {
+ csContext *context_; // Initialized to 0 and set by draw()...
+ csDrawAction *draw_action_; // Draw action...
+ csGroup *scene_; // Scene to draw...
+ csCamara *camera_; // Viewport for scene...
+
+ void draw();
+
+public:
+ OptimizerWindow(int X, int Y, int W, int H, const char *L)
+ : Fl_Gl_Window(X, Y, W, H, L) {
+ context_ = (csContext *)0;
+ draw_action_ = (csDrawAction *)0;
+ scene_ = (csGroup *)0;
+ camera_ = (csCamera *)0;
+ }
+
+ void scene(csGroup *g) { scene_ = g; redraw(); }
+
+ void camera(csCamera *c) {
+ camera_ = c;
+ if (context_) {
+ draw_action_->setCamera(camera_);
+ camera_->draw(draw_action_);
+ redraw();
+ }
+ }
+};
+\endcode
+
+\par The camera() Method
+
+\par
+The <tt>camera()</tt> method sets the camera (projection and
+viewpoint) to use when drawing the scene. The scene is redrawn after
+this call.
+
+\par The draw() Method
+
+\par
+The <tt>draw()</tt> method performs the needed initialization and does
+the actual drawing:
+
+\code
+void OptimizerWindow::draw() {
+ if (!context_) {
+ // This is the first time we've been asked to draw; create the
+ // Optimizer context for the scene...
+
+#ifdef WIN32
+ context_ = new csContext((HDC)fl_getHDC());
+ context_->ref();
+ context_->makeCurrent((HDC)fl_getHDC());
+#else
+ context_ = new csContext(fl_display, fl_visual);
+ context_->ref();
+ context_->makeCurrent(fl_display, fl_window);
+#endif // WIN32
+
+ ... perform other context setup as desired ...
+
+ // Then create the draw action to handle drawing things...
+
+ draw_action_ = new csDrawAction;
+ if (camera_) {
+ draw_action_->setCamera(camera_);
+ camera_->draw(draw_action_);
+ }
+ } else {
+#ifdef WIN32
+ context_->makeCurrent((HDC)fl_getHDC());
+#else
+ context_->makeCurrent(fl_display, fl_window);
+#endif // WIN32
+ }
+
+ if (!valid()) {
+ // Update the viewport for this context...
+ context_->setViewport(0, 0, w(), h());
+ }
+
+ // Clear the window...
+ context_->clear(csContext::COLOR_CLEAR | csContext::DEPTH_CLEAR,
+ 0.0f, // Red
+ 0.0f, // Green
+ 0.0f, // Blue
+ 1.0f); // Alpha
+
+ // Then draw the scene (if any)...
+ if (scene_)
+ draw_action_->apply(scene_);
+}
+\endcode
+
+\par The scene() Method
+
+\par
+The <tt>scene()</tt> method sets the scene to be drawn. The scene is
+a collection of 3D objects in a <tt>csGroup</tt>. The scene is redrawn
+after this call.
+
+\htmlonly
+<hr>
+<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
+<a class="el" href="subclassing.html">[Previous]&nbsp; 7 - Adding and Extending Widgets</a>&nbsp;
+<a class="el" href="fluid.html">[Next]&nbsp; 9 - Programming with FLUID</a>&nbsp;
+\endhtmlonly
+*/
diff --git a/documentation/src_doc/osissues.dox b/documentation/src_doc/osissues.dox
new file mode 100644
index 000000000..b878d79d3
--- /dev/null
+++ b/documentation/src_doc/osissues.dox
@@ -0,0 +1,765 @@
+/**
+
+ \page osissues F - Operating System Issues
+
+This appendix describes the operating system specific interfaces in FLTK.
+
+\section osissues_accessing Accessing the OS Interfaces
+
+All programs that need to access the operating system
+specific interfaces must include the following header file:
+
+\code
+#include <FL/x.H>
+\endcode
+
+Despite the name, this header file will define the
+appropriate interface for your environment. The pages that
+follow describe the functionality that is provided for each
+operating system.
+
+<CENTER>
+<TABLE WIDTH="90%" BORDER="1" CELLPADDING="5" CELLSPACING="0" BGCOLOR="#cccccc">
+<TR>
+ <TD><B>WARNING:</B>
+
+ The interfaces provided by this header file may
+ change radically in new FLTK releases. Use them only
+ when an existing generic FLTK interface is not
+ sufficient.
+
+ </TD>
+</TR>
+</TABLE>
+</CENTER>
+
+\section osissues_unit The UNIX (X11) Interface
+
+The UNIX interface provides access to the X Window System
+state information and data structures.
+
+\subsection osissues_x_events Handling Other X Events
+
+<A name="add_handler"></A> <!-- For old HTML links only ! -->
+void Fl::add_handler(int (*f)(int))
+
+Installs a function to parse unrecognized events. If FLTK
+cannot figure out what to do with an event, it calls each of
+these functions (most recent first) until one of them returns
+non-zero. If none of them returns non-zero then the event is
+ignored.
+
+FLTK calls this for any X events it does not recognize, or X
+events with a window ID that FLTK does not recognize. You can
+look at the X event in the
+<A href="#fl_xevent"><tt>fl_xevent</tt></A> variable.
+
+The argument is the FLTK event type that was not handled, or
+zero for unrecognized X events. These handlers are also called
+for global shortcuts and some other events that the widget they
+were passed to did not handle, for example
+<tt>FL_SHORTCUT</tt>.
+
+<A name="fl_xevent"></A> <!-- For old HTML links only ! -->
+extern XEvent *fl_xvent
+
+This variable contains the most recent X event.
+
+<A name="fl_event_time"></A> <!-- For old HTML links only ! -->
+extern ulong fl_event_time
+
+This variable contains the time stamp from the most recent X
+event that reported it; not all events do. Many X calls like cut
+and paste need this value.
+
+<A name="fl_xid"></A> <!-- For old HTML links only ! -->
+Window fl_xid(const Fl_Window *)
+
+Returns the XID for a window, or zero if not <tt>shown()</tt>.
+
+<A name="fl_find"></A> <!-- For old HTML links only ! -->
+Fl_Window *fl_find(ulong xid)
+
+Returns the <tt>Fl_Window</tt> that corresponds to the given
+XID, or <tt>NULL</tt> if not found. This function uses a cache
+so it is slightly faster than iterating through the windows
+yourself.
+
+<A name="fl_handle"></A> <!-- For old HTML links only ! -->
+int fl_handle(const XEvent &)
+
+This call allows you to supply the X events to FLTK, which
+may allow FLTK to cooperate with another toolkit or library. The
+return value is non-zero if FLTK understood the event. If the
+window does not belong to FLTK and the <tt>add_handler()</tt>
+functions all return 0, this function will return false.
+
+Besides feeding events your code should call
+<A href="Fl.html#Fl.flush"><tt>Fl::flush()</tt></A>
+periodically so that FLTK redraws its windows.
+
+This function will call the callback functions. It will not
+return until they complete. In particular, if a callback pops up
+a modal window by calling
+<A href="functions.html#fl_ask"><tt>fl_ask()</tt></A>,
+for instance, it will not return until the modal function
+returns.
+
+\subsection osissues_drawing_xlib Drawing using Xlib
+
+The following global variables are set before
+<A HREF="subclassing.html#draw"><tt>Fl_Widget::draw()</tt></A>
+is called, or by
+<A href="Fl_Window.html#Fl_Window.make_current"><tt>Fl_Window::make_current()</tt></A>:
+
+\code
+extern Display *fl_display;
+extern Window fl_window;
+extern GC fl_gc;
+extern int fl_screen;
+extern XVisualInfo *fl_visual;
+extern Colormap fl_colormap;
+\endcode
+
+You must use them to produce Xlib calls. Don't attempt to change
+them. A typical X drawing call is written like this:
+
+\code
+XDrawSomething(fl_display, fl_window, fl_gc, ...);
+\endcode
+
+Other information such as the position or size of the X
+window can be found by looking at
+<A href="Fl_Window.html#Fl_Window.make_current"><tt>Fl_Window::current()</tt></A>,
+which returns a pointer to the <tt>Fl_Window</tt> being drawn.
+
+<A name="fl_xpixel"></A> <!-- For old HTML links only ! -->
+unsigned long fl_xpixel(Fl_Color i) <br>
+unsigned long fl_xpixel(uchar r, uchar g, uchar b)
+
+Returns the X pixel number used to draw the given FLTK color
+index or RGB color. This is the X pixel that
+<A href="drawing.html#fl_color"><tt>fl_color()</tt></A> would use.
+
+<A name="fl_parse_color"></A> <!-- For old HTML links only ! -->
+int fl_parse_color(const char* p, uchar& r, uchar& g, uchar& b)
+
+Convert a name into the red, green, and blue values of a color
+by parsing the X11 color names. On other systems, <tt>fl_parse_color</tt>
+can only convert names in hexadecimal encoding, for example <tt>\#ff8083</tt>.
+
+<A name="fl_xfont"></A> <!-- For old HTML links only ! -->
+extern XFontStruct *fl_xfont
+
+Points to the font selected by the most recent
+<A href="drawing.html#fl_font"><tt>fl_font()</tt></A>.
+This is not necessarily the current font of <tt>fl_gc</tt>,
+which is not set until
+<A href="drawing.html#text"><tt>fl_draw()</tt></A>
+is called. If FLTK was compiled with Xft support, <tt>fl_xfont</tt>
+will usually be 0 and <tt>fl_xftfont</tt> will contain a pointer
+to the XftFont structure instead.
+
+<A name="fl_xftfont"></A> <!-- For old HTML links only ! -->
+extern void *fl_xftfont
+
+If FLTK was compiled with Xft support enabled, <tt>fl_xftfont</tt>
+Points to the xft font selected by the most recent
+<A href="drawing.html#fl_font"><tt>fl_font()</tt></A>.
+Otherwise it will be 0. <tt>fl_xftfont</tt> should be cast to
+<tt>XftFont*</tt>.
+
+\subsection osissues_xvisual Changing the Display, Screen, or X Visual
+
+FLTK uses only a single display, screen, X visual, and X
+colormap. This greatly simplifies its internal structure and
+makes it much smaller and faster. You can change which it uses
+by setting global variables <I>before the first
+<tt>Fl_Window::show()</tt> is called</I>. You may also want to call
+<A href="Fl.html#Fl.visual">Fl::visual()</A>,
+which is a portable interface to get a full color and/or double buffered
+visual.
+
+<A name="display"></A> <!-- For old HTML links only ! -->
+int Fl::display(const char *)
+
+Set which X display to use. This actually does
+<tt>putenv("DISPLAY=...")</tt> so that child programs
+will display on the same screen if called with <tt>exec()</tt>.
+This must be done before the display is opened. This call is
+provided under MacOS and WIN32 but it has no effect.
+
+<A name="fl_display"></A> <!-- For old HTML links only ! -->
+extern Display *fl_display
+
+The open X display. This is needed as an argument to most
+Xlib calls. Don't attempt to change it! This is <tt>NULL</tt>
+before the display is opened.
+
+<A name="fl_open_display"></A> <!-- For old HTML links only ! -->
+void fl_open_display()
+
+Opens the display. Does nothing if it is already open. This
+will make sure <tt>fl_display</tt> is non-zero. You should call
+this if you wish to do X calls and there is a chance that your
+code will be called before the first <tt>show()</tt> of a
+window.
+
+This may call <tt>Fl::abort()</tt> if there is an error
+opening the display.
+
+<A name="fl_close_display"></A> <!-- For old HTML links only ! -->
+void fl_close_display()
+
+This closes the X connection. You do <I>not</I> need to call
+this to exit, and in fact it is faster to not do so! It may be
+useful to call this if you want your program to continue without
+the X connection. You cannot open the display again, and
+probably cannot call any FLTK functions.
+
+<A name="fl_screen"></A> <!-- For old HTML links only ! -->
+extern int fl_screen
+
+Which screen number to use. This is set by
+<tt>fl_open_display()</tt> to the default screen. You can change
+it by setting this to a different value immediately afterwards.
+It can also be set by changing the last number in the
+<tt>Fl::display()</tt> string to "host:0.#".
+
+<A name="fl_visual"></A> <!-- For old HTML links only ! -->
+extern XVisualInfo *fl_visual <br>
+<A name="fl_colormap"></A> <!-- For old HTML links only ! -->
+extern Colormap fl_colormap
+
+The visual and colormap that FLTK will use for all windows.
+These are set by <tt>fl_open_display()</tt> to the default
+visual and colormap. You can change them before calling
+<tt>show()</tt> on the first window. Typical code for changing
+the default visual is:
+
+\code
+Fl::args(argc, argv); // do this first so $DISPLAY is set
+fl_open_display();
+fl_visual = find_a_good_visual(fl_display, fl_screen);
+if (!fl_visual) Fl::abort("No good visual");
+fl_colormap = make_a_colormap(fl_display, fl_visual->visual, fl_visual->depth);
+// it is now ok to show() windows:
+window->show(argc, argv);
+\endcode
+
+\subsection osissues_specialx Using a Subclass of Fl_Window for Special X Stuff
+
+FLTK can manage an X window on a different screen, visual
+and/or colormap, you just can't use FLTK's drawing routines to
+draw into it. But you can write your own <tt>draw()</tt> method
+that uses Xlib (and/or OpenGL) calls only.
+
+FLTK can also manage XID's provided by other libraries or
+programs, and call those libraries when the window needs to be
+redrawn.
+
+To do this, you need to make a subclass of
+<A href="Fl_Window.html#Fl_Window"><tt>Fl_Window</tt></A>
+and override some of these virtual functions:
+
+virtual void Fl_Window::show()
+
+If the window is already <tt>shown()</tt> this must cause it
+to be raised, this can usually be done by calling
+<tt>Fl_Window::show()</tt>. If not <tt>shown()</tt> your
+implementation must call either <tt>Fl_X::set_xid()</tt> or
+<tt>Fl_X::make_xid()</tt>.
+
+An example:
+
+\code
+void MyWindow::show() {
+ if (shown()) {Fl_Window::show(); return;} // you must do this!
+ fl_open_display(); // necessary if this is first window
+ // we only calcualte the necessary visual colormap once:
+ static XVisualInfo *visual;
+ static Colormap colormap;
+ if (!visual) {
+ visual = figure_out_visual();
+ colormap = XCreateColormap(fl_display, RootWindow(fl_display,fl_screen),
+ vis->visual, AllocNone);
+ }
+ Fl_X::make_xid(this, visual, colormap);
+}
+\endcode
+
+Fl_X *Fl_X::set_xid(Fl_Window *, Window xid)
+
+Allocate a hidden structure called an <tt>Fl_X</tt>, put the
+XID into it, and set a pointer to it from the
+<tt>Fl_Window</tt>. This causes <tt>Fl_Window::shown()</tt> to
+return true.
+
+void Fl_X::make_xid(Fl_Window *, XVisualInfo *= fl_visual, Colormap = fl_colormap)
+
+This static method does the most onerous parts of creating an
+X window, including setting the label, resize limitations, etc.
+It then does <tt>Fl_X::set_xid()</tt> with this new window and
+maps the window.
+
+virtual void Fl_Window::flush()
+
+This virtual function is called by <tt>Fl::flush()</tt> to
+update the window. For FLTK's own windows it does this by
+setting the global variables <tt>fl_window</tt> and
+<tt>fl_gc</tt> and then calling the <tt>draw()</tt> method. For
+your own windows you might just want to put all the drawing code
+in here.
+
+The X region that is a combination of all <tt>damage()</tt>
+calls done so far is in <tt>Fl_X::i(this)->region</tt>. If
+<tt>NULL</tt> then you should redraw the entire window. The
+undocumented function <tt>fl_clip_region(XRegion)</tt> will
+initialize the FLTK clip stack with a region or <tt>NULL</tt>
+for no clipping. You must set region to <tt>NULL</tt> afterwards
+as <tt>fl_clip_region()</tt> will own and delete it when
+done.
+
+If <tt>damage() & FL_DAMAGE_EXPOSE</tt> then only X
+expose events have happened. This may be useful if you have an
+undamaged image (such as a backing buffer) around.
+
+Here is a sample where an undamaged image is kept somewhere:
+
+\code
+void MyWindow::flush() {
+ fl_clip_region(Fl_X::i(this)->region);
+ Fl_X::i(this)->region = 0;
+ if (damage() != 2) {... draw things into backing store ...}
+ ... copy backing store to window ...
+}
+\endcode
+
+virtual void Fl_Window::hide()
+
+Destroy the window server copy of the window. Usually you
+will destroy contexts, pixmaps, or other resources used by the
+window, and then call <tt>Fl_Window::hide()</tt> to get rid of
+the main window identified by <tt>xid()</tt>. If you override
+this, you must also override the destructor as shown:
+
+\code
+void MyWindow::hide() {
+ if (mypixmap) {
+ XFreePixmap(fl_display,mypixmap);
+ mypixmap = 0;
+ }
+ Fl_Window::hide(); // you must call this
+}
+\endcode
+
+virtual void Fl_Window::~Fl_Window()
+
+Because of the way C++ works, if you override <tt>hide()</tt>
+you <I>must</I> override the destructor as well (otherwise only
+the base class <tt>hide()</tt> is called):
+
+\code
+MyWindow::~MyWindow() {
+ hide();
+}
+\endcode
+
+\subsection osissues_x_icon Setting the Icon of a Window
+
+FLTK currently supports setting a window's icon <b>before</b> it
+is shown using the <tt>Fl_Window::icon()</tt> method.
+
+void Fl_Window::icon(char *)
+
+Sets the icon for the window to the passed pointer. You will
+need to cast the icon <tt>Pixmap</tt> to a <tt>char *</tt> when
+calling this method. To set a monochrome icon using a bitmap compiled
+with your application use:
+
+\code
+#include "icon.xbm"
+
+fl_open_display(); // needed if display has not been previously opened
+
+Pixmap p = XCreateBitmapFromData(fl_display, DefaultRootWindow(fl_display),
+ icon_bits, icon_width, icon_height);
+
+window->icon((char *)p);
+\endcode
+
+To use a multi-colored icon, the XPM format and library
+should be used as follows:
+
+\code
+#include <X11/xpm.h>
+#include "icon.xpm"
+
+fl_open_display(); // needed if display has not been previously opened
+
+Pixmap p, mask;
+
+XpmCreatePixmapFromData(fl_display, DefaultRootWindow(fl_display),
+ icon_xpm, &p, &mask, NULL);
+
+window->icon((char *)p);
+\endcode
+
+When using the Xpm library, be sure to include it in the list
+of libraries that are used to link the application (usually "-lXpm").
+
+<CENTER>
+<TABLE WIDTH="90%" BORDER="1" CELLPADDING="5" CELLSPACING="0" BGCOLOR="#cccccc">
+<TR>
+ <TD><B>NOTE:</B>
+
+ You must call <A
+ HREF="Fl_Window.html#Fl_Window.show"><tt>Fl_Window::show(argc,
+ argv)</tt></A> for the icon to be used. The
+ <tt>Fl_Window::show()</tt> method does not bind the icon
+ to the window.
+
+ </TD>
+</TR>
+</TABLE>
+</CENTER>
+
+\subsection osissues_xresources X Resources
+
+When the
+<A HREF="Fl_Window.html#Fl_Window.show"><tt>Fl_Window::show(argc, argv)</tt></A>
+method is called, FLTK looks for the following X resources:
+
+\li <tt>background</tt> - The default background color
+ for widgets (color).
+
+\li <tt>dndTextOps</tt> - The default setting for
+ drag and drop text operations (boolean).
+
+\li <tt>foreground</tt> - The default foreground (label)
+ color for widgets (color).
+
+\li <tt>scheme</tt> - The default scheme to use (string).
+
+\li <tt>selectBackground</tt> - The default selection
+ color for menus, etc. (color).
+
+\li <tt>Text.background</tt> - The default background
+ color for text fields (color).
+
+\li <tt>tooltips</tt> - The default setting for
+ tooltips (boolean).
+
+\li <tt>visibleFocus</tt> - The default setting for
+ visible keyboard focus on non-text widgets (boolean).
+
+Resources associated with the first window's
+<A HREF="Fl_Window.html#Fl_Window.xclass"><tt>Fl_Window::xclass()</tt></A>
+string are queried first, or if no class has been specified then
+the class "fltk" is used (e.g. <tt>fltk.background</tt>). If no
+match is found, a global search is done (e.g.
+<tt>*background</tt>).
+
+\section osissues_win32 The Windows (WIN32) Interface
+
+The Windows interface provides access to the WIN32 GDI
+state information and data structures.
+
+\subsection osissues_win32_messages Handling Other WIN32 Messages
+
+By default a single WNDCLASSEX called "FLTK" is
+created. All <tt>Fl_Window</tt>'s are of this class unless you
+use <tt>Fl_Window::xclass()</tt>. The window class is created
+the first time <tt>Fl_Window::show()</tt> is called.
+
+You can probably combine FLTK with other libraries that make
+their own WIN32 window classes. The easiest way is to call
+<tt>Fl::wait()</tt>, as it will call <tt>DispatchMessage</tt>
+for all messages to the other windows. If necessary you can let
+the other library take over as long as it calls
+<tt>DispatchMessage()</tt>, but you will have to arrange for the
+function <tt>Fl::flush()</tt> to be called regularly so that
+widgets are updated, timeouts are handled, and the idle
+functions are called.
+
+<A name="fl_msg"></A> <!-- For old HTML links only ! -->
+extern MSG fl_msg
+
+This variable contains the most recent message read by
+<tt>GetMessage</tt>, which is called by <A
+href="Fl.html#Fl.wait"><tt>Fl::wait()</tt></A>. This may not be the
+most recent message sent to an FLTK window, because silly WIN32
+calls the handle procedures directly for some events (sigh).
+
+<A name="WIN32.add_handler"></A> <!-- For old HTML links only ! -->
+void Fl::add_handler(int (*f)(int))
+
+Installs a function to parse unrecognized messages sent to
+FLTK windows. If FLTK cannot figure out what to do with a
+message, it calls each of these functions (most recent first)
+until one of them returns non-zero. The argument passed to the
+functions is the FLTK event that was not handled or zero for
+unknown messages. If all the handlers return zero then FLTK
+calls <tt>DefWindowProc()</tt>.
+
+<A name="WIN32.fl_xid"></A> <!-- For old HTML links only ! -->
+HWND fl_xid(const Fl_Window *)
+
+Returns the window handle for a <tt>Fl_Window</tt>, or zero
+if not <tt>shown()</tt>.
+
+<A name="WIN32.fl_find"></A> <!-- For old HTML links only ! -->
+Fl_Window *fl_find(HWND xid)
+
+Returns the <tt>Fl_Window</tt> that corresponds to the given
+window handle, or <tt>NULL</tt> if not found. This function uses
+a cache so it is slightly faster than iterating through the
+windows yourself.
+
+<A name="WIN32.gdi"></A> <!-- For old HTML links only ! -->
+\subsection osissues_win32_gdi Drawing Things Using the WIN32 GDI
+
+When the virtual function
+<A HREF="subclassing.html#draw"><tt>Fl_Widget::draw()</tt></A> is
+called, FLTK stores all the silly extra arguments you need to
+make a proper GDI call in some global variables:
+
+\code
+extern HINSTANCE fl_display;
+extern HWND fl_window;
+extern HDC fl_gc;
+COLORREF fl_RGB();
+HPEN fl_pen();
+HBRUSH fl_brush();
+\endcode
+
+These global variables are set before <tt>draw()</tt> is called, or by
+<A href="Fl_Window.html#Fl_Window.make_current"><tt>Fl_Window::make_current()</tt></A>.
+You can refer to them when needed to produce GDI calls, but don't
+attempt to change them. The functions return GDI objects for
+the current color set by <tt>fl_color()</tt> and are created as
+needed and cached. A typical GDI drawing call is written like
+this:
+
+\code
+DrawSomething(fl_gc, ..., fl_brush());
+\endcode
+
+It may also be useful to refer to
+<A href="Fl_Window.html#Fl_Window.make_current"><tt>Fl_Window::current()</tt></A>
+to get the window's size or position.
+
+\subsection osissues_icon_windows Setting the Icon of a Window
+
+FLTK currently supports setting a window's icon *before* it
+is shown using the <tt>Fl_Window::icon()</tt> method.
+
+void Fl_Window::icon(char *)
+
+Sets the icon for the window to the passed pointer. You will
+need to cast the <tt>HICON</tt> handle to a <tt>char *</tt> when
+calling this method. To set the icon using an icon resource
+compiled with your application use:
+
+\code
+window->icon((char *)LoadIcon(fl_display, MAKEINTRESOURCE(IDI_ICON)));
+\endcode
+
+You can also use the <tt>LoadImage()</tt> and related
+functions to load specific resolutions or create the icon from
+bitmap data.
+
+<CENTER>
+<TABLE WIDTH="90%" BORDER="1" CELLPADDING="5" CELLSPACING="0" BGCOLOR="#cccccc">
+<TR>
+ <TD><B>NOTE:</B>
+
+ You must call <A
+ HREF="Fl_Window.html#Fl_Window.show"><tt>Fl_Window::show(argc,
+ argv)</tt></A> for the icon to be used. The
+ <tt>Fl_Window::show()</tt> method does not bind the icon
+ to the window.
+
+ </TD>
+</TR>
+</TABLE>
+</CENTER>
+
+\subsection osissues_msdos_console How to Not Get a MSDOS Console Window
+
+WIN32 has a really stupid mode switch stored in the
+executables that controls whether or not to make a console
+window.
+
+To always get a console window you simply create a console
+application (the "/SUBSYSTEM:CONSOLE" option for the
+linker). For a GUI-only application create a WIN32 application
+(the "/SUBSYSTEM:WINDOWS" option for the linker).
+
+FLTK includes a <tt>WinMain()</tt> function that calls the
+ANSI standard <tt>main()</tt> entry point for you. <I>This
+function creates a console window when you use the debug version
+of the library.</I>
+
+WIN32 applications without a console cannot write to
+<tt>stdout</tt> or <tt>stderr</tt>, even if they are run from a
+console window. Any output is silently thrown away.
+Additionally, WIN32 applications are run in the background by
+the console, although you can use "start /wait program" to run
+them in the foreground.
+
+\subsection osissues_win32_problems Known WIN32 Bugs and Problems
+
+The following is a list of known bugs and problems in the WIN32
+version of FLTK:
+
+\li If a program is deactivated, <tt>Fl::wait()</tt>
+ does not return until it is activated again, even though
+ many events are delivered to the program. This can cause
+ idle background processes to stop unexpectedly. This
+ also happens while the user is dragging or resizing
+ windows or otherwise holding the mouse down. We were
+ forced to remove most of the efficiency FLTK uses for
+ redrawing in order to get windows to update while being
+ moved. This is a design error in WIN32 and probably
+ impossible to get around.
+
+\li <tt>Fl_Gl_Window::can_do_overlay()</tt> returns true
+ until the first time it attempts to draw an overlay, and
+ then correctly returns whether or not there is overlay
+ hardware.
+
+\li <tt>SetCapture</tt> (used by <tt>Fl::grab()</tt>)
+ doesn't work, and the main window title bar turns gray
+ while menus are popped up.
+
+\li Compilation with <tt>gcc 3.4.4</tt> and <tt>-Os</tt> exposes an
+ optimisation bug in gcc. The symptom is that when drawing
+ filled circles only the perimeter is drawn. This can for instance
+ be seen in the symbols demo. Other optimisation options such
+ as -O2 and -O3 seem to work OK. More details can be found
+ in STR#1656
+
+\section osissues_macos The MacOS Interface
+
+FLTK supports MacOS X using the Apple Carbon library. Older
+versions of MacOS are <I>not</I> supported.
+
+\par Control, Option, and Command Modifier Keys
+
+FLTK maps the Mac 'control' key to <tt>FL_CTRL</tt>, the
+'option' key to <tt>FL_ALT</tt> and the 'Apple' key to
+<tt>FL_META</tt>. Keyboard events return the key name in
+<tt>Fl::event_key()</tt> and the keystroke translation in
+<tt>Fl::event_text()</tt>. For example, typing Option-Y on a Mac
+keyboard will set <tt>FL_ALT</tt> in <tt>Fl::event_state()</tt>,
+set <tt>Fl::event_key()</tt> to 'y' and return the Yen symbol in
+<tt>Fl::event_text()</tt>.
+
+WindowRef fl_xid(const Fl_Window *)
+
+Returns the window reference for an <tt>Fl_Window</tt>, or
+<tt>NULL</tt> if the window has not been shown.
+
+Fl_Window *fl_find(WindowRef xid)
+
+Returns the <tt>Fl_Window</tt> that corresponds to the give
+window handle, or <tt>NULL</tt> if not found. FLTK windows that
+are children of top-level windows share the WindowRef of the
+top-level window.
+
+\subsection osissues_apple_quit Apple "Quit" Event
+
+When the user press Cmd-Q or requests a termination of the
+application, OS X will send a "Quit" Apple Event. FLTK handles
+this event by sending an <tt>FL_CLOSE</tt> event to all open
+windows. If all windows close, the application will terminate.
+
+\subsection osissues_apple_open Apple "Open" Event
+
+Whenever the user drops a file onto an application icon, OS X
+generates an Apple Event of the type "Open". You can have FLTK
+notify you of an Open event by setting the <tt>fl_open_callback</tt>.
+
+<a name="fl_open_callback"></A> <!-- For old HTML links only ! -->
+void fl_open_callback(void (*cb)(const char *))
+
+<tt>cb</tt> will be called with a single iUnix-style file name and path.
+If multiple files were dropped, <tt>fl_open_callback</tt> will be called
+multiple times.
+
+\subsection osissues_quickdraw Drawing Things Using QuickDraw
+
+When the virtual function <tt>Fl_Widget::draw()</tt> is
+called, FLTK has prepared the Window and CGrafPort for drawing.
+Clipping and offsets are prepared to allow correct subwindow
+drawing.
+
+\subsection osissues_quartz Drawing Things Using Quartz
+
+If the FLTK library was compiled using the configuration
+flag <tt>--enable-quartz</tt>, all code inside <tt>Fl_Widget::draw()</tt>
+is expected to call Quartz drawing functions instead of
+QuickDraw. The Quartz coordinate system is flipped to match
+FLTK's coordinate system. The origin for all drawing is in the top
+left corner of the enclosing <tt>Fl_Window</tt>.
+
+Fl_Double_Window
+
+OS X double-buffers all windows automatically. On OS X,
+<tt>Fl_Window</tt> and <tt>Fl_Double_Window</tt> are handled
+internally in the same way.
+
+\subsection osissues_mac_files Mac File System Specifics
+
+\par Resource Forks
+
+FLTK does not access the resource fork of an application.
+However, a minimal resource fork must be created for OS X
+applications
+
+<CENTER>
+<TABLE WIDTH="80%" BORDER="1" BGCOLOR="#cccccc" CELLPADDING="5">
+<TR><TD><B>Caution:</B>
+
+When using UNIX commands to copy or move executables, OS X
+will NOT copy any resource forks! For copying and moving use
+CpMac and MvMac respectively. For creating a tar archive, all
+executables need to be stripped from their Resource Fork before
+packing, e.g. "DeRez fluid > fluid.r". After unpacking the
+Resource Fork needs to be reattached, e.g. "Rez fluid.r -o
+fluid".
+</TD></TR></TABLE>
+</CENTER>
+
+It is advisable to use the Finder for moving and copying and
+Mac archiving tools like Sit for distribution as they will
+handle the Resource Fork correctly.
+
+\par Mac File Paths
+
+FLTK uses UNIX-style filenames and paths.
+
+\subsection osissues_macos_problems Known MacOS Bugs and Problems
+
+The following is a list of known bugs and problems in the
+MacOS version of FLTK:
+
+\li Line styles are not well supported. This is due to
+ limitations in the QuickDraw interface.
+
+\li Nested subwindows are not supported, i.e. you can
+ have a <tt>Fl_Window</tt> widget inside a
+ <tt>Fl_Window</tt>, but not a <tt>Fl_Window</tt> inside a
+ <tt>Fl_Window</tt> inside a <tt>Fl_Window</tt>.
+
+\htmlonly
+<hr>
+<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
+<a class="el" href="forms.html">[Previous]</a>&nbsp;
+ \ref forms &nbsp;&nbsp;
+<a class="el" href="migration_1_1.html">[Next]</a>&nbsp;
+ \ref migration_1_1
+
+\endhtmlonly
+*/
diff --git a/documentation/src_doc/positioner.gif b/documentation/src_doc/positioner.gif
new file mode 100644
index 000000000..ba9d2694d
--- /dev/null
+++ b/documentation/src_doc/positioner.gif
Binary files differ
diff --git a/documentation/src_doc/preface.dox b/documentation/src_doc/preface.dox
new file mode 100644
index 000000000..ee1e9b6aa
--- /dev/null
+++ b/documentation/src_doc/preface.dox
@@ -0,0 +1,85 @@
+/**
+
+ \page preface Preface
+
+This manual describes the Fast Light Tool Kit ("FLTK")
+version 1.3.0, a C++ Graphical User Interface
+("GUI") toolkit for UNIX, Microsoft Windows and MacOS. Each
+of the chapters in this manual is designed as a tutorial for
+using FLTK, while the appendices provide a convenient reference
+for all FLTK widgets, functions, and operating system
+interfaces.
+
+<B>This manual may be printed, modified, and/or used under
+the terms of the FLTK license provided in \ref license.</B>
+
+\section preface_organisation Organization
+
+This manual is organized into the following chapters and appendices:
+
+\li \ref intro
+\li \ref basics
+\li \ref common
+\li \ref editor
+\li \ref drawing
+\li \ref events
+\li \ref subclassing
+\li \ref opengl
+\li \ref fluid
+\li \ref advanced
+\li \ref unicode
+\li <A class="el" HREF="classes.html">A - Class Reference</A>
+\li <A class="el" HREF="functions.html#functions">B - Function Reference</A>
+\li \ref enumerations
+\li \ref glut
+\li \ref forms
+\li \ref osissues
+\li \ref migration_1_1
+\li \ref migration_1_3
+\li \ref development
+\li \ref license
+\li \ref examples
+
+\section preface_conventions Conventions
+
+The following typeface conventions are used in this manual:
+
+\li Function and constant names are shown in <B><TT>bold courier type</TT></B>
+\li Code samples and commands are shown in <TT>regular courier type</TT>
+
+\section preface_abbreviations Abbreviations
+
+The following abbreviations are used in this manual:
+
+\par X11
+The X Window System version 11.
+
+\par Xlib
+The X Window System interface library.
+
+\par WIN32
+The Microsoft Windows 32-bit Application Programmer's Interface.
+
+\par MacOS
+The Apple Macintosh OS 8.6 and later, including OS X.
+
+\section preface_copyrights Copyrights and Trademarks
+
+FLTK is Copyright 1998-2008 by Bill Spitzak and others. Use and
+distribution of FLTK is governed by the GNU Library General Public
+License with 4 exceptions, located in \ref license.
+
+UNIX is a registered trademark of the X Open Group, Inc.
+Microsoft and Windows are registered trademarks of Microsoft
+Corporation. OpenGL is a registered trademark of Silicon
+Graphics, Inc. Apple, Macintosh, MacOS, and Mac OS X are
+registered trademarks of Apple Computer, Inc.
+
+\htmlonly
+<hr>
+<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
+<a class="el" href="intro.html">[Next]</a>&nbsp;
+ \ref intro
+
+\endhtmlonly
+*/
diff --git a/documentation/src_doc/resizebox1.gif b/documentation/src_doc/resizebox1.gif
new file mode 100644
index 000000000..c5e8c300b
--- /dev/null
+++ b/documentation/src_doc/resizebox1.gif
Binary files differ
diff --git a/documentation/src_doc/resizebox2.gif b/documentation/src_doc/resizebox2.gif
new file mode 100644
index 000000000..2083afd0d
--- /dev/null
+++ b/documentation/src_doc/resizebox2.gif
Binary files differ
diff --git a/documentation/src_doc/round_clock.gif b/documentation/src_doc/round_clock.gif
new file mode 100644
index 000000000..939457a1e
--- /dev/null
+++ b/documentation/src_doc/round_clock.gif
Binary files differ
diff --git a/documentation/src_doc/scrollbar.gif b/documentation/src_doc/scrollbar.gif
new file mode 100644
index 000000000..96d0358cf
--- /dev/null
+++ b/documentation/src_doc/scrollbar.gif
Binary files differ
diff --git a/documentation/src_doc/slider.gif b/documentation/src_doc/slider.gif
new file mode 100644
index 000000000..923e25784
--- /dev/null
+++ b/documentation/src_doc/slider.gif
Binary files differ
diff --git a/documentation/src_doc/subclassing.dox b/documentation/src_doc/subclassing.dox
new file mode 100644
index 000000000..a13e0a011
--- /dev/null
+++ b/documentation/src_doc/subclassing.dox
@@ -0,0 +1,531 @@
+/**
+
+ \page subclassing 7 - Adding and Extending Widgets
+
+
+This chapter describes how to add your own widgets or extend existing
+widgets in FLTK.
+
+\section subclassing_subclassing Subclassing
+
+New widgets are created by <I>subclassing</I> an existing FLTK widget,
+typically <tt>Fl_Widget</tt> for controls and <tt>Fl_Group</tt> for
+composite widgets.
+
+A control widget typically interacts with the user to receive and/or
+display a value of some sort.
+
+A composite widget widget holds a list of child widgets and handles moving,
+sizing, showing, or hiding them as needed. <tt>Fl_Group</tt> is the
+main composite widget widget class in FLTK, and all of the other composite
+widgets (<tt>Fl_Pack</tt>, <tt>Fl_Scroll</tt>, <tt>Fl_Tabs</tt>,
+<tt>Fl_Tile</tt>, and <tt>Fl_Window</tt>) are subclasses of it.
+
+You can also subclass other existing widgets to provide a different
+look or user-interface. For example, the button widgets are all
+subclasses of <tt>Fl_Button</tt> since they all interact with the user
+via a mouse button click. The only difference is the code that draws
+the face of the button.
+
+\section subclassing_fl_widget Making a Subclass of Fl_Widget
+
+Your subclasses can directly descend from <tt>Fl_Widget</tt> or any
+subclass of <tt>Fl_Widget</tt>. <tt>Fl_Widget</tt> has only four
+virtual methods, and overriding some or all of these may be necessary.
+
+\section subclassing_constructor The Constructor
+
+The constructor should have the following arguments:
+
+\code
+MyClass(int x, int y, int w, int h, const char *label = 0);
+\endcode
+
+This will allow the class to be used in
+<A href="fluid.html#FLUID">FLUID</A>
+without problems.
+
+The constructor must call the constructor for the base class and
+pass the same arguments:
+
+\code
+MyClass::MyClass(int x, int y, int w, int h, const char *label)
+: Fl_Widget(x, y, w, h, label) {
+// do initialization stuff...
+}
+\endcode
+
+<tt>Fl_Widget</tt>'s protected constructor sets <tt>x()</tt>, <tt>y()</tt>,
+<tt>w()</tt>, <tt>h()</tt>, and <tt>label()</tt> to the passed values
+and initializes the other instance variables to:
+
+\code
+type(0);
+box(FL_NO_BOX);
+color(FL_BACKGROUND_COLOR);
+selection_color(FL_BACKGROUND_COLOR);
+labeltype(FL_NORMAL_LABEL);
+labelstyle(FL_NORMAL_STYLE);
+labelsize(FL_NORMAL_SIZE);
+labelcolor(FL_FOREGROUND_COLOR);
+align(FL_ALIGN_CENTER);
+callback(default_callback,0);
+flags(ACTIVE|VISIBLE);
+image(0);
+deimage(0);
+\endcode
+
+\section subclassing_protected Protected Methods of Fl_Widget
+
+The following methods are provided for subclasses to use:
+
+\li <A href="#clear_visible"><tt>Fl_Widget::clear_visible</tt></A>
+\li <A href="#damage"><tt>Fl_Widget::damage</tt></A>
+\li <A href="#draw_box"><tt>Fl_Widget::draw_box</tt></A>
+\li <A href="#draw_focus"><tt>Fl_Widget::draw_focus</tt></A>
+\li <A href="#draw_label"><tt>Fl_Widget::draw_label</tt></A>
+\li <A href="#set_flag"><tt>Fl_Widget::set_flag</tt></A>
+\li <A href="#set_visible"><tt>Fl_Widget::set_visible</tt></A>
+\li <A href="#test_shortcut"><tt>Fl_Widget::test_shortcut</tt></A>
+\li <A href="#type"><tt>Fl_Widget::type</tt></A>
+
+<A name="damage"></A> <!-- For old HTML links only ! -->
+void Fl_Widget::damage(uchar mask) <br>
+void Fl_Widget::damage(uchar mask, int x, int y, int w, int h) <br>
+uchar Fl_Widget::damage()
+
+\par
+The first form indicates that a partial update of the object is
+needed. The bits in mask are OR'd into <tt>damage()</tt>. Your <tt>
+draw()</tt> routine can examine these bits to limit what it is
+drawing. The public method <tt>Fl_Widget::redraw()</tt> simply does
+<tt> Fl_Widget::damage(FL_DAMAGE_ALL)</tt>, but the implementation of
+your widget can call the private <tt>damage(n)</tt>.
+
+\par
+The second form indicates that a region is damaged. If only these
+calls are done in a window (no calls to <tt>damage(n)</tt>) then FLTK
+will clip to the union of all these calls before drawing anything.
+ This can greatly speed up incremental displays. The mask bits are
+OR'd into <tt>damage()</tt> unless this is a <tt>Fl_Window</tt> widget.
+
+\par
+The third form returns the bitwise-OR of all <tt>damage(n)</tt>
+calls done since the last <tt>draw()</tt>.
+
+\par
+<I>When redrawing your widgets you should look at the damage bits to
+see what parts of your widget need redrawing.</I> The <tt>handle()</tt>
+method can then set individual damage bits to limit the amount of drawing
+that needs to be done:
+\code
+MyClass::handle(int event) {
+ ...
+ if (change_to_part1) damage(1);
+ if (change_to_part2) damage(2);
+ if (change_to_part3) damage(4);
+}
+
+MyClass::draw() {
+ if (damage() &amp; FL_DAMAGE_ALL) {
+ ... draw frame/box and other static stuff ...
+ }
+
+ if (damage() &amp; (FL_DAMAGE_ALL | 1)) draw_part1();
+ if (damage() &amp; (FL_DAMAGE_ALL | 2)) draw_part2();
+ if (damage() &amp; (FL_DAMAGE_ALL | 4)) draw_part3();
+}
+\endcode
+
+<A name="draw_box"></A> <!-- For old HTML links only ! -->
+void Fl_Widget::draw_box() const <br>
+void Fl_Widget::draw_box(Fl_Boxtype b, ulong c) const
+
+\par
+The first form draws this widget's <tt>box()</tt>, using the
+dimensions of the widget. The second form uses <tt>b</tt> as the box
+type and <tt>c</tt> as the color for the box.
+
+<A name="draw_focus"></A> <!-- For old HTML links only ! -->
+void Fl_Widget::draw_focus() const <br>
+void Fl_Widget::draw_focus(Fl_Boxtype b, int x, int y, int w, int h) const
+
+\par
+Draws a focus box inside the widgets bounding box. The second
+form allows you to specify a different bounding box.
+
+<A name="draw_label"></A> <!-- For old HTML links only ! -->
+void Fl_Widget::draw_label() const <br>
+void Fl_Widget::draw_label(int x, int y, int w, int h) const <br>
+void Fl_Widget::draw_label(int x, int y, int w, int h, Fl_Align align) const
+
+\par
+This is the usual function for a <tt>draw()</tt> method to call to
+draw the widget's label. It does not draw the label if it is supposed
+to be outside the box (on the assumption that the enclosing group will
+draw those labels).
+
+\par
+The second form uses the passed bounding box instead of the widget's
+bounding box. This is useful so &quot;centered&quot; labels are aligned with some
+feature, like a moving slider.
+
+\par
+The third form draws the label anywhere. It acts as though <tt>
+FL_ALIGN_INSIDE</tt> has been forced on so the label will appear inside
+the passed bounding box. This is designed for parent groups to draw
+labels with.
+
+<A name="set_flag"></A> <!-- For old HTML links only ! -->
+void Fl_Widget::set_flag(SHORTCUT_LABEL)
+
+\par
+Modifies <tt>draw_label()</tt> so that '&amp;' characters cause an underscore
+to be printed under the next letter.
+
+<A name="set_visible"></A> <!-- For old HTML links only ! -->
+<A name="clear_visible"></A> <!-- For old HTML links only ! -->
+void Fl_Widget::set_visible() <br>
+void Fl_Widget::clear_visible()
+
+\par
+Fast inline versions of <tt>Fl_Widget::hide()</tt> and <tt>
+Fl_Widget::show()</tt>. These do not send the <tt>FL_HIDE</tt> and <tt>
+FL_SHOW</tt> events to the widget.
+
+<A name="test_shortcut"></A> <!-- For old HTML links only ! -->
+int Fl_Widget::test_shortcut() const <br>
+static int Fl_Widget::test_shortcut(const char *s)
+
+\par
+The first version tests <tt>Fl_Widget::label()</tt> against the
+current event (which should be a <tt>FL_SHORTCUT</tt> event). If the
+label contains a '&amp;' character and the character after it matches the key
+press, this returns true. This returns false if the <tt>SHORTCUT_LABEL</tt>
+flag is off, if the label is <tt>NULL</tt> or does not have a
+'&amp;' character in it, or if the keypress does not match the character.
+
+\par
+The second version lets you do this test against an arbitrary string.
+
+<A name="type"></A> <!-- For old HTML links only ! -->
+uchar Fl_Widget::type() const <br>
+void Fl_Widget::type(uchar t)
+
+\par
+The property <tt>Fl_Widget::type()</tt> can return an arbitrary 8-bit
+identifier, and can be set with the protected method <tt>type(uchar t)</tt>.
+This value had to be provided for Forms compatibility, but you can
+use it for any purpose you want. Try to keep the value less than 100
+to not interfere with reserved values.
+
+\par
+FLTK does not use RTTI (Run Time Typing Infomation), to enhance
+portability. But this may change in the near future if RTTI becomes
+standard everywhere.
+
+\par
+If you don't have RTTI you can use the clumsy FLTK mechanisim, by
+having <tt>type()</tt> use a unique value. These unique values must
+be greater than the symbol <tt>FL_RESERVED_TYPE</tt> (which is 100).
+Look through the header files for <tt>FL_RESERVED_TYPE</tt> to find an
+unused number. If you make a subclass of <tt>Fl_Window</tt>
+you must use <tt>FL_WINDOW + n</tt> (<tt>n</tt> must be in the
+range 1 to 7).
+
+<A NAME="handle"></A> <!-- For old HTML links only ! -->
+\section subclassing_events Handling Events
+
+The virtual method <tt>int Fl_Widget::handle(int event)</tt> is called
+to handle each event passed to the widget. It can:
+
+\li Change the state of the widget.
+\li Call
+ <A href="Fl_Widget.html#Fl_Widget.redraw"><tt>Fl_Widget::redraw()</tt></A>
+ if the widget needs to be redisplayed.
+\li Call
+ <A href="Fl_Widget.html#Fl_Widget.damage"><tt>Fl_Widget::damage(n)</tt></A>
+ if the widget needs a partial-update (assuming you provide support for
+ this in your
+ <A href="#draw"><tt>Fl_Widget::draw()</tt></A>
+ method).
+\li Call
+ <A href="Fl_Widget.html#Fl_Widget.do_callback"><tt>Fl_Widget::do_callback()</tt></A>
+ if a callback should be generated.
+\li Call <tt>Fl_Widget::handle()</tt> on child widgets.
+
+Events are identified by the integer argument. Other information
+about the most recent event is stored in static locations and aquired
+by calling the
+<A href="events.html#events"><tt>Fl::event_*()</tt></A>
+functions. This information remains valid until another event is
+handled.
+
+Here is a sample <tt>handle()</tt> method for a widget that acts as
+a pushbutton and also accepts the keystroke 'x' to cause the callback:
+
+\code
+int MyClass::handle(int event) {
+ switch(event) {
+ case FL_PUSH:
+ highlight = 1;
+ redraw();
+ return 1;
+ case FL_DRAG: {
+ int t = Fl::event_inside(this);
+ if (t != highlight) {
+ highlight = t;
+ redraw();
+ }
+ }
+ return 1;
+ case FL_RELEASE:
+ if (highlight) {
+ highlight = 0;
+ redraw();
+ do_callback();
+ // never do anything after a callback, as the callback
+ // may delete the widget!
+ }
+ return 1;
+ case FL_SHORTCUT:
+ if (Fl::event_key() == 'x') {
+ do_callback();
+ return 1;
+ }
+ return 0;
+ default:
+ return Fl_Widget::handle(event);
+ }
+}
+\endcode
+
+You must return non-zero if your <tt>handle()</tt> method
+uses the event. If you return zero, the parent widget will try
+sending the event to another widget.
+
+<A NAME="draw"></A> <!-- For old HTML links only ! -->
+\section subclassing_drawing Drawing the Widget
+
+The <tt>draw()</tt> virtual method is called when FLTK wants
+you to redraw your widget. It will be called if and only if
+<tt>damage()</tt> is non-zero, and <tt>damage()</tt> will be
+cleared to zero after it returns. The <tt>draw()</tt> method
+should be declared protected so that it can't be called from
+non-drawing code.
+
+The <tt>damage()</tt> value contains the bitwise-OR of all
+the <tt>damage(n)</tt> calls to this widget since it was last
+drawn. This can be used for minimal update, by only redrawing
+the parts whose bits are set. FLTK will turn on the
+<tt>FL_DAMAGE_ALL</tt> bit if it thinks the entire widget must
+be redrawn, e.g. for an expose event.
+
+Expose events (and the above <tt>damage(b,x,y,w,h)</tt>) will cause <tt>
+draw()</tt> to be called with FLTK's <A href="drawing.html#clipping">
+clipping</A> turned on. You can greatly speed up redrawing in some
+cases by testing <tt>fl_not_clipped(x,y,w,h)</tt> or <tt>fl_clip_box(...)</tt>
+and skipping invisible parts.
+
+Besides the protected methods described above, FLTK provides a large
+number of basic drawing functions, which are described
+<A href="drawing.html#drawing">below</A>.
+
+\section subclassing_resizing Resizing the Widget
+
+The <tt>resize(int x, int y, int w, int h)</tt> method is called when
+the widget is being resized or moved. The arguments are the new
+position, width, and height. <tt>x()</tt>, <tt>y()</tt>, <tt>w()</tt>,
+and <tt>h()</tt> still remain the old size. You must call <tt>resize()</tt>
+on your base class with the same arguments to get the widget size to
+actually change.
+
+This should <I>not</I> call <tt>redraw()</tt>, at least if only the <tt>
+x()</tt> and <tt>y()</tt> change. This is because composite widgets like
+<A href="Fl_Scroll.html#Fl_Scroll"><tt>Fl_Scroll</tt></A>
+may have a more efficient way of drawing the new position.
+
+\section subclassing_composite Making a Composite Widget
+
+A &quot;composite&quot; widget contains one or more &quot;child&quot; widgets.
+To make a composite widget you should subclass
+<A href="Fl_Group.html#Fl_Group"><tt>Fl_Group</tt></A>.
+It is possible to make a composite object that is not a subclass of
+<tt>Fl_Group</tt>, but you'll have to duplicate the code in <tt>Fl_Group</tt>
+anyways.
+
+Instances of the child widgets may be included in the parent:
+
+\code
+class MyClass : public Fl_Group {
+ Fl_Button the_button;
+ Fl_Slider the_slider;
+ ...
+};
+\endcode
+
+The constructor has to initialize these instances. They are automatically
+<tt>add()</tt>ed to the group, since the Fl_Group constructor does
+Fl_Group::begin().
+<I>Don't forget to call Fl_Group::end() or use the Fl_End pseudo-class:</I>
+
+\code
+MyClass::MyClass(int x, int y, int w, int h) :
+ Fl_Group(x, y, w, h),
+ the_button(x + 5, y + 5, 100, 20),
+ the_slider(x, y + 50, w, 20)
+{
+ ...(you could add dynamically created child widgets here)...
+ end(); // don't forget to do this!
+}
+\endcode
+
+The child widgets need callbacks. These will be called with a pointer
+to the children, but the widget itself may be found in the <tt>parent()</tt>
+pointer of the child. Usually these callbacks can be static private
+methods, with a matching private method:
+
+\code
+void MyClass::static_slider_cb(Fl_Widget* v, void *) { // static method
+ ((MyClass*)(v-&gt;parent())-&gt;slider_cb();
+}
+void MyClass::slider_cb() { // normal method
+ use(the_slider-&gt;value());
+}
+\endcode
+
+If you make the <tt>handle()</tt> method, you can quickly pass all the
+events to the children using the <tt>Fl_Group::handle()</tt> method.
+You don't need to override <tt>handle()</tt> if your composite widget
+does nothing other than pass events to the children:
+
+\code
+int MyClass::handle(int event) {
+ if (Fl_Group::handle(event)) return 1;
+ ... handle events that children don't want ...
+}
+\endcode
+
+If you override <tt>draw()</tt> you need to draw all the
+children. If <tt>redraw()</tt> or <tt>damage()</tt> is called
+on a child, <tt>damage(FL_DAMAGE_CHILD)</tt> is done to the
+group, so this bit of <tt>damage()</tt> can be used to indicate
+that a child needs to be drawn. It is fastest if you avoid
+drawing anything else in this case:
+
+\code
+int MyClass::draw() {
+ Fl_Widget *const*a = array();
+ if (damage() == FL_DAMAGE_CHILD) { // only redraw some children
+ for (int i = children(); i --; a ++) update_child(**a);
+ } else { // total redraw
+ ... draw background graphics ...
+ // now draw all the children atop the background:
+ for (int i = children_; i --; a ++) {
+ draw_child(**a);
+ draw_outside_label(**a); // you may not need to do this
+ }
+ }
+}
+\endcode
+
+<tt>Fl_Group</tt> provides some protected methods to make drawing
+easier:
+
+\li <A href="#draw_child">draw_child</A>
+\li <A href="#draw_outside_label">draw_outside_label</A>
+\li <A href="#update_child">update_child</A>
+
+<A name="draw_child"></A> <!-- For old HTML links only ! -->
+void Fl_Group::draw_child(Fl_Widget&)
+
+\par
+This will force the child's <tt>damage()</tt> bits all to one and call <tt>
+draw()</tt> on it, then clear the <tt>damage()</tt>. You should call
+this on all children if a total redraw of your widget is requested, or
+if you draw something (like a background box) that damages the child.
+Nothing is done if the child is not <tt>visible()</tt> or if it is
+clipped.
+
+<A name="draw_outside_label"></A> <!-- For old HTML links only ! -->
+void Fl_Group::draw_outside_label(Fl_Widget&) const
+
+\par
+Draw the labels that are <I>not</I> drawn by <A href="#draw_label"><tt>
+draw_label()</tt></A>. If you want more control over the label
+positions you might want to call <tt>child-&gt;draw_label(x,y,w,h,a)</tt>.
+
+<A name="update_child"></A> <!-- For old HTML links only ! -->
+void Fl_Group::update_child(Fl_Widget&)
+
+\par
+Draws the child only if its <tt>damage()</tt> is non-zero. You
+should call this on all the children if your own damage is equal to
+FL_DAMAGE_CHILD. Nothing is done if the child is not <tt>visible()</tt>
+or if it is clipped.
+
+\section subclassing_cutnpaste Cut and Paste Support
+
+FLTK provides routines to cut and paste 8-bit text (in the future this
+may be UTF-8) between applications:
+
+\li <A href="Fl.html#Fl.paste"><tt>Fl::paste</tt></A>
+\li <A href="Fl.html#Fl.selection"><tt>Fl::selection</tt></A>
+\li <A href="Fl.html#Fl.selection_owner"><tt>Fl::selection_owner</tt></A>
+
+It may be possible to cut/paste non-text data by using
+<A href="osissues.html#add_handler"><tt>Fl::add_handler()</tt></A>.
+
+\section subclassing_dragndrop Drag And Drop Support
+
+FLTK provides routines to drag and drop 8-bit text between applications:
+
+Drag'n'drop operations are are initiated by copying data to the
+clipboard and calling the function
+<A href="Fl.html#Fl.dnd"><tt>Fl::dnd()</tt></A>.
+
+Drop attempts are handled via <A href="events.html#dnd">events</A>:
+
+\li <tt>FL_DND_ENTER</tt>
+\li <tt>FL_DND_DRAG</tt>
+\li <tt>FL_DND_LEAVE</tt>
+\li <tt>FL_DND_RELEASE</tt>
+\li <tt>FL_PASTE</tt>
+
+\section subclassing_fl_window Making a subclass of Fl_Window
+
+You may want your widget to be a subclass of
+<tt>Fl_Window</tt>, <tt>Fl_Double_Window</tt>, or
+<tt>FL_Gl_Window</tt>. This can be useful if your widget wants
+to occupy an entire window, and can also be used to take
+advantage of system-provided clipping, or to work with a library
+that expects a system window ID to indicate where to draw.
+
+Subclassing <tt>Fl_Window</tt>is almost exactly like
+subclassing <tt>Fl_Group</tt>, and in fact you can easily
+switch a subclass back and forth. Watch out for the following
+differences:
+
+-# <tt>Fl_Window</tt> is a subclass of <tt>Fl_Group</tt> so
+ <I>make sure your constructor calls <tt>end()</tt></I>
+ unless you actually want children added to your window.
+
+-# When handling events and drawing, the upper-left corner is at
+ 0,0, not <tt>x(),y()</tt> as in other <tt>Fl_Widget</tt>'s.
+ For instance, to draw a box around the widget, call
+ <tt>draw_box(0, 0, w(), h())</tt>, rather than
+ <tt>draw_box(x(), y(), w(), h())</tt>.
+
+You may also want to subclass <tt>Fl_Window</tt> in order to
+get access to different visuals or to change other attributes of
+the windows. See
+<A href="osissues.html">"Appendix F - Operating System Issues"</A>
+for more information.
+
+\htmlonly
+<hr>
+<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
+<a class="el" href="events.html">[Previous]&nbsp; 6 - Handling Events</a>&nbsp;
+<a class="el" href="opengl.html">[Next]&nbsp; 8 - Using OpenGL</a>&nbsp;
+\endhtmlonly
+*/
diff --git a/documentation/src_doc/symbols.gif b/documentation/src_doc/symbols.gif
new file mode 100644
index 000000000..54bda5b44
--- /dev/null
+++ b/documentation/src_doc/symbols.gif
Binary files differ
diff --git a/documentation/src_doc/tabs.gif b/documentation/src_doc/tabs.gif
new file mode 100644
index 000000000..c347cba15
--- /dev/null
+++ b/documentation/src_doc/tabs.gif
Binary files differ
diff --git a/documentation/src_doc/text.gif b/documentation/src_doc/text.gif
new file mode 100644
index 000000000..65a56da97
--- /dev/null
+++ b/documentation/src_doc/text.gif
Binary files differ
diff --git a/documentation/src_doc/tiny.gif b/documentation/src_doc/tiny.gif
new file mode 100644
index 000000000..df06e15df
--- /dev/null
+++ b/documentation/src_doc/tiny.gif
Binary files differ
diff --git a/documentation/src_doc/unicode.dox b/documentation/src_doc/unicode.dox
new file mode 100644
index 000000000..9ce998bbb
--- /dev/null
+++ b/documentation/src_doc/unicode.dox
@@ -0,0 +1,82 @@
+/**
+
+ \page unicode 11 - Unicode and utf-8 Support
+
+This chapter explains how FLTK handles international
+text via Unicode and utf-8.
+
+Unicode support was only recently added to FLTK and is
+still incomplete. This chapter is Work in Progress, reflecting
+the current state of Unicode support.
+
+\section unicode_about About Unicode and utf-8
+
+The Unicode Standard is a worldwide accepted charatcer encoding
+standard. Unicode provides access to over 100,000 characters
+used in all the major languages written today.
+
+Utf-8 encodes all Unicode characters into variable length
+sequences of bytes. Unicode characters in the 7-bit ASCII
+range map to the same value in utf-8, making the transformation
+to Unicode quick and easy.
+
+Moving from ASCII encoding to Unicode will allow all new FLTK
+applications to be easily internationalized and and used all
+over the world. By choosing utf-8 encoding, FLTK remains
+largely source-code compatible to previous iteration of the
+library.
+
+\section unicode_in_fltk Unicode in FLTK
+
+FLTK will be entirely converted to Unicode in utf-8 encoding.
+If a different encoding is required by the underlying operatings
+system, FLTK will convert string as needed.
+
+\par TODO:
+
+\li more doc on unicode, add links
+\li write something about filename encoding on OS X...
+\li explain the fl_utf8_... commands
+\li explain issues with Fl_Preferences
+\li why FLTK has no Fl_String class
+
+\par DONE:
+
+\li initial transfer of the Ian/O'ksi'D patch
+\li adapted Makefiles and IDEs for available platforms
+\li hacked some Unicode keybard entry for OS X
+
+\par ISSUES:
+
+\li IDEs:
+ - Makefile support: tested on Fedora Core 5 and OS X, but heaven knows
+ on which platforms this may fail
+ - Xcode: tested, seems to be working (but see comments below on OS X)
+ - VisualC (VC6): tested, test/utf8 works, but may have had some issues
+ during merge. Some additional work needed (imm32.lib)
+ - VisualStudio2005: tested, test/utf8 works, some addtl. work needed
+ (imm32.lib)
+ - VisualCNet: sorry, I have no longer access to that IDE
+ - Borland and other compiler: sorry, I can't update those
+
+\li Platforms:
+ - you will encounter problems on all platforms!
+ - X11: many characters are missing, but that may be related to bad
+ fonts on my machine. I also could not do any keyboard tests yet.
+ Rendering seems to generally work ok.
+ - Win32: US and German keyboard worked ok, but no compositing was
+ tested. Rendering looks pretty good.
+ - OS X: redering looks good. Keyboard is completely messed up, even in
+ US setting (with Alt key)
+ - all: while merging I have seen plenty of places that are not
+ entirley utf8-safe, particularly Fl_Input, Fl_Text_Editor, and
+ Fl_Help_View. Keycodes from the keyboard conflict with Unicode
+ characters. Right-to-left rendered text can not be marked or edited,
+ and probably much more.
+\htmlonly
+<hr>
+<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
+<a class="el" href="advanced.html">[Previous]&nbsp; 10 - Advanced FLTK </a>&nbsp;
+<a class="el" href="classes.html">[Next]&nbsp; A - Class Reference</a>
+\endhtmlonly
+*/
diff --git a/documentation/src_doc/valuators.gif b/documentation/src_doc/valuators.gif
new file mode 100644
index 000000000..a2de73801
--- /dev/null
+++ b/documentation/src_doc/valuators.gif
Binary files differ
diff --git a/documentation/src_doc/value_slider.gif b/documentation/src_doc/value_slider.gif
new file mode 100644
index 000000000..13fec43ba
--- /dev/null
+++ b/documentation/src_doc/value_slider.gif
Binary files differ