line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
#!/usr/bin/perl |
2
|
|
|
|
|
|
|
|
3
|
|
|
|
|
|
|
package eBay::API::XML::Call::GetProducts; |
4
|
|
|
|
|
|
|
|
5
|
1
|
|
|
1
|
|
2467
|
use strict; |
|
1
|
|
|
|
|
4
|
|
|
1
|
|
|
|
|
32
|
|
6
|
1
|
|
|
1
|
|
5
|
use warnings; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
40
|
|
7
|
|
|
|
|
|
|
|
8
|
|
|
|
|
|
|
########################################################################## |
9
|
|
|
|
|
|
|
# |
10
|
|
|
|
|
|
|
# Module: ............... eBay/API/XML |
11
|
|
|
|
|
|
|
# File: ................. GetProducts.pm |
12
|
|
|
|
|
|
|
# Generated by: ......... genEBayApiDataTypes.pl |
13
|
|
|
|
|
|
|
# Last Generated: ....... 08/24/2008 16:44 |
14
|
|
|
|
|
|
|
# API Release Number: ... 579 |
15
|
|
|
|
|
|
|
# |
16
|
|
|
|
|
|
|
########################################################################## |
17
|
|
|
|
|
|
|
|
18
|
|
|
|
|
|
|
=head1 NAME |
19
|
|
|
|
|
|
|
|
20
|
|
|
|
|
|
|
eBay::API::XML::Call::GetProducts |
21
|
|
|
|
|
|
|
|
22
|
|
|
|
|
|
|
=head1 DESCRIPTION |
23
|
|
|
|
|
|
|
|
24
|
|
|
|
|
|
|
|
25
|
|
|
|
|
|
|
|
26
|
|
|
|
|
|
|
=head1 SYNOPSIS |
27
|
|
|
|
|
|
|
|
28
|
|
|
|
|
|
|
=cut |
29
|
|
|
|
|
|
|
|
30
|
|
|
|
|
|
|
|
31
|
|
|
|
|
|
|
=head1 INHERITANCE |
32
|
|
|
|
|
|
|
|
33
|
|
|
|
|
|
|
eBay::API::XML::Call::GetProducts inherits from the L class |
34
|
|
|
|
|
|
|
|
35
|
|
|
|
|
|
|
=cut |
36
|
|
|
|
|
|
|
|
37
|
1
|
|
|
1
|
|
36
|
use eBay::API::XML::BaseCall; |
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
38
|
|
|
|
|
|
|
our @ISA = ("eBay::API::XML::BaseCall"); |
39
|
|
|
|
|
|
|
|
40
|
|
|
|
|
|
|
use eBay::API::XML::Call::GetProducts::GetProductsRequestType; |
41
|
|
|
|
|
|
|
use eBay::API::XML::Call::GetProducts::GetProductsResponseType; |
42
|
|
|
|
|
|
|
|
43
|
|
|
|
|
|
|
|
44
|
|
|
|
|
|
|
=head1 Subroutines: |
45
|
|
|
|
|
|
|
|
46
|
|
|
|
|
|
|
=cut |
47
|
|
|
|
|
|
|
|
48
|
|
|
|
|
|
|
sub getApiCallName { |
49
|
|
|
|
|
|
|
return 'GetProducts'; |
50
|
|
|
|
|
|
|
} |
51
|
|
|
|
|
|
|
sub getRequestDataTypeFullPackage { |
52
|
|
|
|
|
|
|
return 'eBay::API::XML::Call::GetProducts::GetProductsRequestType'; |
53
|
|
|
|
|
|
|
} |
54
|
|
|
|
|
|
|
sub getResponseDataTypeFullPackage { |
55
|
|
|
|
|
|
|
return 'eBay::API::XML::Call::GetProducts::GetProductsResponseType'; |
56
|
|
|
|
|
|
|
} |
57
|
|
|
|
|
|
|
|
58
|
|
|
|
|
|
|
# |
59
|
|
|
|
|
|
|
# input properties |
60
|
|
|
|
|
|
|
# |
61
|
|
|
|
|
|
|
|
62
|
|
|
|
|
|
|
=head2 setAffiliateTrackingDetails() |
63
|
|
|
|
|
|
|
|
64
|
|
|
|
|
|
|
See the |
65
|
|
|
|
|
|
|
eBay Partner Network. |
66
|
|
|
|
|
|
|
eBay uses the specified details to build a View Item URL |
67
|
|
|
|
|
|
|
string in the response that includes your |
68
|
|
|
|
|
|
|
affiliate tracking information in the correct format. |
69
|
|
|
|
|
|
|
When a user clicks through the URL to eBay and performs |
70
|
|
|
|
|
|
|
certain tasks, you may get a commission (see the URL above). |
71
|
|
|
|
|
|
|
Only applicable when IncludeItemArray is specified |
72
|
|
|
|
|
|
|
(because the View Item URL is only returned in item information, |
73
|
|
|
|
|
|
|
not in product information). |
74
|
|
|
|
|
|
|
|
75
|
|
|
|
|
|
|
SeeLink: URL: http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&topic=AffiliateTrackingConcepts |
76
|
|
|
|
|
|
|
Title: Affiliate Tracking Concepts |
77
|
|
|
|
|
|
|
|
78
|
|
|
|
|
|
|
RequiredInput: No |
79
|
|
|
|
|
|
|
# Argument: 'ns:AffiliateTrackingDetailsType' |
80
|
|
|
|
|
|
|
|
81
|
|
|
|
|
|
|
=cut |
82
|
|
|
|
|
|
|
|
83
|
|
|
|
|
|
|
sub setAffiliateTrackingDetails { |
84
|
|
|
|
|
|
|
my $self = shift; |
85
|
|
|
|
|
|
|
my $pAffiliateTrackingDetails = shift; |
86
|
|
|
|
|
|
|
$self->getRequestDataType()->setAffiliateTrackingDetails($pAffiliateTrackingDetails); |
87
|
|
|
|
|
|
|
} |
88
|
|
|
|
|
|
|
|
89
|
|
|
|
|
|
|
=head2 setIncludeBuyingGuideDetails() |
90
|
|
|
|
|
|
|
|
91
|
|
|
|
|
|
|
If true, the response includes up to 5 buying guides (if any) |
92
|
|
|
|
|
|
|
for the product specified in ExternalProductID or |
93
|
|
|
|
|
|
|
ProductReferenceID. |
94
|
|
|
|
|
|
|
Not applicable with QueryKeywords. |
95
|
|
|
|
|
|
|
|
96
|
|
|
|
|
|
|
RequiredInput: No |
97
|
|
|
|
|
|
|
Default: false |
98
|
|
|
|
|
|
|
# Argument: 'xs:boolean' |
99
|
|
|
|
|
|
|
|
100
|
|
|
|
|
|
|
=cut |
101
|
|
|
|
|
|
|
|
102
|
|
|
|
|
|
|
sub setIncludeBuyingGuideDetails { |
103
|
|
|
|
|
|
|
my $self = shift; |
104
|
|
|
|
|
|
|
my $sIncludeBuyingGuideDetails = shift; |
105
|
|
|
|
|
|
|
$self->getRequestDataType()->setIncludeBuyingGuideDetails($sIncludeBuyingGuideDetails); |
106
|
|
|
|
|
|
|
} |
107
|
|
|
|
|
|
|
|
108
|
|
|
|
|
|
|
=head2 setIncludeHistogram() |
109
|
|
|
|
|
|
|
|
110
|
|
|
|
|
|
|
If true, the response includes a histogram that lists the |
111
|
|
|
|
|
|
|
number of matching products found and the domains in which |
112
|
|
|
|
|
|
|
they were found. (A domain is like a high-level category.) |
113
|
|
|
|
|
|
|
Including the histogram can affect the call's performance. |
114
|
|
|
|
|
|
|
You may see significantly slower response times when many |
115
|
|
|
|
|
|
|
matching products are found. |
116
|
|
|
|
|
|
|
|
117
|
|
|
|
|
|
|
RequiredInput: No |
118
|
|
|
|
|
|
|
Default: false |
119
|
|
|
|
|
|
|
# Argument: 'xs:boolean' |
120
|
|
|
|
|
|
|
|
121
|
|
|
|
|
|
|
=cut |
122
|
|
|
|
|
|
|
|
123
|
|
|
|
|
|
|
sub setIncludeHistogram { |
124
|
|
|
|
|
|
|
my $self = shift; |
125
|
|
|
|
|
|
|
my $sIncludeHistogram = shift; |
126
|
|
|
|
|
|
|
$self->getRequestDataType()->setIncludeHistogram($sIncludeHistogram); |
127
|
|
|
|
|
|
|
} |
128
|
|
|
|
|
|
|
|
129
|
|
|
|
|
|
|
=head2 setIncludeItemArray() |
130
|
|
|
|
|
|
|
|
131
|
|
|
|
|
|
|
If true, the response includes items (if any) that match the |
132
|
|
|
|
|
|
|
product specified in ExternalProductID or ProductReferenceID. |
133
|
|
|
|
|
|
|
Not applicable with QueryKeywords. |
134
|
|
|
|
|
|
|
|
135
|
|
|
|
|
|
|
RequiredInput: No |
136
|
|
|
|
|
|
|
Default: false |
137
|
|
|
|
|
|
|
# Argument: 'xs:boolean' |
138
|
|
|
|
|
|
|
|
139
|
|
|
|
|
|
|
=cut |
140
|
|
|
|
|
|
|
|
141
|
|
|
|
|
|
|
sub setIncludeItemArray { |
142
|
|
|
|
|
|
|
my $self = shift; |
143
|
|
|
|
|
|
|
my $sIncludeItemArray = shift; |
144
|
|
|
|
|
|
|
$self->getRequestDataType()->setIncludeItemArray($sIncludeItemArray); |
145
|
|
|
|
|
|
|
} |
146
|
|
|
|
|
|
|
|
147
|
|
|
|
|
|
|
=head2 setIncludeReviewDetails() |
148
|
|
|
|
|
|
|
|
149
|
|
|
|
|
|
|
If true, the response includes up to 20 reviews (if any) |
150
|
|
|
|
|
|
|
for the product specified in ExternalProductID or |
151
|
|
|
|
|
|
|
ProductReferenceID. |
152
|
|
|
|
|
|
|
The reviews are sorted by most helpful (most votes) first. |
153
|
|
|
|
|
|
|
When you include review details, please note that |
154
|
|
|
|
|
|
|
response times may be longer than 60 seconds. |
155
|
|
|
|
|
|
|
Not applicable with QueryKeywords. |
156
|
|
|
|
|
|
|
|
157
|
|
|
|
|
|
|
RequiredInput: No |
158
|
|
|
|
|
|
|
Default: false |
159
|
|
|
|
|
|
|
# Argument: 'xs:boolean' |
160
|
|
|
|
|
|
|
|
161
|
|
|
|
|
|
|
=cut |
162
|
|
|
|
|
|
|
|
163
|
|
|
|
|
|
|
sub setIncludeReviewDetails { |
164
|
|
|
|
|
|
|
my $self = shift; |
165
|
|
|
|
|
|
|
my $sIncludeReviewDetails = shift; |
166
|
|
|
|
|
|
|
$self->getRequestDataType()->setIncludeReviewDetails($sIncludeReviewDetails); |
167
|
|
|
|
|
|
|
} |
168
|
|
|
|
|
|
|
|
169
|
|
|
|
|
|
|
=head2 setProductSearch() |
170
|
|
|
|
|
|
|
|
171
|
|
|
|
|
|
|
Contains the fields that form the search query. You can query |
172
|
|
|
|
|
|
|
against keywords, an eBay product reference ID (not to be confused |
173
|
|
|
|
|
|
|
with an eBay product ID), or external product ID (like an ISBN). |
174
|
|
|
|
|
|
|
|
175
|
|
|
|
|
|
|
RequiredInput: Yes |
176
|
|
|
|
|
|
|
# Argument: 'ns:ProductSearchType' |
177
|
|
|
|
|
|
|
|
178
|
|
|
|
|
|
|
=cut |
179
|
|
|
|
|
|
|
|
180
|
|
|
|
|
|
|
sub setProductSearch { |
181
|
|
|
|
|
|
|
my $self = shift; |
182
|
|
|
|
|
|
|
my $pProductSearch = shift; |
183
|
|
|
|
|
|
|
$self->getRequestDataType()->setProductSearch($pProductSearch); |
184
|
|
|
|
|
|
|
} |
185
|
|
|
|
|
|
|
|
186
|
|
|
|
|
|
|
=head2 setProductSort() |
187
|
|
|
|
|
|
|
|
188
|
|
|
|
|
|
|
Sorts the list of products returned. This is mostly only useful |
189
|
|
|
|
|
|
|
with QueryKeywords. (When you use ExternalProductID or |
190
|
|
|
|
|
|
|
ProductReferenceID, eBay usually only returns one product.) |
191
|
|
|
|
|
|
|
|
192
|
|
|
|
|
|
|
RequiredInput: No |
193
|
|
|
|
|
|
|
# Argument: 'ns:ProductSortCodeType' |
194
|
|
|
|
|
|
|
|
195
|
|
|
|
|
|
|
=cut |
196
|
|
|
|
|
|
|
|
197
|
|
|
|
|
|
|
sub setProductSort { |
198
|
|
|
|
|
|
|
my $self = shift; |
199
|
|
|
|
|
|
|
my $sProductSort = shift; |
200
|
|
|
|
|
|
|
$self->getRequestDataType()->setProductSort($sProductSort); |
201
|
|
|
|
|
|
|
} |
202
|
|
|
|
|
|
|
|
203
|
|
|
|
|
|
|
|
204
|
|
|
|
|
|
|
|
205
|
|
|
|
|
|
|
# |
206
|
|
|
|
|
|
|
# output properties |
207
|
|
|
|
|
|
|
# |
208
|
|
|
|
|
|
|
|
209
|
|
|
|
|
|
|
=head2 getApproximatePages() |
210
|
|
|
|
|
|
|
|
211
|
|
|
|
|
|
|
The total number of pages that can be returned, given the same query and |
212
|
|
|
|
|
|
|
filters in the request. As GetProducts only returns up to 2000 products, |
213
|
|
|
|
|
|
|
the maximum possible value is theoretically 2000 (if you were to set |
214
|
|
|
|
|
|
|
EntriesPerPage to 1 in the request). |
215
|
|
|
|
|
|
|
|
216
|
|
|
|
|
|
|
Returned: Always |
217
|
|
|
|
|
|
|
# Returns: 'xs:int' |
218
|
|
|
|
|
|
|
|
219
|
|
|
|
|
|
|
=cut |
220
|
|
|
|
|
|
|
|
221
|
|
|
|
|
|
|
sub getApproximatePages { |
222
|
|
|
|
|
|
|
my $self = shift; |
223
|
|
|
|
|
|
|
return $self->getResponseDataType()->getApproximatePages(); |
224
|
|
|
|
|
|
|
} |
225
|
|
|
|
|
|
|
|
226
|
|
|
|
|
|
|
=head2 getBuyingGuideDetails() |
227
|
|
|
|
|
|
|
|
228
|
|
|
|
|
|
|
Contains information for up to 5 buying guides that match the |
229
|
|
|
|
|
|
|
query. Only returned when you set IncludeBuyingGuideDetails to |
230
|
|
|
|
|
|
|
true. Buying guides provide useful information about shopping |
231
|
|
|
|
|
|
|
in a particular domain, like Digital Cameras. |
232
|
|
|
|
|
|
|
For example, a digital camera buying guide |
233
|
|
|
|
|
|
|
could help a buyer determine what kind of digital camera |
234
|
|
|
|
|
|
|
is right for them. |
235
|
|
|
|
|
|
|
If no buying guides are associated with the product, this only |
236
|
|
|
|
|
|
|
returns a link to the buying guide hub (the main Guides page). |
237
|
|
|
|
|
|
|
|
238
|
|
|
|
|
|
|
Returned: Conditionally |
239
|
|
|
|
|
|
|
# Returns: 'ns:BuyingGuideDetailsType' |
240
|
|
|
|
|
|
|
|
241
|
|
|
|
|
|
|
=cut |
242
|
|
|
|
|
|
|
|
243
|
|
|
|
|
|
|
sub getBuyingGuideDetails { |
244
|
|
|
|
|
|
|
my $self = shift; |
245
|
|
|
|
|
|
|
return $self->getResponseDataType()->getBuyingGuideDetails(); |
246
|
|
|
|
|
|
|
} |
247
|
|
|
|
|
|
|
|
248
|
|
|
|
|
|
|
=head2 getCharacteristicsSetProductHistogram() |
249
|
|
|
|
|
|
|
|
250
|
|
|
|
|
|
|
A histogram that lists the number of matching products found |
251
|
|
|
|
|
|
|
and the domains in which they were found. |
252
|
|
|
|
|
|
|
A domain is essentially |
253
|
|
|
|
|
|
|
a set of categories that share certain common features |
254
|
|
|
|
|
|
|
(as determined by eBay). Each domain has its own name and ID. |
255
|
|
|
|
|
|
|
|
256
|
|
|
|
|
|
|
Returned: Always |
257
|
|
|
|
|
|
|
# Returns: 'ns:CharacteristicsSetProductHistogramType' |
258
|
|
|
|
|
|
|
|
259
|
|
|
|
|
|
|
=cut |
260
|
|
|
|
|
|
|
|
261
|
|
|
|
|
|
|
sub getCharacteristicsSetProductHistogram { |
262
|
|
|
|
|
|
|
my $self = shift; |
263
|
|
|
|
|
|
|
return $self->getResponseDataType()->getCharacteristicsSetProductHistogram(); |
264
|
|
|
|
|
|
|
} |
265
|
|
|
|
|
|
|
|
266
|
|
|
|
|
|
|
=head2 isHasMore() |
267
|
|
|
|
|
|
|
|
268
|
|
|
|
|
|
|
If true, more pages of results are available. |
269
|
|
|
|
|
|
|
That is, PageNumber is less than ApproximatePages. |
270
|
|
|
|
|
|
|
|
271
|
|
|
|
|
|
|
Returned: Always |
272
|
|
|
|
|
|
|
# Returns: 'xs:boolean' |
273
|
|
|
|
|
|
|
|
274
|
|
|
|
|
|
|
=cut |
275
|
|
|
|
|
|
|
|
276
|
|
|
|
|
|
|
sub isHasMore { |
277
|
|
|
|
|
|
|
my $self = shift; |
278
|
|
|
|
|
|
|
return $self->getResponseDataType()->isHasMore(); |
279
|
|
|
|
|
|
|
} |
280
|
|
|
|
|
|
|
|
281
|
|
|
|
|
|
|
=head2 getItemArray() |
282
|
|
|
|
|
|
|
|
283
|
|
|
|
|
|
|
A list of items (if any) that match the product identified in |
284
|
|
|
|
|
|
|
ExternalProductID or ProductReferenceID in the request. |
285
|
|
|
|
|
|
|
Only returned when you set IncludeItemArray to true. |
286
|
|
|
|
|
|
|
The items are sorted by end time (ending soonest), and this order |
287
|
|
|
|
|
|
|
is not configurable in the request. |
288
|
|
|
|
|
|
|
Up to 200 items can be returned. All items are returned on |
289
|
|
|
|
|
|
|
the first page (page 1). Not returned when you use |
290
|
|
|
|
|
|
|
QueryKeywords. |
291
|
|
|
|
|
|
|
|
292
|
|
|
|
|
|
|
If ItemCount is greater than 200, use GetSearchResults if you |
293
|
|
|
|
|
|
|
want to retrieve more matching items. |
294
|
|
|
|
|
|
|
|
295
|
|
|
|
|
|
|
Note: |
296
|
|
|
|
|
|
|
GetSearchResults doesn't currently support ProductReferenceID |
297
|
|
|
|
|
|
|
queries. So, you can use ExternalProductID (if present) as input |
298
|
|
|
|
|
|
|
to GetSearchResults. Otherwise, see Product.DetailsURL for |
299
|
|
|
|
|
|
|
a workaround to determine a ProductID value to use with |
300
|
|
|
|
|
|
|
GetSearchResults. |
301
|
|
|
|
|
|
|
|
302
|
|
|
|
|
|
|
Returned: Conditionally |
303
|
|
|
|
|
|
|
# Returns: 'ns:ItemArrayType' |
304
|
|
|
|
|
|
|
|
305
|
|
|
|
|
|
|
=cut |
306
|
|
|
|
|
|
|
|
307
|
|
|
|
|
|
|
sub getItemArray { |
308
|
|
|
|
|
|
|
my $self = shift; |
309
|
|
|
|
|
|
|
return $self->getResponseDataType()->getItemArray(); |
310
|
|
|
|
|
|
|
} |
311
|
|
|
|
|
|
|
|
312
|
|
|
|
|
|
|
=head2 getPageNumber() |
313
|
|
|
|
|
|
|
|
314
|
|
|
|
|
|
|
The number of the page of data returned. If many products |
315
|
|
|
|
|
|
|
are found and multiple pages of results are available, use |
316
|
|
|
|
|
|
|
this in combination with ApproximatePages and HasMore to decide |
317
|
|
|
|
|
|
|
which page to retrieve next. As GetProducts only returns |
318
|
|
|
|
|
|
|
up to 2000 products, the maximum possible value is theoretically |
319
|
|
|
|
|
|
|
2000 (if you were to set EntriesPerPage to 1 in the request). |
320
|
|
|
|
|
|
|
|
321
|
|
|
|
|
|
|
Returned: Always |
322
|
|
|
|
|
|
|
# Returns: 'xs:int' |
323
|
|
|
|
|
|
|
|
324
|
|
|
|
|
|
|
=cut |
325
|
|
|
|
|
|
|
|
326
|
|
|
|
|
|
|
sub getPageNumber { |
327
|
|
|
|
|
|
|
my $self = shift; |
328
|
|
|
|
|
|
|
return $self->getResponseDataType()->getPageNumber(); |
329
|
|
|
|
|
|
|
} |
330
|
|
|
|
|
|
|
|
331
|
|
|
|
|
|
|
=head2 getProduct() |
332
|
|
|
|
|
|
|
|
333
|
|
|
|
|
|
|
An eBay catalog product. This contains stock information about a |
334
|
|
|
|
|
|
|
particular DVD, camera, set of golf clubs, or other product. |
335
|
|
|
|
|
|
|
When you use QueryKeywords in the request, GetProducts returns a |
336
|
|
|
|
|
|
|
maximum of 20 products per page. |
337
|
|
|
|
|
|
|
When you use ExternalProductID or ProductReferenceID in the |
338
|
|
|
|
|
|
|
request, GetProducts usually only returns 1 product. |
339
|
|
|
|
|
|
|
(If more than one product matches the same ExternalProductID, |
340
|
|
|
|
|
|
|
GetProducts will return all of those products. As of the time |
341
|
|
|
|
|
|
|
of this writing, we expect this to be a rare case.) |
342
|
|
|
|
|
|
|
|
343
|
|
|
|
|
|
|
Returned: Always |
344
|
|
|
|
|
|
|
# Returns: reference to an array |
345
|
|
|
|
|
|
|
of 'ns:CatalogProductType' |
346
|
|
|
|
|
|
|
|
347
|
|
|
|
|
|
|
=cut |
348
|
|
|
|
|
|
|
|
349
|
|
|
|
|
|
|
sub getProduct { |
350
|
|
|
|
|
|
|
my $self = shift; |
351
|
|
|
|
|
|
|
return $self->getResponseDataType()->getProduct(); |
352
|
|
|
|
|
|
|
} |
353
|
|
|
|
|
|
|
|
354
|
|
|
|
|
|
|
=head2 getTotalProducts() |
355
|
|
|
|
|
|
|
|
356
|
|
|
|
|
|
|
The total number of matching products found. |
357
|
|
|
|
|
|
|
(If more than 2000 products are found, the call fails |
358
|
|
|
|
|
|
|
with an error.) |
359
|
|
|
|
|
|
|
|
360
|
|
|
|
|
|
|
Returned: Always |
361
|
|
|
|
|
|
|
# Returns: 'xs:int' |
362
|
|
|
|
|
|
|
|
363
|
|
|
|
|
|
|
=cut |
364
|
|
|
|
|
|
|
|
365
|
|
|
|
|
|
|
sub getTotalProducts { |
366
|
|
|
|
|
|
|
my $self = shift; |
367
|
|
|
|
|
|
|
return $self->getResponseDataType()->getTotalProducts(); |
368
|
|
|
|
|
|
|
} |
369
|
|
|
|
|
|
|
|
370
|
|
|
|
|
|
|
|
371
|
|
|
|
|
|
|
|
372
|
|
|
|
|
|
|
|
373
|
|
|
|
|
|
|
|
374
|
|
|
|
|
|
|
1; |