open-ship 0.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +2 -0
- data/Manifest +16 -5
- data/lib/open-ship/gga4r/array_helper.rb +30 -0
- data/lib/open-ship/gga4r/gga4r_main.rb +180 -0
- data/lib/open-ship/gga4r/version.rb +9 -0
- data/lib/open-ship/gga4r.rb +1 -0
- data/lib/open-ship/label/carton_label.rb +61 -0
- data/lib/open-ship/label/text_label.rb +51 -0
- data/lib/{openship → open-ship}/label.rb +1 -1
- data/lib/open-ship/sortr.rb +279 -0
- data/lib/{openship → open-ship}/sscc.rb +0 -0
- data/lib/open-ship.rb +13 -0
- data/open-ship.gemspec +4 -4
- data/spec/open-ship/carton_spec.rb +142 -0
- data/spec/open-ship/label/carton_label_spec.rb +18 -0
- data/spec/open-ship/label/text_label_spec.rb +21 -0
- data/spec/{openship → open-ship}/sscc_spec.rb +0 -0
- data/spec/spec_helper.rb +6 -1
- data/tmp/test_carton_label.pdf +398 -0
- data/tmp/test_text_label.pdf +139 -0
- data.tar.gz.sig +4 -1
- metadata +29 -11
- metadata.gz.sig +0 -0
- data/lib/openship/openship.rb +0 -3
- data/lib/openship.rb +0 -9
data/open-ship.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{open-ship}
|
5
|
-
s.version = "0.1"
|
5
|
+
s.version = "0.1.2"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Nathan Smith"]
|
9
9
|
s.cert_chain = ["/Users/nsmith/.ssh/gem-public_cert.pem"]
|
10
|
-
s.date = %q{2011-05-
|
10
|
+
s.date = %q{2011-05-26}
|
11
11
|
s.description = %q{A library to make the hard parts of commercial shipping a little easier.}
|
12
12
|
s.email = %q{nathansmith22@gmail.com}
|
13
|
-
s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README", "lib/
|
14
|
-
s.files = ["CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "lib/
|
13
|
+
s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README", "lib/open-ship.rb", "lib/open-ship/gga4r.rb", "lib/open-ship/gga4r/array_helper.rb", "lib/open-ship/gga4r/gga4r_main.rb", "lib/open-ship/gga4r/version.rb", "lib/open-ship/label.rb", "lib/open-ship/label/carton_label.rb", "lib/open-ship/label/text_label.rb", "lib/open-ship/sortr.rb", "lib/open-ship/sscc.rb"]
|
14
|
+
s.files = ["CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "lib/open-ship.rb", "lib/open-ship/gga4r.rb", "lib/open-ship/gga4r/array_helper.rb", "lib/open-ship/gga4r/gga4r_main.rb", "lib/open-ship/gga4r/version.rb", "lib/open-ship/label.rb", "lib/open-ship/label/carton_label.rb", "lib/open-ship/label/text_label.rb", "lib/open-ship/sortr.rb", "lib/open-ship/sscc.rb", "spec/open-ship/carton_spec.rb", "spec/open-ship/label/carton_label_spec.rb", "spec/open-ship/label/text_label_spec.rb", "spec/open-ship/sscc_spec.rb", "spec/spec_helper.rb", "tmp/test_carton_label.pdf", "tmp/test_text_label.pdf", "open-ship.gemspec"]
|
15
15
|
s.homepage = %q{http://open-ship.github.com/open-ship/}
|
16
16
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Open-ship", "--main", "README"]
|
17
17
|
s.require_paths = ["lib"]
|
@@ -0,0 +1,142 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe OpenShip::Carton do
|
4
|
+
|
5
|
+
|
6
|
+
describe "When packing a carton" do
|
7
|
+
|
8
|
+
before(:each) do
|
9
|
+
@cart = OpenShip::Carton.new
|
10
|
+
@cart.width = 80
|
11
|
+
@cart.length = 100
|
12
|
+
@cart.height = 30
|
13
|
+
@box = OpenShip::Box.new
|
14
|
+
@box.width = 12
|
15
|
+
@box.length = 14
|
16
|
+
@box.height = 10
|
17
|
+
@bp = OpenShip::BoxPosition.new
|
18
|
+
@pos = OpenShip::Position.new
|
19
|
+
|
20
|
+
@pos.x = 0
|
21
|
+
@pos.y = 0
|
22
|
+
@pos.z = 0
|
23
|
+
@bp.box = @box
|
24
|
+
@bp.position = @pos
|
25
|
+
|
26
|
+
@box2 = OpenShip::Box.new
|
27
|
+
@box2.width = 8
|
28
|
+
@box2.length = 7
|
29
|
+
@box2.height = 5
|
30
|
+
|
31
|
+
@bp2 = OpenShip::BoxPosition.new
|
32
|
+
@pos2 = OpenShip::Position.new
|
33
|
+
|
34
|
+
@pos2.x = 12
|
35
|
+
@pos2.y = 0
|
36
|
+
@pos2.z = 0
|
37
|
+
@bp2.box = @box2
|
38
|
+
@bp2.position = @pos2
|
39
|
+
|
40
|
+
|
41
|
+
@wide_box = OpenShip::Box.new
|
42
|
+
@wide_box.width = 80
|
43
|
+
@wide_box.length = 7
|
44
|
+
@wide_box.height = 5
|
45
|
+
|
46
|
+
@wide_flat_box = OpenShip::Box.new
|
47
|
+
@wide_flat_box.width = 80
|
48
|
+
@wide_flat_box.length = 100
|
49
|
+
@wide_flat_box.height = 5
|
50
|
+
|
51
|
+
|
52
|
+
@big_box = OpenShip::Box.new
|
53
|
+
@big_box.width = 80
|
54
|
+
@big_box.length = 100
|
55
|
+
@big_box.height = 30
|
56
|
+
|
57
|
+
@lamp = OpenShip::Box.new
|
58
|
+
@lamp.width = 10
|
59
|
+
@lamp.length = 8
|
60
|
+
@lamp.height = 6
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should be able to return its space in square units" do
|
65
|
+
space = @cart.get_space
|
66
|
+
space.length.should == @cart.volume
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should be able to return its free space in square units if a box is packed in it" do
|
70
|
+
@cart.box_positions = []
|
71
|
+
@cart.box_positions << @bp
|
72
|
+
@cart.box_positions << @bp2
|
73
|
+
space = @cart.get_space
|
74
|
+
space.length.should == (@cart.volume - @box.volume - @box2.volume)
|
75
|
+
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should be able to add boxes" do
|
79
|
+
@cart.box_positions = []
|
80
|
+
@cart.add_box(@box)
|
81
|
+
@cart.add_box(@box2)
|
82
|
+
space = @cart.get_space
|
83
|
+
space.length.should == (@cart.volume - @box.volume - @box2.volume)
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
|
88
|
+
it "should be able to return a valid position for a box that can fit in it." do
|
89
|
+
@cart.box_positions = []
|
90
|
+
@cart.box_positions << @bp
|
91
|
+
new_position = @cart.position_for_box(@box2)
|
92
|
+
new_position.class.should == OpenShip::Position
|
93
|
+
# Check that a really long box is moved down the length of the container."
|
94
|
+
new_position = @cart.position_for_box(@wide_box)
|
95
|
+
new_position.y.should be > 0
|
96
|
+
# Check that a really wide, flat box will be loaded on top of existing boxes."
|
97
|
+
new_position = @cart.position_for_box(@wide_flat_box)
|
98
|
+
new_position.z.should be > 0
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should return a nil position for a box that cannot fit." do
|
102
|
+
@cart.box_positions = []
|
103
|
+
@cart.box_positions << @bp
|
104
|
+
new_position = @cart.position_for_box(@big_box)
|
105
|
+
new_position.should == nil
|
106
|
+
end
|
107
|
+
|
108
|
+
it "should be able to calculate a shipment" do
|
109
|
+
log = Logger.new(STDOUT)
|
110
|
+
log.level = Logger::DEBUG
|
111
|
+
|
112
|
+
population = []
|
113
|
+
boxes_to_stores = {}
|
114
|
+
i = 0
|
115
|
+
4.times {
|
116
|
+
boxes_to_stores[i.to_s] = []
|
117
|
+
20.times {
|
118
|
+
box = OpenShip::Box.new
|
119
|
+
box.length = ((rand * 9) + 1).to_i
|
120
|
+
box.width = ((rand * 19) + 1).to_i
|
121
|
+
box.height = ((rand * 19) + 1).to_i
|
122
|
+
boxes_to_stores[i.to_s] << box
|
123
|
+
}
|
124
|
+
i += 1
|
125
|
+
}
|
126
|
+
ship = OpenShip::Shipment.new(:logger => log)
|
127
|
+
ship.boxes_to_stores = boxes_to_stores
|
128
|
+
best_fit = ship.run_ga(5, 10)
|
129
|
+
|
130
|
+
best_fit.cartons_to_stores.each { |k, v|
|
131
|
+
puts "Test"
|
132
|
+
v.each { |carton|
|
133
|
+
carton.volume.should be > carton.box_positions.sum { |bp| bp.box.volume }
|
134
|
+
carton.get_space.length.should == carton.free_space
|
135
|
+
}
|
136
|
+
}
|
137
|
+
end
|
138
|
+
|
139
|
+
|
140
|
+
end
|
141
|
+
|
142
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe OpenShip::Label::CartonLabel do
|
4
|
+
|
5
|
+
it "should generate a valid pdf" do
|
6
|
+
cl = OpenShip::Label::CartonLabel.new
|
7
|
+
cl.upc = "814434010944"
|
8
|
+
cl.product = "cordlets"
|
9
|
+
cl.style = "charcoal"
|
10
|
+
cl.sku = "CDL-1-4CH"
|
11
|
+
cl.quantity = 6
|
12
|
+
cl.origin = "made in china"
|
13
|
+
doc = cl.to_pdf
|
14
|
+
doc.render_file("tmp/test_carton_label.pdf")
|
15
|
+
doc.class.should == Prawn::Document
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe OpenShip::Label::TextLabel do
|
4
|
+
|
5
|
+
it "should generate a valid pdf" do
|
6
|
+
cl = OpenShip::Label::TextLabel.new
|
7
|
+
cl.address1 = "Friday Afternoon (Distribution Center)"
|
8
|
+
cl.address2 = "34234234 Whale Face Rd."
|
9
|
+
cl.address3 = "Hamlet, Somewhere 234555"
|
10
|
+
cl.address4 = "1-800-BLAHBLAHBLAH"
|
11
|
+
cl.sku = "CDL-1-4CH"
|
12
|
+
cl.line = 1
|
13
|
+
cl.quantity = 6
|
14
|
+
cl.total_cartons = "1 of 6"
|
15
|
+
cl.po = "D234534"
|
16
|
+
doc = cl.to_pdf
|
17
|
+
doc.render_file("tmp/test_text_label.pdf")
|
18
|
+
doc.class.should == Prawn::Document
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
File without changes
|
data/spec/spec_helper.rb
CHANGED
@@ -0,0 +1,398 @@
|
|
1
|
+
%PDF-1.3
|
2
|
+
%����
|
3
|
+
1 0 obj
|
4
|
+
<< /Producer <feff0050007200610077006e>
|
5
|
+
/Creator <feff0050007200610077006e>
|
6
|
+
>>
|
7
|
+
endobj
|
8
|
+
2 0 obj
|
9
|
+
<< /Pages 3 0 R
|
10
|
+
/Type /Catalog
|
11
|
+
>>
|
12
|
+
endobj
|
13
|
+
3 0 obj
|
14
|
+
<< /Count 1
|
15
|
+
/Type /Pages
|
16
|
+
/Kids [5 0 R]
|
17
|
+
>>
|
18
|
+
endobj
|
19
|
+
4 0 obj
|
20
|
+
<< /Length 4411
|
21
|
+
>>
|
22
|
+
stream
|
23
|
+
q
|
24
|
+
14.173 48.189 m
|
25
|
+
14.173 119.055 l
|
26
|
+
16.243 119.055 l
|
27
|
+
16.243 48.189 l
|
28
|
+
14.173 48.189 l
|
29
|
+
f
|
30
|
+
18.312 48.189 m
|
31
|
+
18.312 119.055 l
|
32
|
+
20.381 119.055 l
|
33
|
+
20.381 48.189 l
|
34
|
+
18.312 48.189 l
|
35
|
+
f
|
36
|
+
22.450 48.189 m
|
37
|
+
22.450 119.055 l
|
38
|
+
24.520 119.055 l
|
39
|
+
24.520 48.189 l
|
40
|
+
22.450 48.189 l
|
41
|
+
f
|
42
|
+
26.589 48.189 m
|
43
|
+
26.589 119.055 l
|
44
|
+
28.658 119.055 l
|
45
|
+
28.658 48.189 l
|
46
|
+
26.589 48.189 l
|
47
|
+
f
|
48
|
+
30.728 48.189 m
|
49
|
+
30.728 119.055 l
|
50
|
+
36.935 119.055 l
|
51
|
+
36.935 48.189 l
|
52
|
+
30.728 48.189 l
|
53
|
+
f
|
54
|
+
43.143 48.189 m
|
55
|
+
43.143 119.055 l
|
56
|
+
49.351 119.055 l
|
57
|
+
49.351 48.189 l
|
58
|
+
43.143 48.189 l
|
59
|
+
f
|
60
|
+
55.559 48.189 m
|
61
|
+
55.559 119.055 l
|
62
|
+
57.628 119.055 l
|
63
|
+
57.628 48.189 l
|
64
|
+
55.559 48.189 l
|
65
|
+
f
|
66
|
+
59.698 48.189 m
|
67
|
+
59.698 119.055 l
|
68
|
+
65.906 119.055 l
|
69
|
+
65.906 48.189 l
|
70
|
+
59.698 48.189 l
|
71
|
+
f
|
72
|
+
72.113 48.189 m
|
73
|
+
72.113 119.055 l
|
74
|
+
74.183 119.055 l
|
75
|
+
74.183 48.189 l
|
76
|
+
72.113 48.189 l
|
77
|
+
f
|
78
|
+
76.252 48.189 m
|
79
|
+
76.252 119.055 l
|
80
|
+
78.321 119.055 l
|
81
|
+
78.321 48.189 l
|
82
|
+
76.252 48.189 l
|
83
|
+
f
|
84
|
+
80.391 48.189 m
|
85
|
+
80.391 119.055 l
|
86
|
+
86.598 119.055 l
|
87
|
+
86.598 48.189 l
|
88
|
+
80.391 48.189 l
|
89
|
+
f
|
90
|
+
88.668 48.189 m
|
91
|
+
88.668 119.055 l
|
92
|
+
90.737 119.055 l
|
93
|
+
90.737 48.189 l
|
94
|
+
88.668 48.189 l
|
95
|
+
f
|
96
|
+
96.945 48.189 m
|
97
|
+
96.945 119.055 l
|
98
|
+
99.014 119.055 l
|
99
|
+
99.014 48.189 l
|
100
|
+
96.945 48.189 l
|
101
|
+
f
|
102
|
+
101.083 48.189 m
|
103
|
+
101.083 119.055 l
|
104
|
+
103.153 119.055 l
|
105
|
+
103.153 48.189 l
|
106
|
+
101.083 48.189 l
|
107
|
+
f
|
108
|
+
105.222 48.189 m
|
109
|
+
105.222 119.055 l
|
110
|
+
111.430 119.055 l
|
111
|
+
111.430 48.189 l
|
112
|
+
105.222 48.189 l
|
113
|
+
f
|
114
|
+
117.638 48.189 m
|
115
|
+
117.638 119.055 l
|
116
|
+
119.707 119.055 l
|
117
|
+
119.707 48.189 l
|
118
|
+
117.638 48.189 l
|
119
|
+
f
|
120
|
+
121.776 48.189 m
|
121
|
+
121.776 119.055 l
|
122
|
+
127.984 119.055 l
|
123
|
+
127.984 48.189 l
|
124
|
+
121.776 48.189 l
|
125
|
+
f
|
126
|
+
134.192 48.189 m
|
127
|
+
134.192 119.055 l
|
128
|
+
140.400 119.055 l
|
129
|
+
140.400 48.189 l
|
130
|
+
134.192 48.189 l
|
131
|
+
f
|
132
|
+
142.469 48.189 m
|
133
|
+
142.469 119.055 l
|
134
|
+
148.677 119.055 l
|
135
|
+
148.677 48.189 l
|
136
|
+
142.469 48.189 l
|
137
|
+
f
|
138
|
+
150.746 48.189 m
|
139
|
+
150.746 119.055 l
|
140
|
+
152.816 119.055 l
|
141
|
+
152.816 48.189 l
|
142
|
+
150.746 48.189 l
|
143
|
+
f
|
144
|
+
159.024 48.189 m
|
145
|
+
159.024 119.055 l
|
146
|
+
161.093 119.055 l
|
147
|
+
161.093 48.189 l
|
148
|
+
159.024 48.189 l
|
149
|
+
f
|
150
|
+
163.162 48.189 m
|
151
|
+
163.162 119.055 l
|
152
|
+
165.231 119.055 l
|
153
|
+
165.231 48.189 l
|
154
|
+
163.162 48.189 l
|
155
|
+
f
|
156
|
+
171.439 48.189 m
|
157
|
+
171.439 119.055 l
|
158
|
+
173.509 119.055 l
|
159
|
+
173.509 48.189 l
|
160
|
+
171.439 48.189 l
|
161
|
+
f
|
162
|
+
179.717 48.189 m
|
163
|
+
179.717 119.055 l
|
164
|
+
181.786 119.055 l
|
165
|
+
181.786 48.189 l
|
166
|
+
179.717 48.189 l
|
167
|
+
f
|
168
|
+
183.855 48.189 m
|
169
|
+
183.855 119.055 l
|
170
|
+
190.063 119.055 l
|
171
|
+
190.063 48.189 l
|
172
|
+
183.855 48.189 l
|
173
|
+
f
|
174
|
+
192.132 48.189 m
|
175
|
+
192.132 119.055 l
|
176
|
+
198.340 119.055 l
|
177
|
+
198.340 48.189 l
|
178
|
+
192.132 48.189 l
|
179
|
+
f
|
180
|
+
200.409 48.189 m
|
181
|
+
200.409 119.055 l
|
182
|
+
202.479 119.055 l
|
183
|
+
202.479 48.189 l
|
184
|
+
200.409 48.189 l
|
185
|
+
f
|
186
|
+
208.687 48.189 m
|
187
|
+
208.687 119.055 l
|
188
|
+
210.756 119.055 l
|
189
|
+
210.756 48.189 l
|
190
|
+
208.687 48.189 l
|
191
|
+
f
|
192
|
+
212.825 48.189 m
|
193
|
+
212.825 119.055 l
|
194
|
+
214.894 119.055 l
|
195
|
+
214.894 48.189 l
|
196
|
+
212.825 48.189 l
|
197
|
+
f
|
198
|
+
221.102 48.189 m
|
199
|
+
221.102 119.055 l
|
200
|
+
227.310 119.055 l
|
201
|
+
227.310 48.189 l
|
202
|
+
221.102 48.189 l
|
203
|
+
f
|
204
|
+
229.380 48.189 m
|
205
|
+
229.380 119.055 l
|
206
|
+
235.587 119.055 l
|
207
|
+
235.587 48.189 l
|
208
|
+
229.380 48.189 l
|
209
|
+
f
|
210
|
+
241.795 48.189 m
|
211
|
+
241.795 119.055 l
|
212
|
+
243.865 119.055 l
|
213
|
+
243.865 48.189 l
|
214
|
+
241.795 48.189 l
|
215
|
+
f
|
216
|
+
245.934 48.189 m
|
217
|
+
245.934 119.055 l
|
218
|
+
248.003 119.055 l
|
219
|
+
248.003 48.189 l
|
220
|
+
245.934 48.189 l
|
221
|
+
f
|
222
|
+
250.072 48.189 m
|
223
|
+
250.072 119.055 l
|
224
|
+
252.142 119.055 l
|
225
|
+
252.142 48.189 l
|
226
|
+
250.072 48.189 l
|
227
|
+
f
|
228
|
+
254.211 48.189 m
|
229
|
+
254.211 119.055 l
|
230
|
+
260.419 119.055 l
|
231
|
+
260.419 48.189 l
|
232
|
+
254.211 48.189 l
|
233
|
+
f
|
234
|
+
266.627 48.189 m
|
235
|
+
266.627 119.055 l
|
236
|
+
268.696 119.055 l
|
237
|
+
268.696 48.189 l
|
238
|
+
266.627 48.189 l
|
239
|
+
f
|
240
|
+
270.765 48.189 m
|
241
|
+
270.765 119.055 l
|
242
|
+
276.973 119.055 l
|
243
|
+
276.973 48.189 l
|
244
|
+
270.765 48.189 l
|
245
|
+
f
|
246
|
+
283.181 48.189 m
|
247
|
+
283.181 119.055 l
|
248
|
+
289.389 119.055 l
|
249
|
+
289.389 48.189 l
|
250
|
+
283.181 48.189 l
|
251
|
+
f
|
252
|
+
291.458 48.189 m
|
253
|
+
291.458 119.055 l
|
254
|
+
293.528 119.055 l
|
255
|
+
293.528 48.189 l
|
256
|
+
291.458 48.189 l
|
257
|
+
f
|
258
|
+
14.173 138.898 42.520 42.520 re
|
259
|
+
S
|
260
|
+
|
261
|
+
BT
|
262
|
+
18.9850708661417 167.094677165354 Td
|
263
|
+
/F1.0 16 Tf
|
264
|
+
[<515459>] TJ
|
265
|
+
ET
|
266
|
+
|
267
|
+
|
268
|
+
BT
|
269
|
+
29.8730708661417 147.214803149606 Td
|
270
|
+
/F1.0 20 Tf
|
271
|
+
[<36>] TJ
|
272
|
+
ET
|
273
|
+
|
274
|
+
|
275
|
+
BT
|
276
|
+
62.3622047244095 167.094677165354 Td
|
277
|
+
/F1.0 16 Tf
|
278
|
+
[<303038313434>] TJ
|
279
|
+
ET
|
280
|
+
|
281
|
+
|
282
|
+
BT
|
283
|
+
62.3622047244095 147.214803149606 Td
|
284
|
+
/F1.0 20 Tf
|
285
|
+
[<3031303934>] TJ
|
286
|
+
ET
|
287
|
+
|
288
|
+
|
289
|
+
BT
|
290
|
+
255.625795275591 172.801322834646 Td
|
291
|
+
/F1.0 12 Tf
|
292
|
+
[<636f72646c657473>] TJ
|
293
|
+
ET
|
294
|
+
|
295
|
+
|
296
|
+
BT
|
297
|
+
252.289795275591 158.628094488189 Td
|
298
|
+
/F1.0 12 Tf
|
299
|
+
[<63686172636f616c>] TJ
|
300
|
+
ET
|
301
|
+
|
302
|
+
|
303
|
+
BT
|
304
|
+
234.973795275591 144.454866141732 Td
|
305
|
+
/F1.0 12 Tf
|
306
|
+
[<43444c2d312d344348>] TJ
|
307
|
+
ET
|
308
|
+
|
309
|
+
|
310
|
+
BT
|
311
|
+
124.780511811024 14.079842519685 Td
|
312
|
+
/F1.0 10 Tf
|
313
|
+
[<6d61646520696e206368696e61>] TJ
|
314
|
+
ET
|
315
|
+
|
316
|
+
|
317
|
+
BT
|
318
|
+
35.4330708661417 32.4556850393701 Td
|
319
|
+
/F2.0 16 Tf
|
320
|
+
<30> Tj
|
321
|
+
ET
|
322
|
+
|
323
|
+
|
324
|
+
BT
|
325
|
+
65.1968503937008 32.4556850393701 Td
|
326
|
+
/F2.0 16 Tf
|
327
|
+
<3038> Tj
|
328
|
+
ET
|
329
|
+
|
330
|
+
|
331
|
+
BT
|
332
|
+
104.88188976378 32.4556850393701 Td
|
333
|
+
/F2.0 16 Tf
|
334
|
+
<3134343334> Tj
|
335
|
+
ET
|
336
|
+
|
337
|
+
|
338
|
+
BT
|
339
|
+
182.834645669291 32.4556850393701 Td
|
340
|
+
/F2.0 16 Tf
|
341
|
+
<3031303934> Tj
|
342
|
+
ET
|
343
|
+
|
344
|
+
|
345
|
+
BT
|
346
|
+
259.370078740158 32.4556850393701 Td
|
347
|
+
/F2.0 16 Tf
|
348
|
+
<34> Tj
|
349
|
+
ET
|
350
|
+
|
351
|
+
Q
|
352
|
+
|
353
|
+
endstream
|
354
|
+
endobj
|
355
|
+
5 0 obj
|
356
|
+
<< /MediaBox [0 0 311.811023622047 189.92125984252]
|
357
|
+
/Type /Page
|
358
|
+
/Resources << /Font << /F1.0 6 0 R
|
359
|
+
/F2.0 7 0 R
|
360
|
+
>>
|
361
|
+
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
|
362
|
+
>>
|
363
|
+
/Parent 3 0 R
|
364
|
+
/Contents 4 0 R
|
365
|
+
>>
|
366
|
+
endobj
|
367
|
+
6 0 obj
|
368
|
+
<< /Encoding /WinAnsiEncoding
|
369
|
+
/Subtype /Type1
|
370
|
+
/Type /Font
|
371
|
+
/BaseFont /Helvetica
|
372
|
+
>>
|
373
|
+
endobj
|
374
|
+
7 0 obj
|
375
|
+
<< /Encoding /WinAnsiEncoding
|
376
|
+
/Subtype /Type1
|
377
|
+
/Type /Font
|
378
|
+
/BaseFont /Courier
|
379
|
+
>>
|
380
|
+
endobj
|
381
|
+
xref
|
382
|
+
0 8
|
383
|
+
0000000000 65535 f
|
384
|
+
0000000015 00000 n
|
385
|
+
0000000109 00000 n
|
386
|
+
0000000158 00000 n
|
387
|
+
0000000215 00000 n
|
388
|
+
0000004678 00000 n
|
389
|
+
0000004889 00000 n
|
390
|
+
0000004986 00000 n
|
391
|
+
trailer
|
392
|
+
<< /Info 1 0 R
|
393
|
+
/Root 2 0 R
|
394
|
+
/Size 8
|
395
|
+
>>
|
396
|
+
startxref
|
397
|
+
5081
|
398
|
+
%%EOF
|