rghost 0.6.5

Sign up to get free protection for your applications and to get access to all the features.
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