rghost 0.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. data/History.txt +4 -0
  2. data/Manifest.txt +101 -0
  3. data/README.txt +3 -0
  4. data/Rakefile +93 -0
  5. data/lib/rghost.rb +3 -0
  6. data/lib/rghost/arc.rb +39 -0
  7. data/lib/rghost/barcode.rb +40 -0
  8. data/lib/rghost/callback.rb +55 -0
  9. data/lib/rghost/color.rb +118 -0
  10. data/lib/rghost/constants.rb +616 -0
  11. data/lib/rghost/convert.rb +24 -0
  12. data/lib/rghost/cursor.rb +82 -0
  13. data/lib/rghost/data_grid/basic_grid.rb +136 -0
  14. data/lib/rghost/data_grid/csv_grid.rb +27 -0
  15. data/lib/rghost/data_grid/data_grid.rb +14 -0
  16. data/lib/rghost/data_grid/dynamic_callback.rb +12 -0
  17. data/lib/rghost/data_grid/field_format.rb +60 -0
  18. data/lib/rghost/data_grid/grid.rb +18 -0
  19. data/lib/rghost/data_grid/header.rb +111 -0
  20. data/lib/rghost/data_grid/rails_grid.rb +37 -0
  21. data/lib/rghost/data_grid/static_callback.rb +13 -0
  22. data/lib/rghost/data_grid/style/border_lines.rb +47 -0
  23. data/lib/rghost/data_grid/style/bottom_lines.rb +30 -0
  24. data/lib/rghost/data_grid/style/old_forms.rb +30 -0
  25. data/lib/rghost/data_grid/style/style.rb +8 -0
  26. data/lib/rghost/document.rb +380 -0
  27. data/lib/rghost/dsc_entry.rb +20 -0
  28. data/lib/rghost/dynamic_document_callback.rb +27 -0
  29. data/lib/rghost/eps.rb +22 -0
  30. data/lib/rghost/font.rb +52 -0
  31. data/lib/rghost/function.rb +36 -0
  32. data/lib/rghost/gif.rb +28 -0
  33. data/lib/rghost/graphic.rb +28 -0
  34. data/lib/rghost/gs_alone.rb +17 -0
  35. data/lib/rghost/helpers.rb +13 -0
  36. data/lib/rghost/horizontal_line.rb +29 -0
  37. data/lib/rghost/image.rb +26 -0
  38. data/lib/rghost/jpeg.rb +26 -0
  39. data/lib/rghost/line.rb +40 -0
  40. data/lib/rghost/line_width.rb +17 -0
  41. data/lib/rghost/load.rb +37 -0
  42. data/lib/rghost/newpath.rb +20 -0
  43. data/lib/rghost/paper.rb +88 -0
  44. data/lib/rghost/point.rb +22 -0
  45. data/lib/rghost/point_with_command.rb +17 -0
  46. data/lib/rghost/ps/basic.ps +14 -0
  47. data/lib/rghost/ps/begin_document.ps +7 -0
  48. data/lib/rghost/ps/callbacks.ps +146 -0
  49. data/lib/rghost/ps/code128.font +344 -0
  50. data/lib/rghost/ps/code39.font +195 -0
  51. data/lib/rghost/ps/cursor.ps +41 -0
  52. data/lib/rghost/ps/datagrid.ps +52 -0
  53. data/lib/rghost/ps/ean.font +150 -0
  54. data/lib/rghost/ps/eps.ps +42 -0
  55. data/lib/rghost/ps/font.ps +31 -0
  56. data/lib/rghost/ps/functions.ps +646 -0
  57. data/lib/rghost/ps/gif.ps +150 -0
  58. data/lib/rghost/ps/horizontal_line.ps +3 -0
  59. data/lib/rghost/ps/i25.font +103 -0
  60. data/lib/rghost/ps/jpeg.ps +122 -0
  61. data/lib/rghost/ps/paper.ps +8 -0
  62. data/lib/rghost/ps/rectangle.ps +5 -0
  63. data/lib/rghost/ps/row.ps +4 -0
  64. data/lib/rghost/ps/show.ps +20 -0
  65. data/lib/rghost/ps/table_callbacks.ps +96 -0
  66. data/lib/rghost/ps/textarea.ps +11 -0
  67. data/lib/rghost/ps/type.ps +1 -0
  68. data/lib/rghost/ps/unit.ps +3 -0
  69. data/lib/rghost/ps/vertical_line.ps +14 -0
  70. data/lib/rghost/ps_object.rb +51 -0
  71. data/lib/rghost/rectangle.rb +39 -0
  72. data/lib/rghost/rgengine.so +0 -0
  73. data/lib/rghost/rghost.rb +3 -0
  74. data/lib/rghost/ruby_ghost_config.rb +25 -0
  75. data/lib/rghost/ruby_ghost_engine.rb +175 -0
  76. data/lib/rghost/ruby_to_ps.rb +92 -0
  77. data/lib/rghost/scale.rb +14 -0
  78. data/lib/rghost/show.rb +31 -0
  79. data/lib/rghost/static_document_callback.rb +22 -0
  80. data/lib/rghost/text_in.rb +29 -0
  81. data/lib/rghost/textarea.rb +115 -0
  82. data/lib/rghost/units.rb +81 -0
  83. data/lib/rghost/variable.rb +12 -0
  84. data/lib/rghost/version.rb +9 -0
  85. data/lib/rghost/vertical_line.rb +29 -0
  86. data/scripts/txt2html +67 -0
  87. data/setup.rb +1585 -0
  88. data/test/test_helper.rb +2 -0
  89. data/test/test_rghost.rb +11 -0
  90. data/website/index.html +11 -0
  91. data/website/index.txt +30 -0
  92. data/website/javascripts/rounded_corners_lite.inc.js +285 -0
  93. data/website/stylesheets/screen.css +129 -0
  94. data/website/template.rhtml +48 -0
  95. metadata +145 -0
@@ -0,0 +1,20 @@
1
+ require "ps_object"
2
+ require "cursor"
3
+ require "color"
4
+ require "point"
5
+ require "point"
6
+ require "line_width"
7
+
8
+ #Cria um bloco que cria um novo path sem alterar o path corrente. O path v�lido apenas para o escopo do bloco. Contudo fecha o path(closepath) ao fim do bloco.
9
+ # doc=Document.new
10
+ # doc.newpath do
11
+ # set Arc.new(:x => 10, :y => 10, :radius => 100)
12
+ # end
13
+ class NewPath < PsObject
14
+
15
+ def ps
16
+ "newpath #{super} closepath"
17
+ end
18
+
19
+
20
+ end
@@ -0,0 +1,88 @@
1
+ require "ps_object"
2
+ require "units"
3
+ require "load"
4
+ require "constants"
5
+ require "ruby_to_ps"
6
+
7
+ #Defini��o da m�dia utilizada
8
+ class Paper < PsObject
9
+
10
+
11
+ DEFAULT_OPTIONS={ :landscape => false,
12
+ :margin_top => 1,
13
+ :margin_right => 1,
14
+ :margin_bottom => 1,
15
+ :margin_left => 1,
16
+ :duplex => false,
17
+ :tumble => false
18
+ }
19
+ include RubyToPs
20
+ #Nova inst�ncia de Paper
21
+ # :paper => :A4 # Tamanho do papel, personalizavel com array width X height(em pontos). Exmp: :paper => [400,300]
22
+ # :landscape => false # Disposi��o do papel em 90�
23
+ # :margin_top => 1, # Margin de topo
24
+ # :margin_right => 1, # Margin direita
25
+ # :margin_bottom => 1, # Margin da base
26
+ # :margin_left => 1, # Margin esquerda
27
+ # :duplex => false, # true - duas faces(para impress�o)
28
+ # :tumble => false # true - tipo do duplex(para impress�o)
29
+ def initialize(paper=:A4, options={})
30
+
31
+ @options=DEFAULT_OPTIONS.merge(options)
32
+ @paper=paper
33
+ end
34
+
35
+ def ps
36
+ d=format_duplex
37
+ p=format_paper[:rg]
38
+ m=format_margin
39
+
40
+ lib=Load.library :paper
41
+
42
+ d<< p << m << lib.ps
43
+ end
44
+
45
+ #Obtem o valor no formato esperado pelo GS.
46
+ def gs_paper
47
+ p=format_paper[:gs]
48
+ ["-dDEVICEWIDTHPOINTS=#{p[0]}", "-dDEVICEHEIGHTPOINTS=#{p[1]}"]
49
+
50
+ end
51
+
52
+
53
+ private
54
+ def format_margin
55
+ if @options[:margin]
56
+ mt=mr=mb=ml=Units::parse(@options[:margin])
57
+ else
58
+ mt=Units::parse(@options[:margin_top])
59
+ mr=Units::parse(@options[:margin_right])
60
+ mb=Units::parse(@options[:margin_bottom])
61
+ ml=Units::parse(@options[:margin_left])
62
+ end
63
+
64
+ "/margin 3 dict def margin begin /top #{mt} def /right #{mr} def /bottom #{mb} def /left #{ml} def end\n"
65
+ end
66
+
67
+ def format_paper
68
+ p=case @paper
69
+ when Symbol: Constants::Papers::STANDARD[@paper.to_s.downcase.to_sym]
70
+ when Array: @paper
71
+ end
72
+
73
+ p.reverse! if @options[:landscape] #Rotate paper
74
+
75
+ #p.map!{|size| Units::parse(size)} #repack with unit default or no
76
+ #formated as rg and gs
77
+ {:rg => "/pagesize #{to_array(p)} def\n", :gs => p}
78
+
79
+ end
80
+
81
+
82
+ def format_duplex
83
+ "\n<< /Duplex #{@options[:duplex]} /Tumble #{@options[:tumble]} >> setpagedevice\n"
84
+ end
85
+
86
+ end
87
+
88
+ #puts Paper.new(:A4, :landscape => true, :duplex => true, :margin=> [2,3,4,5])
@@ -0,0 +1,22 @@
1
+ require "ps_object"
2
+ require "units"
3
+
4
+ #Cria um ponto usando a Unit padr�o caso o valor seja Numeric.
5
+ class Point < PsObject
6
+ attr_accessor :x,:y
7
+
8
+ def initialize(x,y)
9
+
10
+ @x,@y=x,y
11
+
12
+ end
13
+
14
+ def ps
15
+ "#{Units::parse(@x)} #{Units::parse(@y)} "
16
+ end
17
+
18
+
19
+ end
20
+
21
+ #p=Point.new(10,20,Cm,Cm)
22
+ #puts p.ps
@@ -0,0 +1,17 @@
1
+ require "ps_object"
2
+ require "units"
3
+
4
+ class PointWithCommand
5
+ DEFAULT_POINT={:x => :limit_left , :y => :current_row}
6
+
7
+ def PointWithCommand.to(command,point={})
8
+ #puts "PointWithCommand.to: #{command} > #{x} #{y}"
9
+ p=DEFAULT_POINT.dup.merge(point)
10
+
11
+ p=Point.new(p[:x],p[:y])
12
+ PsObject.new "#{p.ps}#{command}"
13
+ end
14
+
15
+ end
16
+
17
+
@@ -0,0 +1,14 @@
1
+ /inc{ dup cvx exec 1 add def} def
2
+ /dec{ dup cvx exec 1 sub def} def
3
+ /to_s{ 80 string cvs } def
4
+ /is_array?{ count 0 ne {dup}{false} ifelse type to_s (arraytype) }def
5
+ /new_page? true def
6
+ /strlen { dup stringwidth pop } def
7
+ /current_page 1 def
8
+
9
+ /row 1 def
10
+ %if include in array
11
+ /include? { /_atual 1 def exch dup length /_s exch def exch /_v exch def
12
+ { _v eq {true exit}{ _atual _s eq { false exit }{ /_atual inc } ifelse } ifelse }forall
13
+ _s 0 eq {false} if
14
+ } def
@@ -0,0 +1,7 @@
1
+ /current_row limit_top row row_height mul sub def
2
+ new_current_row_point
3
+ %default_point
4
+ before_document_create
5
+ before_page_create callback
6
+ first_page
7
+ even_pages callback
@@ -0,0 +1,146 @@
1
+ %static callbacks
2
+ /before_document_create {} bind def
3
+ /first_page {} bind def
4
+ /last_page {} bind def
5
+ /after_document_create {} bind def
6
+
7
+ %%dynamic callbacks
8
+ /before_page_create 3 dict def
9
+ before_page_create begin
10
+ /proc {} bind def
11
+ /except [ ] def
12
+ /only [ ] def
13
+ end
14
+ /after_page_create 3 dict def
15
+ after_page_create begin
16
+ /proc {} bind def
17
+ /except [ ] def
18
+ /only [ ] def
19
+ end
20
+ /odd_pages 3 dict def
21
+ odd_pages begin
22
+ /proc { } bind def
23
+ /except [] def
24
+ /only [] def
25
+ end
26
+ /even_pages 3 dict def
27
+ even_pages begin
28
+ /proc {} bind def
29
+ /except [ ] def
30
+ /only [ ] def
31
+ end
32
+
33
+
34
+ %execute callbacks
35
+ /callback{
36
+ dup dup
37
+ /except get length 0 ne { /except get current_page include? not}{
38
+ dup /only get length 0 ne { /only get current_page include?}{
39
+ pop true
40
+ }ifelse
41
+ }ifelse
42
+ { /proc get exec }{
43
+ pop
44
+ }ifelse
45
+ } bind def
46
+
47
+ /odd? { 2 mod 0 eq {true}{false} ifelse } bind def
48
+ /odd_or_even { current_page odd? {odd_pages}{even_pages}ifelse }def
49
+
50
+ %%TABLE
51
+ /before_table_create {} def
52
+ /after_table_create {} def
53
+ %%%%%%TABLE ROW---------------------
54
+ /row_odd_or_even {
55
+ current_table_row odd? {odd_row}{even_row} ifelse
56
+ }def
57
+ /before_row 3 dict def before_row begin
58
+ /proc { } bind def
59
+ /except [ ] def
60
+ /only [ ] def
61
+ end
62
+
63
+ /odd_row 3 dict def odd_row begin
64
+ /proc { } bind def
65
+ /except [ ] def
66
+ /only [ ] def
67
+ end
68
+
69
+ /even_row 3 dict def even_row begin
70
+ /proc { } bind def
71
+ /except [ ] def
72
+ /only [ ] def
73
+ end
74
+
75
+ %column
76
+ /col_odd_or_even {
77
+ col odd? {odd_column}{even_column} ifelse
78
+ }def
79
+
80
+ /before_column 3 dict def before_column begin
81
+ /proc { } bind def
82
+ /except [ ] def
83
+ /only [ ] def
84
+ end
85
+
86
+ /after_column 3 dict def after_column begin
87
+ /proc { } bind def
88
+ /except [ ] def
89
+ /only [ ] def
90
+ end
91
+
92
+ /odd_column 3 dict def odd_column begin
93
+ /proc { } bind def
94
+ /except [ ] def
95
+ /only [ ] def
96
+ end
97
+
98
+ /even_column 3 dict def even_column begin
99
+ /proc { } bind def
100
+ /except [ ] def
101
+ /only [ ] def
102
+ end
103
+
104
+ %%HEADER----------------------
105
+ /before_header_create {} def
106
+ /after_header_create {} def
107
+
108
+ /before_column_header 3 dict def before_column_header begin
109
+ /proc { } bind def
110
+ /except [ ] def
111
+ /only [ ] def
112
+ end
113
+
114
+ /after_column_header 3 dict def after_column_header begin
115
+ /proc { } bind def
116
+ /except [ ] def
117
+ /only [ ] def
118
+ end
119
+
120
+ %%ROW CALLBACKS
121
+ /callback_row{
122
+ dup dup
123
+ /except get length 0 ne { /except get current_table_row include? not}{
124
+ dup /only get length 0 ne { /only get current_table_row include?}{
125
+ pop true
126
+ }ifelse
127
+ }ifelse
128
+ { /proc get exec }{
129
+ pop
130
+ }ifelse
131
+ } bind def
132
+
133
+ %%COLUMN CALLBACKS
134
+ /callback_col{
135
+ dup dup
136
+ /except get length 0 ne { /except get col include? not}{
137
+ dup /only get length 0 ne { /only get col include?}{
138
+ pop true
139
+ }ifelse
140
+ }ifelse
141
+ { /proc get exec }{
142
+ pop
143
+ }ifelse
144
+ } bind def
145
+
146
+
@@ -0,0 +1,344 @@
1
+ %!FontType1-1.1: Code128JK 001.000
2
+ %%CreationDate: Thu Feb 22 12:20:30 2001
3
+ %%VMusage: 12406 12030
4
+ %
5
+ % This Type 1 PostScript font implements the Code 128 bar code.
6
+ % Copyright (C) 2001 Jan Karrman. All rights reserved.
7
+ %
8
+ % This program is free software; you can redistribute it and/or modify
9
+ % it under the terms of the GNU General Public License as published by
10
+ % the Free Software Foundation; either version 2 of the License, or
11
+ % (at your option) any later version.
12
+ %
13
+ % This program is distributed in the hope that it will be useful,
14
+ % but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ % GNU General Public License for more details.
17
+ %
18
+ % You should have received a copy of the GNU General Public License
19
+ % along with this program; if not, write to the Free Software
20
+ % Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21
+ %
22
+ 11 dict begin
23
+ /FontInfo 10 dict dup begin
24
+ /version (001.000) readonly def
25
+ /Notice (Copyright (C) 2001 Jan Karrman. All rights reserved.) readonly def
26
+ /FullName (Code 128 JK) readonly def
27
+ /FamilyName (Code 128 JK) readonly def
28
+ /Weight (Medium) readonly def
29
+ /ItalicAngle 0 def
30
+ /isFixedPitch false def
31
+ /UnderlinePosition 0 def
32
+ /UnderlineThickness 0 def
33
+ end readonly def
34
+ /FontName /Code128JK def
35
+ /Encoding 256 array
36
+ 0 1 255 {1 index exch /.notdef put} for
37
+ dup 32 /space put
38
+ dup 33 /exclam put
39
+ dup 34 /quotedbl put
40
+ dup 35 /numbersign put
41
+ dup 36 /dollar put
42
+ dup 37 /percent put
43
+ dup 38 /ampersand put
44
+ dup 39 /quoteright put
45
+ dup 40 /parenleft put
46
+ dup 41 /parenright put
47
+ dup 42 /asterisk put
48
+ dup 43 /plus put
49
+ dup 44 /comma put
50
+ dup 45 /hyphen put
51
+ dup 46 /period put
52
+ dup 47 /slash put
53
+ dup 48 /zero put
54
+ dup 49 /one put
55
+ dup 50 /two put
56
+ dup 51 /three put
57
+ dup 52 /four put
58
+ dup 53 /five put
59
+ dup 54 /six put
60
+ dup 55 /seven put
61
+ dup 56 /eight put
62
+ dup 57 /nine put
63
+ dup 58 /colon put
64
+ dup 59 /semicolon put
65
+ dup 60 /less put
66
+ dup 61 /equal put
67
+ dup 62 /greater put
68
+ dup 63 /question put
69
+ dup 64 /at put
70
+ dup 65 /A put
71
+ dup 66 /B put
72
+ dup 67 /C put
73
+ dup 68 /D put
74
+ dup 69 /E put
75
+ dup 70 /F put
76
+ dup 71 /G put
77
+ dup 72 /H put
78
+ dup 73 /I put
79
+ dup 74 /J put
80
+ dup 75 /K put
81
+ dup 76 /L put
82
+ dup 77 /M put
83
+ dup 78 /N put
84
+ dup 79 /O put
85
+ dup 80 /P put
86
+ dup 81 /Q put
87
+ dup 82 /R put
88
+ dup 83 /S put
89
+ dup 84 /T put
90
+ dup 85 /U put
91
+ dup 86 /V put
92
+ dup 87 /W put
93
+ dup 88 /X put
94
+ dup 89 /Y put
95
+ dup 90 /Z put
96
+ dup 91 /bracketleft put
97
+ dup 92 /backslash put
98
+ dup 93 /bracketright put
99
+ dup 94 /asciicircum put
100
+ dup 95 /underscore put
101
+ dup 96 /quoteleft put
102
+ dup 97 /a put
103
+ dup 98 /b put
104
+ dup 99 /c put
105
+ dup 100 /d put
106
+ dup 101 /e put
107
+ dup 102 /f put
108
+ dup 103 /g put
109
+ dup 104 /h put
110
+ dup 105 /i put
111
+ dup 106 /j put
112
+ dup 107 /k put
113
+ dup 108 /l put
114
+ dup 109 /m put
115
+ dup 110 /n put
116
+ dup 111 /o put
117
+ dup 112 /p put
118
+ dup 113 /q put
119
+ dup 114 /r put
120
+ dup 115 /s put
121
+ dup 116 /t put
122
+ dup 117 /u put
123
+ dup 118 /v put
124
+ dup 119 /w put
125
+ dup 120 /x put
126
+ dup 121 /y put
127
+ dup 122 /z put
128
+ dup 123 /braceleft put
129
+ dup 124 /bar put
130
+ dup 125 /braceright put
131
+ dup 126 /asciitilde put
132
+ dup 127 /Agrave put
133
+ dup 128 /Aacute put
134
+ dup 129 /Acircumflex put
135
+ dup 130 /Atilde put
136
+ dup 131 /Adieresis put
137
+ dup 132 /Aring put
138
+ dup 133 /AE put
139
+ dup 134 /Ccedilla put
140
+ dup 135 /Egrave put
141
+ dup 136 /Eacute put
142
+ dup 137 /Ecircumflex put
143
+ dup 138 /Edieresis put
144
+ dup 192 /Agrave put
145
+ dup 193 /Aacute put
146
+ dup 194 /Acircumflex put
147
+ dup 195 /Atilde put
148
+ dup 196 /Adieresis put
149
+ dup 197 /Aring put
150
+ dup 198 /AE put
151
+ dup 199 /Ccedilla put
152
+ dup 200 /Egrave put
153
+ dup 201 /Eacute put
154
+ dup 202 /Ecircumflex put
155
+ dup 203 /Edieresis put
156
+ readonly def
157
+ /PaintType 0 def
158
+ /FontType 1 def
159
+ /FontMatrix [0.001 0 0 0.001 0 0] readonly def
160
+ /UniqueID 5119293 def
161
+ /FontBBox [0 0 390 800] readonly def
162
+ currentdict end
163
+ currentfile eexec
164
+ f983ef0097ece636fb4a96c74d26ab84185f6dfa4a16a7a1c27bbe3f1156aea6
165
+ 98df331278ddd83a95bfe3721babb069504235a8fca9f8012c70beaa7df68b59
166
+ 3bd9d4efa3ace1dece221596c4dfc26c5c23e53e56473f4d3d6af6250e05d49b
167
+ 73f7a3256c4c7009b943617e186e6e406c0452dfa948d4c47a33656eb964cb53
168
+ dee08929b0003bd7ddaccd7fa8af1d9d747bfddcfef440f31be75ad6f19c971e
169
+ 720977e21ff5df9eb46cffc8637d5b56f558338bcfaa175db8707efb880ccfa5
170
+ be787a0185c3164b2213ed9d4933bfb0142b34cf3296a02575d97c10fe982329
171
+ 3233e30900b1b428c0429f1922d7ec6f01b8d1a72d48f3e093a40a00ffa76f47
172
+ 90cca9a125a321f3d49f5807e4b8695f196628f2e2081982b29f03c5c4fa6395
173
+ 10535bf50aef9fd0138783f00bb1d2b99506e4c6e6fe9d6577c3e4f903a10fe5
174
+ 533d1196d530ff419aa476d5e474fd920ebb0b04647e765cbe46ae4e93a7bf50
175
+ 45995c7c962a57e92102630b0ab96fff3b737b0d57e5ee9b6cdfdce32ab0adee
176
+ 1ac854838c4fb21bce603a061e7072d03a48efb98d133ffc1e7d79132b096c50
177
+ 174a516e0b7145ce584628e33128958295ac6f5b06f9751d7f03b1444c64470d
178
+ 47d382681bfc2918b0861d07ea90e81cbd1d9ef725e4b88f1c85150e50f316eb
179
+ b56fde88c50ff4e5c9479e844ad06e8de2afcce6fd03e7281e0594d79b23e845
180
+ 2fbac623d05371bb457906cd6afa885c65045eedc424efcf8ba0181811dbd285
181
+ 8822b485615f62ff4ba0386c32846d107668e03dd1b9f53f4bd28eb78357ff86
182
+ 9310dfc8518971ff0a8b16b5aa0de305d83f13a5efae423805cab7df12b851ad
183
+ c2a13b1dbd6e9f3ef1e2b27ca69df8d19424ce0035e9613b16c45ee30fef3fc6
184
+ 76bd947c8d149b810d4927dc624bf776e10e2e5616a650142beb27737aaec609
185
+ 37aca050d9a13546a9444f3aeae89d82056bcd749add016985caf720421bc288
186
+ ea394632c0bb3c889d0bdfc5bc15f6abf7c7bd816c9f71d15742e5470bbc61f0
187
+ ae0e87e4dedd6461e71f2c3f2166517009d8da8aff423960e3bdc22290fedeb6
188
+ 325b3f6a821b99037f3d343d758aaec9b21e5afc1d83021175f8a3a0b785bd80
189
+ 7026a2d370b50317ad3396be1a8d702ee1a79eafe6db5373630298e8b38d3c98
190
+ 87c1352d8f4c582163499c4243b100838d59bab7367db7a543ca3b679412abcf
191
+ f521f17f4d736411144fef8a6c391d3820556a59925d3de13e3a7a37875af2d6
192
+ 6fb27b5a585ead9d9f0c7296ee2ff7ced6526b14e8d4a4221b87854296e76107
193
+ b430691e11471a420579f11c9a3276ed4ea23d93e5251f10e615660abb2b5168
194
+ ee9e013c76e31fea64b9500e6e64c5f3e8ed6440c1b3dcd6a67dfe2827426962
195
+ 1a7901c6a70e1390c63b4a53db3f7901a8e0a244c4b4d927cf873935d3887c6e
196
+ 99b4d001294d514add305b0f0fcbf4f883004037b464b773cd9139411461c790
197
+ 86c5e2aba7974d17e0171c4540cca82c7e4f828179b5bd23c4db3965aee32475
198
+ d73708a52d8acc4a018db0486f3ff59f69a8bd4cca65592de5bcaf5f8c60062d
199
+ 46e2bd0356f7fb7bd7ffadd8383970bc27bba7954ea88ba0fcf3d79e2beb2e6f
200
+ 29714ef394273b159f2269994fa69ae72ee276812390c41d663be5656f560ce2
201
+ 9e26972f6319fa3af0f81ed44ca23651904e3a03030d5089c09bb583111d5f8d
202
+ 3a6a8343f6a47bbe1169373d25e27ddbfa5faefc24c532868089fa0085780a41
203
+ fc35b76c633489fa3be7dc99ce66ef5428adfa6de46d16361d46a6d90b6e8666
204
+ b014da9a7342ea17cbc7288b74cff76a03905eb668e21c9f1a3cb52e90794ec6
205
+ 2b218af5ef8e0d039d69e1c86fb9fc0f1a5c01668ccbbe6a3ddd5e5713eab488
206
+ 8c370f7e760116172cf35eefefe3d0a9baac42ac42bc31e61d9e3f7362ac4e5a
207
+ 7fd8852568da61f2956aaaf5460d40040bd93711976aa116014417f1f491aaaf
208
+ de2960d087e8f3bbe08bfa41319ab9eb36e16dc09177a779043451d8b53b67cf
209
+ d3c9c74f610804736ca3706d8573d8676335075a2ca94784ef99459cb8e296e2
210
+ f4fca7464f0e6fa76a2f0100a8c6d401aa2066a451e76a1e4904f5579fee3090
211
+ a580971eb6186c176d41f8e7bd30dead82ca568e7f8b1c0ff3b712878ec983af
212
+ 155bbb7761b5e122fe5436f9e3ec6a424666eb8d938a2d6b24c078da2b2c499c
213
+ e613bfdd56f30f0acb08222b1f2d55308f36718e7f9b7e8b708e569982c6ed67
214
+ a43626a761774e6e87ba377cfa9cb1bda6dca4278a7c5514244c4a67ec9a837f
215
+ a290a6c84be96eb6e8d0cabd0487114ff82e8ec2a0c86e15b3c5a14464dbe55d
216
+ 58da43feb0444c59e7c13721c54d3a720ab97daec6b553b51fdcb14e87e83c88
217
+ 6647b6b9c9bc5e4910241c73f49cf869b6849c8c71b132245165c756e82146eb
218
+ 9859db5aa814f63b94835bfabaccc291828a9c4febad4543d3f5779233ecdea1
219
+ c322c013941f8a58b6942cac38691dffbad9b573d5aee40e18df341f3d468638
220
+ 1cae151661190abdd73bdea31af03af6f736f19eefa7bf9b36066148927cbf17
221
+ b1a21b7c2ecd77f85702a2c448ad22c57c9ac263101744133ba2502ce5eb13ba
222
+ eaf235f992d84f881f4c372e918f17a6eeba417f8abbe88c3772122655d169e7
223
+ 4059fb8fd98775952e186202cc34028f4bc12a389d8ada039f397b118c4c02d3
224
+ 6e0dd822e11b737416b239dc75d034310b89d02a7fc6734bc8a74378c4718c61
225
+ d20ee1610f3ed1e7d9e9b1a93dad02f5c9eb12dc9926c1204b45904a78989cca
226
+ 42ffe78799eb6da798f071ea1bdb34a289e8b5da4d474a8420fbf515de6a9aea
227
+ b15dd3d2998f223ea0d931e7648fe1e384a6c8cf506853090da7f1963e852a87
228
+ 643ae1a28e93d6221e2a9b5e9cd0c68278ff22717fc150b975f478dab3b4d155
229
+ b709fea39272616ef1a1612129f703c9a71429fd71832bd4b53e6a4d83612f41
230
+ 1d3269d5e868fc6f7c47bb6e637990f9787835bf27b23aa5ef882141b7dabb7a
231
+ 8a416f93218341f0e74396aad64eee3633744d6cb7a7787f2bb0c44810633b16
232
+ ba6985f37f05a1f873ff7ec7aa37a0ee4b4ae478a90d8b52bfe9c9953a48ed00
233
+ e17b46e8d5d7cb7eebd761abfacaaacf75c82f27e23b08e1d8ce2e915545ffd8
234
+ c51e4d84827019386502b4a0c2360c3e057ec766a03865369b30149bddb1b5c1
235
+ bef2f64dd2abdd2b5ac2dadcd4d6f3a692b26fb7a5cdec5a89b77955c42aeef2
236
+ af421ca47dcc1654df5a15b77e8e9bbf076f0e7baad6cb3ed185f562c24a705a
237
+ 57f5defcf2f7b6201e8e739847f890af85cc787c82c0958de1f2ab6c532300b2
238
+ 6b3be03e3e67f50d0c30b468f34cabd2b94715d0bc91ca671571c1b72f1910fb
239
+ 42256ad5b8d4967f826a1c36dfa72c13975d8794053790bbf47118b0a2150d4f
240
+ 97ee2ac0c5ab5d37bf0255426d35ee92b5282b710ad6827e17a7b7016a870e65
241
+ b1ef58dc5d5fb542c27ef4d761e4439c89b56220e5758fea5089e34795d6add5
242
+ a71706adbe05feba1bf1041dc3bb0d1d141a3ee324a15b471fcaced9f0cbaa9b
243
+ b6b61adba970da53d86992f6b0ab59215356bc23fe037ded829879983b84768a
244
+ aebc5094869f5bd083e72f469dce84338391f96699c05351beed8746355a24ba
245
+ 8a50318c7d6c41c2309e2107b56d791e3096b5ca865577d31f8814c70c3c8ab7
246
+ 58899ef40bc8d76449dd5d7d5a06bc496857fc9e3201061912138d28ecdd04fc
247
+ 5d3902e3706eda79b0cd040d6eecf94f4fb5d1b5dc4166a4fb19ffaf720d9313
248
+ 0baa1bce912af96b0b16c661f29247be90b0b254ae2d7d8604090be4506afca9
249
+ dc64920207d1e31da9b55c350e2de0b4188cc0b621538d367b0e3d226469c0a8
250
+ 3af984713a2a4d4888f025ba7641d811a7a1d4cc2d8e23f9ccf86e139818e4f3
251
+ e22aac025a5414d0feaef22a370bfc28152c6c1bed2b0f701aae3bf88600670b
252
+ 60996ba47bcc8afd13623902ae566dab0784c6996ddacc6545293b597dc202d2
253
+ a5ee0d3569d460a267e5475203a930f2fe134141795ba22aad586fe6e7fa0c78
254
+ f7d92c1dcdf3e3dfbb5c3eef3e15310b73ffb6e55b3d8d6c38f8437e8e365a6b
255
+ 7b62933ce12482fe70852960c8eac18c743ce01bb4e394c8bee5fa600f58c415
256
+ 10340fd95ecea6d5364c9c936b0bd057795690ded81d0b829249bdeda814bdce
257
+ cc7f2ee28ecdce96440e1ec4f69fd9a92e8b6239912cf762e5f3e5a151a41b7e
258
+ 6877ac01944b600fdd6c3e80e7632c820132d4f5eb9acb76ee509e8daa461bf1
259
+ 03720f935b0e818a1d9acf55685fcc5bfe3b5980b670ee21ae6de1780ea44094
260
+ 9d53c17969804aaf8522da7f5cba69367d4b8bd8a9579bf43c166af2042a2902
261
+ d0aa5c8971146554b8827eba094d2c2673594608979cb241e3ab7708da24e555
262
+ bd2908c97f46ba90e8a03bc7a49e310371860397c0630e0fb6c79118d0787a14
263
+ 6d3aa44b082c1aceb2e78844efa9fe6fc7ab1c124da3b057843c93bc931e8672
264
+ a14586b3341975ec787fae69a46a4150cd80d21bf4f9dec8a5065a648e8fda28
265
+ f0489b04bad6f8d9ecb22ca58fecc355a4e3a4dcb76a1ecf5e22197a4575eead
266
+ 6679ae4fa06bc7ffda0f25acf188f91004affeb9e3345ab787b462f8e809a8f3
267
+ 177b6e284d4d6deb3d9b47e35c254d7373de4426f268c01eec2309acc595f4d6
268
+ 88cab764090cea9983842400ec46fa34254b2454cfdbe3291a0475d20eb0f067
269
+ bd118797c5b920d63474fec9cb975a54e3d1777a118d5085b63a4f2c3b515537
270
+ e5b8292b6de3b7bf9e5d261f538a9cd5de3e95d6921c6f23294443bb73d9fa20
271
+ dd36aca93c4c8f48719f905948d64e4f2b6f2f53332fe72bc9f757cca1406f9b
272
+ 82f58e59e00a62a8932aae06d72924f5c430a5750e5adb4389aebe37a4873214
273
+ 045f0c3a2e54ad5e8cb8dc5b272e4dd28b763e9c440bb362b5068b3a82774cc7
274
+ 1cd6ecbcb1dc8a9d50ab87f36c062c4f0c8d31e85d02dafd475293c83b996e9a
275
+ 04f7b3ee620bd02e74b7e657bc72a1e27a14b9815a101146d6f180af4b4da48e
276
+ 04f6b11760086f1be3bd5d742292529a7fca0aa930b2769a67e9a2d16fa18f93
277
+ 8ff3d94a29b482aeb69dd5fbfb3af3d46f58f5ff26ad108e771071be3f3dbe54
278
+ 0aa62b686f3c153861b5631d73c8c059dcd5feb1b952a49a734fa087a4d1a36e
279
+ 6d007ff70e99fcf18fda7c17fae7aed58a5e32ddea3e994f10d2606eeb014ade
280
+ 328dc07691e9fa55a52c5d19a0c9e509bdc31198f8af8944ab28f402b7b20e9f
281
+ 196e4007ba3ba9d6b171e61528020798ffcc0d620fde50c96765f402d1eac643
282
+ 4aafe363f756750dd1ffd927677723b555275b3160ed76e86dcd4ca19d508ce5
283
+ 0dd63793de5e09dfea794532efa2e07463a0bf957d0c05883c40f9bae6a0d35d
284
+ ee89496142a0d71c1a691e766122dfa121eb1e6a81373f091e6f7d42d0917698
285
+ 757a2ebc15110f20808aa48dd363d7ed93c6dcc06978b29f186ae7285bb0705a
286
+ 057066b41b60e5bbad4c7cfa0b0b2860363c4002d732529000803b3ddcb053da
287
+ 8f50dac7928f6939df3b40833694edb0d91b9df6317a13d0157da4d9d991cd55
288
+ 6047440ede3d1bcea7f4364169c8963a02cde3163985d4fe93c944e9506dcf35
289
+ 2a31b04eb4baaf5fd475c0eafab82df88159844f36e2dae8c09c196c0515aaf8
290
+ ba0293a762e82ebb10b85ccf62f5c016dd21865773d78b5f8594f303aa73644e
291
+ fa7751b20df636333158ce622bb3b9dad32108f69d420d46108ddd2cbc3d24f3
292
+ 9f2c942adc1dc04350889217cda72d09bf9111af0099a75542e4c5f0a34b98fb
293
+ 046eb87e304f86f8f7ae0c4941b7ad12d5adfd40152013b1c9f3de263f2ed8f3
294
+ 594cf1c905c5d5500163c8edc58280200f11a5898d1de104c60f24976f2d20b2
295
+ ce216625af106b21152bab7a5ad102aeae155a65f343168d03c65cceb3d5946b
296
+ 1315cd5c3772a59b59c73c1b165d2e930e86dab62f1cf93defd8487bd82786b5
297
+ 97042873a36730324aa2d3dc62b48b4e1e6dd5fa9c1f413b6c0a8272b79dfa95
298
+ ba00c0c672da4de34012d91c13c379fcf668ca4e490e236326b5a68b20aa6aed
299
+ dfd33db4002079b38bc1aa1a32801bbe200f1d41a9d81d9d4bb9b3fdc2e01dcd
300
+ a744e8de7139aa22c2d5b5f5f4f93f2ee71b54acf6db2230459c566cd9b35d21
301
+ db618edab38b9c7513b5bd45dc816716a348be8b79d3ce6a258ae4393784e492
302
+ b66e2b4e311ac5118f0cbd4481f2ea9ad521c4e9e316e49f3db428f4fedaec2f
303
+ d3c0c59a4692296ad243a972cdbad61e7a0542945364cd6f29bd1fce64ba05e6
304
+ 9909d6782b90301644dcfc14714ebc4ed769a83cc5891bbdd02e8a463b9af76a
305
+ 3a30291be6b0f5d8450af3d99ee556e8a9966bc45fd83ba478f48462cd61dff3
306
+ f4c2be59d52746b9b5c23d5b0a2724a394d41430d4106ef9f1d0d35751f6e67d
307
+ c45d4c1018bfc7830fc3c6e33c9739ae275cdcd2f835de731db506a709e55380
308
+ 96e78f72636ec6998d2f8f23d58632fef95949f1954b57950c8c5d82ccc95fad
309
+ 0ed7b8805aef4057b2abb75137a339ccba3bf21f20549ee7a49615bad739d180
310
+ b55b9e71367ca13211ee2eafd52a46a117e87922717a5129ec57528c4978991d
311
+ 7aef7291e57eaaa2cbba8a071ac68f0828bc977998705d2dd8dff32b93a2834a
312
+ 37a806b8ef6ed401a275bf0aac2404ebc9ed3ad5cb3f2c18f7a3a72adbe6406a
313
+ 9a7a89a8e9f3d4ec2bcc308bffa532da192d347fd673248dd8e45e136fad5d4e
314
+ 167b8a45cc60137b92bd4fb03bb7598dbb240b0adf96f633346c7fc12b7c5ffc
315
+ 48c4b2be81f96b654f9ec246679d0adfdde48ac7d857983fb834922e31384147
316
+ d79f942782beb20dda9ae7f70b51c742bfb65ffba3e541a616eb66934f0b44ce
317
+ 73dc024eda022413da78cec0dcb5ebf515bad4eebb64a2b939f3fb1ad5703e81
318
+ a5f53b1d242f0efce4df3461953e2f3d3811ee61b72f1805c1b9e84cb79d5542
319
+ ea80ed21e3f545fec6bf5444b82a26e563a398e2fefc316b15abc1588fbbf739
320
+ ab4f8f7d5beaa1d7e97b6c237c85ae20da23c15bfccf173e3e935b5ab8b5112a
321
+ 9fa2fd40696a8111a06a7c61f74325095757b036fd87107082aaa735df0a0222
322
+ 1046fb66bb4e219e5a21a6f8ffe89139ae261264d194f1109bf4b0db112bc67d
323
+ 7c12656dc2f3108fa9ebf20009fa4c48fddb4508cc0f40649555e11052d49847
324
+ 7cbb42173a54a6e3f16c6eaa6285520077f6f570265d73e36394e73424d9f4c7
325
+ 1b39f02f546059f41c330c6293b559aeb2ca1f36805645dbaadec923fc8630f5
326
+ f8ce86bbca61c3f826f63e5329ee974fdda89f262ae269c462a43c849a020321
327
+ 1653928bdd291c7b55e40a4e6caa223495a32c6805164ad46fd06240b3752194
328
+ 541c160b1e6b12eb54e95da09c0a8bd734c3d166629d964944f2bce49cecf82b
329
+ eaa010647b00b7c24476e9c3f44cee5ffa517f9924b0cabfee368edb99979b9f
330
+ 104976c7368d0b0adb1c18c8074327beee96b698bd45ba15a651f2a96162ff3d
331
+ b04adc8ca18aebb71d294fdce5ff7a365d89ee60516889a2d6fc304e6db3b9cb
332
+ e7a78e921369352055c025ae17dcfd0c9dea7a5801cfd19288d51695b70fe743
333
+ 15f82c56666bb7d81d9aba437c9d5d1ffcab05cead3ea60a6eb25c662963bc45
334
+ 44af13ba96ec92340b196b5e822ce1b7ffa8874b924696b0a70dd6cf09294657
335
+ 6c605ead55adcf5980ab6dc7755a5ba84f93
336
+ 0000000000000000000000000000000000000000000000000000000000000000
337
+ 0000000000000000000000000000000000000000000000000000000000000000
338
+ 0000000000000000000000000000000000000000000000000000000000000000
339
+ 0000000000000000000000000000000000000000000000000000000000000000
340
+ 0000000000000000000000000000000000000000000000000000000000000000
341
+ 0000000000000000000000000000000000000000000000000000000000000000
342
+ 0000000000000000000000000000000000000000000000000000000000000000
343
+ 0000000000000000000000000000000000000000000000000000000000000000
344
+ cleartomark