trisulrp 1.2.2

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.
data/lib/trp.pb.rb ADDED
@@ -0,0 +1,541 @@
1
+ #!/usr/bin/env ruby
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+
4
+ require 'protocol_buffers'
5
+
6
+ # Reload support
7
+ Object.__send__(:remove_const, :TRP) if defined?(TRP)
8
+
9
+ module TRP
10
+ # forward declarations
11
+ class Timestamp < ::ProtocolBuffers::Message; end
12
+ class TimeInterval < ::ProtocolBuffers::Message; end
13
+ class StatsTuple < ::ProtocolBuffers::Message; end
14
+ class MeterValues < ::ProtocolBuffers::Message; end
15
+ class KeyStats < ::ProtocolBuffers::Message; end
16
+ class KeyDetails < ::ProtocolBuffers::Message; end
17
+ class SessionID < ::ProtocolBuffers::Message; end
18
+ class CounterGroupDetails < ::ProtocolBuffers::Message; end
19
+ class Message < ::ProtocolBuffers::Message; end
20
+ class HelloRequest < ::ProtocolBuffers::Message; end
21
+ class HelloResponse < ::ProtocolBuffers::Message; end
22
+ class ErrorResponse < ::ProtocolBuffers::Message; end
23
+ class OKResponse < ::ProtocolBuffers::Message; end
24
+ class ReleaseContextRequest < ::ProtocolBuffers::Message; end
25
+ class CounterItemRequest < ::ProtocolBuffers::Message; end
26
+ class CounterItemResponse < ::ProtocolBuffers::Message; end
27
+ class CounterGroupRequest < ::ProtocolBuffers::Message; end
28
+ class CounterGroupResponse < ::ProtocolBuffers::Message; end
29
+ class ControlledCounterGroupRequest < ::ProtocolBuffers::Message; end
30
+ class ControlledCounterGroupResponse < ::ProtocolBuffers::Message; end
31
+ class FilteredDatagramRequest < ::ProtocolBuffers::Message; end
32
+ class FilteredDatagramResponse < ::ProtocolBuffers::Message; end
33
+ class ControlledContextRequest < ::ProtocolBuffers::Message; end
34
+ class ControlledContextResponse < ::ProtocolBuffers::Message; end
35
+ class SearchKeysRequest < ::ProtocolBuffers::Message; end
36
+ class SearchKeysResponse < ::ProtocolBuffers::Message; end
37
+ class CounterGroupInfoRequest < ::ProtocolBuffers::Message; end
38
+ class CounterGroupInfoResponse < ::ProtocolBuffers::Message; end
39
+ class SessionItemRequest < ::ProtocolBuffers::Message; end
40
+ class SessionItemResponse < ::ProtocolBuffers::Message; end
41
+ class BulkCounterItemRequest < ::ProtocolBuffers::Message; end
42
+ class BulkCounterItemResponse < ::ProtocolBuffers::Message; end
43
+ class TopperSnapshotRequest < ::ProtocolBuffers::Message; end
44
+ class TopperSnapshotResponse < ::ProtocolBuffers::Message; end
45
+ class UpdateKeyRequest < ::ProtocolBuffers::Message; end
46
+ class KeySessionActivityRequest < ::ProtocolBuffers::Message; end
47
+ class KeySessionActivityResponse < ::ProtocolBuffers::Message; end
48
+ class SessionTrackerRequest < ::ProtocolBuffers::Message; end
49
+ class SessionTrackerResponse < ::ProtocolBuffers::Message; end
50
+ class SessionGroupRequest < ::ProtocolBuffers::Message; end
51
+ class SessionGroupResponse < ::ProtocolBuffers::Message; end
52
+ class ServerStatsRequest < ::ProtocolBuffers::Message; end
53
+ class ServerStatsResponse < ::ProtocolBuffers::Message; end
54
+
55
+ # enums
56
+ module AuthLevel
57
+ include ::ProtocolBuffers::Enum
58
+ ADMIN = 1
59
+ BASIC_USER = 2
60
+ FORENSIC_USER = 3
61
+ BLOCKED_USER = 4
62
+ end
63
+
64
+ module CompressionType
65
+ include ::ProtocolBuffers::Enum
66
+ UNCOMPRESSED = 1
67
+ GZIP = 2
68
+ end
69
+
70
+ module PcapFormat
71
+ include ::ProtocolBuffers::Enum
72
+ LIBPCAP = 1
73
+ UNSNIFF = 2
74
+ end
75
+
76
+ class Timestamp < ::ProtocolBuffers::Message
77
+ required :int64, :tv_sec, 1
78
+ required :int64, :tv_usec, 2, :default => 0
79
+
80
+ gen_methods! # new fields ignored after this point
81
+ end
82
+
83
+ class TimeInterval < ::ProtocolBuffers::Message
84
+ required ::TRP::Timestamp, :from, 1
85
+ required ::TRP::Timestamp, :to, 2
86
+
87
+ gen_methods! # new fields ignored after this point
88
+ end
89
+
90
+ class StatsTuple < ::ProtocolBuffers::Message
91
+ required ::TRP::Timestamp, :ts, 1
92
+ required :double, :val, 2
93
+
94
+ gen_methods! # new fields ignored after this point
95
+ end
96
+
97
+ class MeterValues < ::ProtocolBuffers::Message
98
+ required :int32, :meter, 1
99
+ repeated ::TRP::StatsTuple, :values, 2
100
+
101
+ gen_methods! # new fields ignored after this point
102
+ end
103
+
104
+ class KeyStats < ::ProtocolBuffers::Message
105
+ optional :int64, :context, 1, :default => 0
106
+ required :string, :counter_group, 2
107
+ required :string, :key, 3
108
+ repeated ::TRP::MeterValues, :meters, 4
109
+
110
+ gen_methods! # new fields ignored after this point
111
+ end
112
+
113
+ class KeyDetails < ::ProtocolBuffers::Message
114
+ required :string, :key, 1
115
+ optional :string, :label, 2
116
+ optional :string, :description, 3
117
+
118
+ gen_methods! # new fields ignored after this point
119
+ end
120
+
121
+ class SessionID < ::ProtocolBuffers::Message
122
+ required :int64, :slice_id, 1
123
+ required :int64, :session_id, 2
124
+
125
+ gen_methods! # new fields ignored after this point
126
+ end
127
+
128
+ class CounterGroupDetails < ::ProtocolBuffers::Message
129
+ required :string, :guid, 1
130
+ required :string, :name, 2
131
+ optional :int64, :bucket_size, 3
132
+ optional ::TRP::TimeInterval, :time_interval, 4
133
+
134
+ gen_methods! # new fields ignored after this point
135
+ end
136
+
137
+ class Message < ::ProtocolBuffers::Message
138
+ # forward declarations
139
+
140
+ # enums
141
+ module Command
142
+ include ::ProtocolBuffers::Enum
143
+ HELLO_REQUEST = 1
144
+ HELLO_RESPONSE = 2
145
+ OK_RESPONSE = 3
146
+ ERROR_RESPONSE = 5
147
+ COUNTER_GROUP_REQUEST = 6
148
+ COUNTER_GROUP_RESPONSE = 7
149
+ COUNTER_ITEM_REQUEST = 8
150
+ COUNTER_ITEM_RESPONSE = 9
151
+ RELEASE_RESOURCE_REQUEST = 10
152
+ RELEASE_CONTEXT_REQUEST = 11
153
+ CONTROLLED_COUNTER_GROUP_REQUEST = 12
154
+ CONTROLLED_COUNTER_GROUP_RESPONSE = 13
155
+ FILTERED_DATAGRAMS_REQUEST = 14
156
+ FILTERED_DATAGRAMS_RESPONSE = 15
157
+ CONTROLLED_CONTEXT_REQUEST = 16
158
+ CONTROLLED_CONTEXT_RESPONSE = 17
159
+ SEARCH_KEYS_REQUEST = 18
160
+ SEARCH_KEYS_RESPONSE = 19
161
+ COUNTER_GROUP_INFO_REQUEST = 20
162
+ COUNTER_GROUP_INFO_RESPONSE = 21
163
+ SESSION_TRACKER_REQUEST = 22
164
+ SESSION_TRACKER_RESPONSE = 23
165
+ SESSION_ITEM_REQUEST = 24
166
+ SESSION_ITEM_RESPONSE = 25
167
+ BULK_COUNTER_ITEM_REQUEST = 26
168
+ BULK_COUNTER_ITEM_RESPONSE = 27
169
+ CGMONITOR_REQUEST = 28
170
+ CGMONITOR_RESPONSE = 29
171
+ TOPPER_SNAPSHOT_REQUEST = 30
172
+ TOPPER_SNAPSHOT_RESPONSE = 31
173
+ UPDATE_KEY_REQUEST = 32
174
+ UPDATE_KEY_RESPONSE = 33
175
+ KEY_SESS_ACTIVITY_REQUEST = 34
176
+ KEY_SESS_ACTIVITY_RESPONSE = 35
177
+ RING_STATS_REQUEST = 36
178
+ RING_STATS_RESPONSE = 37
179
+ SERVER_STATS_REQUEST = 38
180
+ SERVER_STATS_RESPONSE = 39
181
+ SESSION_GROUP_REQUEST = 40
182
+ SESSION_GROUP_RESPONSE = 41
183
+ end
184
+
185
+ required ::TRP::Message::Command, :trp_command, 1
186
+ optional ::TRP::HelloRequest, :hello_request, 2
187
+ optional ::TRP::HelloResponse, :hello_response, 3
188
+ optional ::TRP::OKResponse, :ok_response, 4
189
+ optional ::TRP::ErrorResponse, :error_response, 5
190
+ optional ::TRP::CounterGroupRequest, :counter_group_request, 6
191
+ optional ::TRP::CounterGroupResponse, :counter_group_response, 7
192
+ optional ::TRP::CounterItemRequest, :counter_item_request, 8
193
+ optional ::TRP::CounterItemResponse, :counter_item_response, 9
194
+ optional ::TRP::ReleaseContextRequest, :release_context_request, 11
195
+ optional ::TRP::ControlledCounterGroupRequest, :controlled_counter_group_request, 12
196
+ optional ::TRP::ControlledCounterGroupResponse, :controlled_counter_group_response, 13
197
+ optional ::TRP::FilteredDatagramRequest, :filtered_datagram_request, 14
198
+ optional ::TRP::FilteredDatagramResponse, :filtered_datagram_response, 15
199
+ optional ::TRP::ControlledContextRequest, :controlled_context_request, 16
200
+ optional ::TRP::ControlledContextResponse, :controlled_context_response, 17
201
+ optional ::TRP::SearchKeysRequest, :search_keys_request, 18
202
+ optional ::TRP::SearchKeysResponse, :search_keys_response, 19
203
+ optional ::TRP::CounterGroupInfoRequest, :counter_group_info_request, 20
204
+ optional ::TRP::CounterGroupInfoResponse, :counter_group_info_response, 21
205
+ optional ::TRP::SessionItemRequest, :session_item_request, 22
206
+ optional ::TRP::SessionItemResponse, :session_item_response, 23
207
+ optional ::TRP::BulkCounterItemRequest, :bulk_counter_item_request, 24
208
+ optional ::TRP::BulkCounterItemResponse, :bulk_counter_item_response, 25
209
+ optional ::TRP::TopperSnapshotRequest, :topper_snapshot_request, 28
210
+ optional ::TRP::TopperSnapshotResponse, :topper_snapshot_response, 29
211
+ optional ::TRP::UpdateKeyRequest, :update_key_request, 30
212
+ optional ::TRP::KeySessionActivityRequest, :key_session_activity_request, 31
213
+ optional ::TRP::KeySessionActivityResponse, :key_session_activity_response, 32
214
+ optional ::TRP::SessionTrackerRequest, :session_tracker_request, 33
215
+ optional ::TRP::SessionTrackerResponse, :session_tracker_response, 34
216
+ optional ::TRP::ServerStatsRequest, :server_stats_request, 37
217
+ optional ::TRP::ServerStatsResponse, :server_stats_response, 38
218
+ optional ::TRP::SessionGroupRequest, :session_group_request, 39
219
+ optional ::TRP::SessionGroupResponse, :session_group_response, 40
220
+
221
+ gen_methods! # new fields ignored after this point
222
+ end
223
+
224
+ class HelloRequest < ::ProtocolBuffers::Message
225
+ required :string, :station_id, 1
226
+
227
+ gen_methods! # new fields ignored after this point
228
+ end
229
+
230
+ class HelloResponse < ::ProtocolBuffers::Message
231
+ required :string, :trisul_id, 1
232
+ required :string, :connection_id, 2
233
+ required :string, :version_string, 3
234
+ required ::TRP::Timestamp, :connection_start_time, 4
235
+ required ::TRP::Timestamp, :connection_up_time, 5
236
+ required ::TRP::AuthLevel, :current_auth_level, 6
237
+
238
+ gen_methods! # new fields ignored after this point
239
+ end
240
+
241
+ class ErrorResponse < ::ProtocolBuffers::Message
242
+ required :int64, :original_command, 1
243
+ required :int64, :error_code, 2
244
+ required :string, :error_message, 3
245
+
246
+ gen_methods! # new fields ignored after this point
247
+ end
248
+
249
+ class OKResponse < ::ProtocolBuffers::Message
250
+ required :int64, :original_command, 1
251
+ optional :string, :message, 2
252
+
253
+ gen_methods! # new fields ignored after this point
254
+ end
255
+
256
+ class ReleaseContextRequest < ::ProtocolBuffers::Message
257
+ optional :int64, :context, 1
258
+
259
+ gen_methods! # new fields ignored after this point
260
+ end
261
+
262
+ class CounterItemRequest < ::ProtocolBuffers::Message
263
+ optional :int64, :context, 1, :default => 0
264
+ required :string, :counter_group, 2
265
+ required :int64, :meter, 3, :default => 0
266
+ required :string, :key, 4
267
+ required ::TRP::TimeInterval, :time_interval, 5
268
+
269
+ gen_methods! # new fields ignored after this point
270
+ end
271
+
272
+ class CounterItemResponse < ::ProtocolBuffers::Message
273
+ required ::TRP::KeyStats, :stats, 1
274
+
275
+ gen_methods! # new fields ignored after this point
276
+ end
277
+
278
+ class CounterGroupRequest < ::ProtocolBuffers::Message
279
+ optional :int64, :context, 1, :default => 0
280
+ required :string, :counter_group, 2
281
+ optional :int64, :meter, 3, :default => 0
282
+ optional :int64, :maxitems, 4, :default => 10
283
+ optional ::TRP::TimeInterval, :time_interval, 5
284
+ optional ::TRP::Timestamp, :time_instant, 6
285
+ optional :int64, :flags, 7
286
+
287
+ gen_methods! # new fields ignored after this point
288
+ end
289
+
290
+ class CounterGroupResponse < ::ProtocolBuffers::Message
291
+ required :int64, :context, 1
292
+ required :string, :counter_group, 2
293
+ required :int64, :meter, 3
294
+ repeated ::TRP::KeyDetails, :keys, 6
295
+
296
+ gen_methods! # new fields ignored after this point
297
+ end
298
+
299
+ class ControlledCounterGroupRequest < ::ProtocolBuffers::Message
300
+ required :string, :dynamic_group_id, 1
301
+ required :string, :counter_group, 2
302
+ required :int64, :meter, 3
303
+ required :int64, :maxitems, 4
304
+ required :int64, :bucket_ms, 5
305
+ required :int64, :top_nsize, 6
306
+ required ::TRP::TimeInterval, :time_interval, 7
307
+ required :string, :control_counter_id, 9
308
+ required :string, :control_key, 10
309
+
310
+ gen_methods! # new fields ignored after this point
311
+ end
312
+
313
+ class ControlledCounterGroupResponse < ::ProtocolBuffers::Message
314
+ required :string, :dynamic_group_id, 1
315
+
316
+ gen_methods! # new fields ignored after this point
317
+ end
318
+
319
+ class FilteredDatagramRequest < ::ProtocolBuffers::Message
320
+ optional :int64, :max_packets, 1, :default => 0
321
+ optional :int64, :max_bytes, 2, :default => 0
322
+ optional ::TRP::CompressionType, :compress_type, 3, :default => ::TRP::CompressionType::UNCOMPRESSED
323
+ required ::TRP::TimeInterval, :time_interval, 4
324
+ required :string, :filter_expression, 5
325
+
326
+ gen_methods! # new fields ignored after this point
327
+ end
328
+
329
+ class FilteredDatagramResponse < ::ProtocolBuffers::Message
330
+ required ::TRP::PcapFormat, :format, 1
331
+ required ::TRP::CompressionType, :compress_type, 2
332
+ required ::TRP::TimeInterval, :time_interval, 3
333
+ required :int64, :num_datagrams, 4
334
+ required :int64, :num_bytes, 5
335
+ required :string, :contents, 6
336
+
337
+ gen_methods! # new fields ignored after this point
338
+ end
339
+
340
+ class ControlledContextRequest < ::ProtocolBuffers::Message
341
+ required ::TRP::TimeInterval, :time_interval, 1
342
+ required :string, :filter_expression, 2
343
+
344
+ gen_methods! # new fields ignored after this point
345
+ end
346
+
347
+ class ControlledContextResponse < ::ProtocolBuffers::Message
348
+ required :int64, :context, 1
349
+ optional :string, :context_db, 2
350
+ required ::TRP::TimeInterval, :time_interval, 3
351
+
352
+ gen_methods! # new fields ignored after this point
353
+ end
354
+
355
+ class SearchKeysRequest < ::ProtocolBuffers::Message
356
+ optional :int64, :context, 1
357
+ required :string, :counter_group, 2
358
+ required :string, :pattern, 3
359
+ required :int64, :maxitems, 4
360
+
361
+ gen_methods! # new fields ignored after this point
362
+ end
363
+
364
+ class SearchKeysResponse < ::ProtocolBuffers::Message
365
+ optional :int64, :context, 1
366
+ required :string, :counter_group, 2
367
+ repeated ::TRP::KeyDetails, :found_keys, 3
368
+
369
+ gen_methods! # new fields ignored after this point
370
+ end
371
+
372
+ class CounterGroupInfoRequest < ::ProtocolBuffers::Message
373
+ optional :int64, :context, 1
374
+ optional :string, :counter_group, 2
375
+
376
+ gen_methods! # new fields ignored after this point
377
+ end
378
+
379
+ class CounterGroupInfoResponse < ::ProtocolBuffers::Message
380
+ optional :int64, :context, 1
381
+ repeated ::TRP::CounterGroupDetails, :group_details, 2
382
+
383
+ gen_methods! # new fields ignored after this point
384
+ end
385
+
386
+ class SessionItemRequest < ::ProtocolBuffers::Message
387
+ optional :int64, :context, 1
388
+ required :string, :session_group, 2
389
+ optional :string, :session_key, 3
390
+ optional ::TRP::SessionID, :session_id, 4
391
+
392
+ gen_methods! # new fields ignored after this point
393
+ end
394
+
395
+ class SessionItemResponse < ::ProtocolBuffers::Message
396
+ optional :int64, :context, 1
397
+ required :string, :session_group, 2
398
+ optional :string, :session_key, 3
399
+ optional ::TRP::SessionID, :session_id, 4
400
+ optional :string, :user_label, 5
401
+ required ::TRP::TimeInterval, :time_interval, 6
402
+ required :int64, :state, 7
403
+ required :int64, :az_bytes, 8
404
+ required :int64, :za_bytes, 9
405
+ required ::TRP::KeyDetails, :key1A, 10
406
+ required ::TRP::KeyDetails, :key2A, 11
407
+ required ::TRP::KeyDetails, :key1Z, 12
408
+ required ::TRP::KeyDetails, :key2Z, 13
409
+
410
+ gen_methods! # new fields ignored after this point
411
+ end
412
+
413
+ class BulkCounterItemRequest < ::ProtocolBuffers::Message
414
+ optional :int64, :context, 1
415
+ required :string, :counter_group, 2
416
+ required :int64, :meter, 3
417
+ required ::TRP::TimeInterval, :time_interval, 4
418
+ repeated :string, :keys, 5
419
+
420
+ gen_methods! # new fields ignored after this point
421
+ end
422
+
423
+ class BulkCounterItemResponse < ::ProtocolBuffers::Message
424
+ repeated ::TRP::KeyStats, :stats, 1
425
+ repeated ::TRP::KeyDetails, :details, 2
426
+
427
+ gen_methods! # new fields ignored after this point
428
+ end
429
+
430
+ class TopperSnapshotRequest < ::ProtocolBuffers::Message
431
+ optional :int64, :context, 1
432
+ required :string, :counter_group, 2
433
+ required :int64, :meter, 3
434
+ required ::TRP::TimeInterval, :Time, 4
435
+ required :int64, :maxitems, 5
436
+
437
+ gen_methods! # new fields ignored after this point
438
+ end
439
+
440
+ class TopperSnapshotResponse < ::ProtocolBuffers::Message
441
+ optional :int64, :context, 1
442
+ required :string, :counter_group, 2
443
+ required :int64, :meter, 3
444
+ required ::TRP::Timestamp, :time, 4
445
+ required :int64, :window_secs, 5
446
+ required :string, :keys, 6
447
+ required :string, :labels, 7
448
+
449
+ gen_methods! # new fields ignored after this point
450
+ end
451
+
452
+ class UpdateKeyRequest < ::ProtocolBuffers::Message
453
+ optional :int64, :context, 1
454
+ required :string, :counter_group, 2
455
+ required :string, :key, 4
456
+ required :string, :label, 5
457
+ optional :string, :description, 6
458
+
459
+ gen_methods! # new fields ignored after this point
460
+ end
461
+
462
+ class KeySessionActivityRequest < ::ProtocolBuffers::Message
463
+ optional :int64, :context, 1
464
+ required :string, :session_group, 2
465
+ required :string, :key, 3
466
+ required :int64, :maxitems, 4
467
+ required :int64, :volume_filter, 5
468
+ required :int64, :duration_filter, 6
469
+ required ::TRP::TimeInterval, :time_interval, 7
470
+
471
+ gen_methods! # new fields ignored after this point
472
+ end
473
+
474
+ class KeySessionActivityResponse < ::ProtocolBuffers::Message
475
+ optional :int64, :context, 1
476
+ required :string, :session_group, 2
477
+ repeated ::TRP::SessionID, :sessions, 3
478
+
479
+ gen_methods! # new fields ignored after this point
480
+ end
481
+
482
+ class SessionTrackerRequest < ::ProtocolBuffers::Message
483
+ optional :int64, :context, 1
484
+ required :string, :session_group, 2
485
+ required :int64, :tracker_id, 3, :default => 1
486
+ optional :int64, :maxitems, 4, :default => 100
487
+ required ::TRP::TimeInterval, :time_interval, 5
488
+
489
+ gen_methods! # new fields ignored after this point
490
+ end
491
+
492
+ class SessionTrackerResponse < ::ProtocolBuffers::Message
493
+ optional :int64, :context, 1
494
+ required :string, :session_group, 2
495
+ repeated ::TRP::SessionID, :sessions, 3
496
+
497
+ gen_methods! # new fields ignored after this point
498
+ end
499
+
500
+ class SessionGroupRequest < ::ProtocolBuffers::Message
501
+ optional :int64, :context, 1
502
+ required :string, :session_group, 2
503
+ optional :int64, :tracker_id, 3
504
+ optional :string, :key_filter, 4
505
+ optional :int64, :maxitems, 5, :default => 100
506
+
507
+ gen_methods! # new fields ignored after this point
508
+ end
509
+
510
+ class SessionGroupResponse < ::ProtocolBuffers::Message
511
+ optional :int64, :context, 1
512
+ required :string, :session_group, 2
513
+ repeated :string, :session_keys, 3
514
+
515
+ gen_methods! # new fields ignored after this point
516
+ end
517
+
518
+ class ServerStatsRequest < ::ProtocolBuffers::Message
519
+ required :int64, :param, 1
520
+
521
+ gen_methods! # new fields ignored after this point
522
+ end
523
+
524
+ class ServerStatsResponse < ::ProtocolBuffers::Message
525
+ required :string, :instance_name, 1
526
+ required :int64, :connections, 2
527
+ required :int64, :uptime_seconds, 3
528
+ required :double, :cpu_usage_percent_trisul, 4
529
+ required :double, :cpu_usage_percent_total, 5
530
+ required :double, :mem_usage_trisul, 6
531
+ required :double, :mem_usage_total, 7
532
+ required :double, :mem_total, 8
533
+ required :int64, :size_total, 9
534
+ required :double, :drop_percent_cap, 11
535
+ required :double, :drop_percent_trisul, 12
536
+ required ::TRP::TimeInterval, :time_interval, 13
537
+
538
+ gen_methods! # new fields ignored after this point
539
+ end
540
+
541
+ end