1use strict;
2use warnings;
3use GPS::Babel;
4use File::Spec;
5use Data::Dumper;
6use Test::More;
7
8my @tests;
9
10BEGIN {
11  my $ref_info = {
12    'formats' => {
13      'google' => {
14        'nmodes' => 8,
15        'parent' => 'google',
16        'desc'   => 'Google Maps XML',
17        'modes'  => '--r---',
18        'ext'    => 'xml'
19      },
20      'nmn4' => {
21        'nmodes'  => 3,
22        'parent'  => 'nmn4',
23        'options' => {
24          'index' => {
25            'min' => '1',
26            'desc' =>
27             'Index of route to write (if more the one in source)',
28            'max'     => '',
29            'default' => '',
30            'type'    => 'integer'
31          }
32        },
33        'desc'  => 'Navigon Mobile Navigator .rte files',
34        'modes' => '----rw',
35        'ext'   => 'rte'
36      },
37      'tpg' => {
38        'nmodes'  => 48,
39        'parent'  => 'tpg',
40        'options' => {
41          'datum' => {
42            'min'     => '',
43            'desc'    => 'Datum (default=NAD27)',
44            'max'     => '',
45            'default' => 'N. America 1927 mean',
46            'type'    => 'string'
47          }
48        },
49        'desc'  => 'National Geographic Topo .tpg (waypoints)',
50        'modes' => 'rw----',
51        'ext'   => 'tpg'
52      },
53      'mxf' => {
54        'nmodes'  => 48,
55        'parent'  => 'xcsv',
56        'options' => {
57          'snunique' => {
58            'min'     => '',
59            'desc'    => 'Make synth. shortnames unique',
60            'max'     => '',
61            'default' => '',
62            'type'    => 'boolean'
63          },
64          'snwhite' => {
65            'min'     => '',
66            'desc'    => 'Allow whitespace synth. shortnames',
67            'max'     => '',
68            'default' => '',
69            'type'    => 'boolean'
70          },
71          'urlbase' => {
72            'min'     => '',
73            'desc'    => 'Basename prepended to URL on output',
74            'max'     => '',
75            'default' => '',
76            'type'    => 'string'
77          },
78          'snupper' => {
79            'min'     => '',
80            'desc'    => 'UPPERCASE synth. shortnames',
81            'max'     => '',
82            'default' => '',
83            'type'    => 'boolean'
84          },
85          'datum' => {
86            'min'     => '',
87            'desc'    => 'GPS datum (def. WGS 84)',
88            'max'     => '',
89            'default' => '',
90            'type'    => 'string'
91          },
92          'snlen' => {
93            'min'     => '1',
94            'desc'    => 'Max synthesized shortname length',
95            'max'     => '',
96            'default' => '',
97            'type'    => 'integer'
98          },
99          'prefer_shortnames' => {
100            'min'     => '',
101            'desc'    => 'Use shortname instead of description',
102            'max'     => '',
103            'default' => '',
104            'type'    => 'boolean'
105          }
106        },
107        'desc'  => 'MapTech Exchange Format',
108        'modes' => 'rw----',
109        'ext'   => 'mxf'
110      },
111      'igc' => {
112        'nmodes'  => 15,
113        'parent'  => 'igc',
114        'options' => {
115          'timeadj' => {
116            'min' => '',
117            'desc' =>
118             '(integer sec or \'auto\') Barograph to GPS time diff',
119            'max'     => '',
120            'default' => '',
121            'type'    => 'string'
122          }
123        },
124        'desc'  => 'FAI/IGC Flight Recorder Data Format',
125        'modes' => '--rwrw'
126      },
127      'magellan' => {
128        'nmodes'  => 63,
129        'parent'  => 'magellan',
130        'options' => {
131          'nukewpt' => {
132            'min'     => '',
133            'desc'    => 'Delete all waypoints',
134            'max'     => '',
135            'default' => '',
136            'type'    => 'boolean'
137          },
138          'noack' => {
139            'min'     => '',
140            'desc'    => 'Suppress use of handshaking in name of speed',
141            'max'     => '',
142            'default' => '',
143            'type'    => 'boolean'
144          },
145          'baud' => {
146            'min'     => '',
147            'desc'    => 'Numeric value of bitrate (baud=4800)',
148            'max'     => '',
149            'default' => '',
150            'type'    => 'integer'
151          },
152          'deficon' => {
153            'min'     => '',
154            'desc'    => 'Default icon name',
155            'max'     => '',
156            'default' => '',
157            'type'    => 'string'
158          },
159          'maxcmts' => {
160            'min'  => '',
161            'desc' => 'Max number of comments to write (maxcmts=200)',
162            'max'  => '',
163            'default' => '',
164            'type'    => 'integer'
165          }
166        },
167        'desc'  => 'Magellan SD files (as for Meridian)',
168        'modes' => 'rwrwrw'
169      },
170      'lowranceusr' => {
171        'nmodes'  => 63,
172        'parent'  => 'lowranceusr',
173        'options' => {
174          'merge' => {
175            'min'     => '',
176            'desc'    => '(USR output) Merge into one segmented track',
177            'max'     => '',
178            'default' => '',
179            'type'    => 'boolean'
180          },
181          'ignoreicons' => {
182            'min'     => '',
183            'desc'    => 'Ignore event marker icons',
184            'max'     => '',
185            'default' => '',
186            'type'    => 'boolean'
187          },
188          'break' => {
189            'min'  => '',
190            'desc' => '(USR input) Break segments into separate tracks',
191            'max'  => '',
192            'default' => '',
193            'type'    => 'boolean'
194          }
195        },
196        'desc'  => 'Lowrance USR',
197        'modes' => 'rwrwrw',
198        'ext'   => 'usr'
199      },
200      'dmtlog' => {
201        'nmodes'  => 60,
202        'parent'  => 'dmtlog',
203        'options' => {
204          'index' => {
205            'min'     => '1',
206            'desc'    => 'Index of track (if more the one in source)',
207            'max'     => '',
208            'default' => '1',
209            'type'    => 'integer'
210          }
211        },
212        'desc'  => 'TrackLogs digital mapping (.trl)',
213        'modes' => 'rwrw--',
214        'ext'   => 'trl'
215      },
216      'garmin' => {
217        'options' => {
218          'snwhite' => {
219            'min'     => '',
220            'desc'    => 'Allow whitespace synth. shortnames',
221            'max'     => '',
222            'default' => '',
223            'type'    => 'boolean'
224          },
225          'power_off' => {
226            'min'     => '',
227            'desc'    => 'Command unit to power itself down',
228            'max'     => '',
229            'default' => '',
230            'type'    => 'boolean'
231          },
232          'category' => {
233            'min'     => '1',
234            'desc'    => 'Category number to use for written waypoints',
235            'max'     => '16',
236            'default' => '',
237            'type'    => 'integer'
238          },
239          'deficon' => {
240            'min'     => '',
241            'desc'    => 'Default icon name',
242            'max'     => '',
243            'default' => '',
244            'type'    => 'string'
245          },
246          'snlen' => {
247            'min'     => '1',
248            'desc'    => 'Length of generated shortnames',
249            'max'     => '',
250            'default' => '',
251            'type'    => 'integer'
252          },
253          'get_posn' => {
254            'min'     => '',
255            'desc'    => 'Return current position as a waypoint',
256            'max'     => '',
257            'default' => '',
258            'type'    => 'boolean'
259          }
260        }
261      },
262      'bcr' => {
263        'nmodes'  => 3,
264        'parent'  => 'bcr',
265        'options' => {
266          'index' => {
267            'min' => '1',
268            'desc' =>
269             'Index of route to write (if more the one in source)',
270            'max'     => '',
271            'default' => '',
272            'type'    => 'integer'
273          },
274          'radius' => {
275            'min' => '',
276            'desc' =>
277             'Radius of our big earth (default 6371000 meters)',
278            'max'     => '',
279            'default' => '6371000',
280            'type'    => 'float'
281          },
282          'name' => {
283            'min'     => '',
284            'desc'    => 'New name for the route',
285            'max'     => '',
286            'default' => '',
287            'type'    => 'string'
288          }
289        },
290        'desc'  => 'Motorrad Routenplaner (Map&Guide) .bcr files',
291        'modes' => '----rw',
292        'ext'   => 'bcr'
293      },
294      'msroute' => {
295        'nmodes' => 2,
296        'parent' => 'msroute',
297        'desc'   => 'Microsoft Streets and Trips (pin/route reader)',
298        'modes'  => '----r-',
299        'ext'    => 'est'
300      },
301      'csv' => {
302        'nmodes'  => 48,
303        'parent'  => 'xcsv',
304        'options' => {
305          'snunique' => {
306            'min'     => '',
307            'desc'    => 'Make synth. shortnames unique',
308            'max'     => '',
309            'default' => '',
310            'type'    => 'boolean'
311          },
312          'snwhite' => {
313            'min'     => '',
314            'desc'    => 'Allow whitespace synth. shortnames',
315            'max'     => '',
316            'default' => '',
317            'type'    => 'boolean'
318          },
319          'urlbase' => {
320            'min'     => '',
321            'desc'    => 'Basename prepended to URL on output',
322            'max'     => '',
323            'default' => '',
324            'type'    => 'string'
325          },
326          'snupper' => {
327            'min'     => '',
328            'desc'    => 'UPPERCASE synth. shortnames',
329            'max'     => '',
330            'default' => '',
331            'type'    => 'boolean'
332          },
333          'datum' => {
334            'min'     => '',
335            'desc'    => 'GPS datum (def. WGS 84)',
336            'max'     => '',
337            'default' => '',
338            'type'    => 'string'
339          },
340          'snlen' => {
341            'min'     => '1',
342            'desc'    => 'Max synthesized shortname length',
343            'max'     => '',
344            'default' => '',
345            'type'    => 'integer'
346          },
347          'prefer_shortnames' => {
348            'min'     => '',
349            'desc'    => 'Use shortname instead of description',
350            'max'     => '',
351            'default' => '',
352            'type'    => 'boolean'
353          }
354        },
355        'desc'  => 'Comma separated values',
356        'modes' => 'rw----'
357      },
358      'tomtom' => {
359        'nmodes' => 48,
360        'parent' => 'tomtom',
361        'desc'   => 'TomTom POI file',
362        'modes'  => 'rw----',
363        'ext'    => 'ov2'
364      },
365      'gcdb' => {
366        'nmodes' => 48,
367        'parent' => 'gcdb',
368        'desc'   => 'GeocachingDB for Palm/OS',
369        'modes'  => 'rw----',
370        'ext'    => 'pdb'
371      },
372      'gpssim' => {
373        'nmodes'  => 21,
374        'parent'  => 'gpssim',
375        'options' => {
376          'wayptspd' => {
377            'min'     => '',
378            'desc'    => 'Default speed for waypoints (knots/hr)',
379            'max'     => '',
380            'default' => '',
381            'type'    => 'float'
382          },
383          'split' => {
384            'min'     => '',
385            'desc'    => 'Split input into separate files',
386            'max'     => '',
387            'default' => '',
388            'type'    => 'boolean'
389          }
390        },
391        'desc'  => 'Franson GPSGate Simulation',
392        'modes' => '-w-w-w',
393        'ext'   => 'gpssim'
394      },
395      'yahoo' => {
396        'nmodes'  => 32,
397        'parent'  => 'yahoo',
398        'options' => {
399          'addrsep' => {
400            'min' => '',
401            'desc' =>
402             'String to separate concatenated address fields (default=", ")',
403            'max'     => '',
404            'default' => ', ',
405            'type'    => 'string'
406          }
407        },
408        'desc'  => 'Yahoo Geocode API data',
409        'modes' => 'r-----'
410      },
411      'wbt-bin' => {
412        'nmodes' => 8,
413        'parent' => 'wbt-bin',
414        'desc'   => 'Wintec WBT-100/200 Binary file format',
415        'modes'  => '--r---'
416      },
417      'stmsdf' => {
418        'nmodes'  => 15,
419        'parent'  => 'stmsdf',
420        'options' => {
421          'index' => {
422            'min'     => '1',
423            'desc'    => 'Index of route (if more the one in source)',
424            'max'     => '',
425            'default' => '1',
426            'type'    => 'integer'
427          }
428        },
429        'desc'  => 'Suunto Trek Manager (STM) .sdf files',
430        'modes' => '--rwrw',
431        'ext'   => 'sdf'
432      },
433      'easygps' => {
434        'nmodes' => 48,
435        'parent' => 'easygps',
436        'desc'   => 'EasyGPS binary format',
437        'modes'  => 'rw----',
438        'ext'    => 'loc'
439      },
440      'openoffice' => {
441        'nmodes'  => 48,
442        'parent'  => 'xcsv',
443        'options' => {
444          'snunique' => {
445            'min'     => '',
446            'desc'    => 'Make synth. shortnames unique',
447            'max'     => '',
448            'default' => '',
449            'type'    => 'boolean'
450          },
451          'snwhite' => {
452            'min'     => '',
453            'desc'    => 'Allow whitespace synth. shortnames',
454            'max'     => '',
455            'default' => '',
456            'type'    => 'boolean'
457          },
458          'urlbase' => {
459            'min'     => '',
460            'desc'    => 'Basename prepended to URL on output',
461            'max'     => '',
462            'default' => '',
463            'type'    => 'string'
464          },
465          'snupper' => {
466            'min'     => '',
467            'desc'    => 'UPPERCASE synth. shortnames',
468            'max'     => '',
469            'default' => '',
470            'type'    => 'boolean'
471          },
472          'datum' => {
473            'min'     => '',
474            'desc'    => 'GPS datum (def. WGS 84)',
475            'max'     => '',
476            'default' => '',
477            'type'    => 'string'
478          },
479          'snlen' => {
480            'min'     => '1',
481            'desc'    => 'Max synthesized shortname length',
482            'max'     => '',
483            'default' => '',
484            'type'    => 'integer'
485          },
486          'prefer_shortnames' => {
487            'min'     => '',
488            'desc'    => 'Use shortname instead of description',
489            'max'     => '',
490            'default' => '',
491            'type'    => 'boolean'
492          }
493        },
494        'desc' =>
495         'Tab delimited fields useful for OpenOffice, Ploticus etc.',
496        'modes' => 'rw----'
497      },
498      'ktf2' => {
499        'nmodes'  => 48,
500        'parent'  => 'xcsv',
501        'options' => {
502          'snunique' => {
503            'min'     => '',
504            'desc'    => 'Make synth. shortnames unique',
505            'max'     => '',
506            'default' => '',
507            'type'    => 'boolean'
508          },
509          'snwhite' => {
510            'min'     => '',
511            'desc'    => 'Allow whitespace synth. shortnames',
512            'max'     => '',
513            'default' => '',
514            'type'    => 'boolean'
515          },
516          'urlbase' => {
517            'min'     => '',
518            'desc'    => 'Basename prepended to URL on output',
519            'max'     => '',
520            'default' => '',
521            'type'    => 'string'
522          },
523          'snupper' => {
524            'min'     => '',
525            'desc'    => 'UPPERCASE synth. shortnames',
526            'max'     => '',
527            'default' => '',
528            'type'    => 'boolean'
529          },
530          'datum' => {
531            'min'     => '',
532            'desc'    => 'GPS datum (def. WGS 84)',
533            'max'     => '',
534            'default' => '',
535            'type'    => 'string'
536          },
537          'snlen' => {
538            'min'     => '1',
539            'desc'    => 'Max synthesized shortname length',
540            'max'     => '',
541            'default' => '',
542            'type'    => 'integer'
543          },
544          'prefer_shortnames' => {
545            'min'     => '',
546            'desc'    => 'Use shortname instead of description',
547            'max'     => '',
548            'default' => '',
549            'type'    => 'boolean'
550          }
551        },
552        'desc'  => 'Kartex 5 Track File',
553        'modes' => 'rw----',
554        'ext'   => 'ktf'
555      },
556      'geo' => {
557        'nmodes'  => 48,
558        'parent'  => 'geo',
559        'options' => {
560          'nuke_placer' => {
561            'min'     => '',
562            'desc'    => 'Omit Placer name',
563            'max'     => '',
564            'default' => '',
565            'type'    => 'boolean'
566          },
567          'deficon' => {
568            'min'     => '',
569            'desc'    => 'Default icon name',
570            'max'     => '',
571            'default' => '',
572            'type'    => 'string'
573          }
574        },
575        'desc'  => 'Geocaching.com .loc',
576        'modes' => 'rw----',
577        'ext'   => 'loc'
578      },
579      'pcx' => {
580        'nmodes'  => 63,
581        'parent'  => 'pcx',
582        'options' => {
583          'cartoexploreur' => {
584            'min'     => '',
585            'desc'    => 'Write tracks compatible with Carto Exploreur',
586            'max'     => '',
587            'default' => '',
588            'type'    => 'boolean'
589          },
590          'deficon' => {
591            'min'     => '',
592            'desc'    => 'Default icon name',
593            'max'     => '',
594            'default' => 'Waypoint',
595            'type'    => 'string'
596          }
597        },
598        'desc'  => 'Garmin PCX5',
599        'modes' => 'rwrwrw',
600        'ext'   => 'pcx'
601      },
602      'xmap' => {
603        'nmodes'  => 48,
604        'parent'  => 'xcsv',
605        'options' => {
606          'snunique' => {
607            'min'     => '',
608            'desc'    => 'Make synth. shortnames unique',
609            'max'     => '',
610            'default' => '',
611            'type'    => 'boolean'
612          },
613          'snwhite' => {
614            'min'     => '',
615            'desc'    => 'Allow whitespace synth. shortnames',
616            'max'     => '',
617            'default' => '',
618            'type'    => 'boolean'
619          },
620          'urlbase' => {
621            'min'     => '',
622            'desc'    => 'Basename prepended to URL on output',
623            'max'     => '',
624            'default' => '',
625            'type'    => 'string'
626          },
627          'snupper' => {
628            'min'     => '',
629            'desc'    => 'UPPERCASE synth. shortnames',
630            'max'     => '',
631            'default' => '',
632            'type'    => 'boolean'
633          },
634          'datum' => {
635            'min'     => '',
636            'desc'    => 'GPS datum (def. WGS 84)',
637            'max'     => '',
638            'default' => '',
639            'type'    => 'string'
640          },
641          'snlen' => {
642            'min'     => '1',
643            'desc'    => 'Max synthesized shortname length',
644            'max'     => '',
645            'default' => '',
646            'type'    => 'integer'
647          },
648          'prefer_shortnames' => {
649            'min'     => '',
650            'desc'    => 'Use shortname instead of description',
651            'max'     => '',
652            'default' => '',
653            'type'    => 'boolean'
654          }
655        },
656        'desc'  => 'DeLorme XMap HH Native .WPT',
657        'modes' => 'rw----',
658        'ext'   => 'wpt'
659      },
660      'holux' => {
661        'nmodes' => 48,
662        'parent' => 'holux',
663        'desc'   => 'Holux (gm-100) .wpo Format',
664        'modes'  => 'rw----',
665        'ext'    => 'wpo'
666      },
667      'gpspilot' => {
668        'nmodes'  => 48,
669        'parent'  => 'gpspilot',
670        'options' => {
671          'dbname' => {
672            'min'     => '',
673            'desc'    => 'Database name',
674            'max'     => '',
675            'default' => '',
676            'type'    => 'string'
677          }
678        },
679        'desc'  => 'GPSPilot Tracker for Palm/OS',
680        'modes' => 'rw----',
681        'ext'   => 'pdb'
682      },
683      'kml' => {
684        'nmodes'  => 63,
685        'parent'  => 'kml',
686        'options' => {
687          'max_position_points' => {
688            'min' => '',
689            'desc' =>
690             'Retain at most this number of position points  (0 = unlimited)',
691            'max'     => '',
692            'default' => '',
693            'type'    => 'integer'
694          },
695          'line_color' => {
696            'min'     => '',
697            'desc'    => 'Line color, specified in hex AABBGGRR',
698            'max'     => '',
699            'default' => '64eeee17',
700            'type'    => 'string'
701          },
702          'trackdata' => {
703            'min' => '',
704            'desc' =>
705             'Include extended data for trackpoints (default = 1)',
706            'max'     => '',
707            'default' => '1',
708            'type'    => 'boolean'
709          },
710          'line_width' => {
711            'min'     => '',
712            'desc'    => 'Width of lines, in pixels',
713            'max'     => '',
714            'default' => '6',
715            'type'    => 'integer'
716          },
717          'points' => {
718            'min'     => '',
719            'desc'    => 'Export placemarks for tracks and routes',
720            'max'     => '',
721            'default' => '1',
722            'type'    => 'boolean'
723          },
724          'lines' => {
725            'min'     => '',
726            'desc'    => 'Export linestrings for tracks and routes',
727            'max'     => '',
728            'default' => '1',
729            'type'    => 'boolean'
730          },
731          'deficon' => {
732            'min'     => '',
733            'desc'    => 'Default icon name',
734            'max'     => '',
735            'default' => '',
736            'type'    => 'string'
737          },
738          'floating' => {
739            'min' => '',
740            'desc' =>
741             'Altitudes are absolute and not clamped to ground',
742            'max'     => '',
743            'default' => '',
744            'type'    => 'boolean'
745          },
746          'labels' => {
747            'min' => '',
748            'desc' =>
749             'Display labels on track and routepoints  (default = 1)',
750            'max'     => '',
751            'default' => '1',
752            'type'    => 'boolean'
753          },
754          'extrude' => {
755            'min'  => '',
756            'desc' => 'Draw extrusion line from trackpoint to ground',
757            'max'  => '',
758            'default' => '',
759            'type'    => 'boolean'
760          },
761          'units' => {
762            'min' => '',
763            'desc' =>
764             'Units used when writing comments (\'s\'tatute or \'m\'etric)',
765            'max'     => '',
766            'default' => 's',
767            'type'    => 'string'
768          }
769        },
770        'desc'  => 'Google Earth (Keyhole) Markup Language',
771        'modes' => 'rwrwrw',
772        'ext'   => 'kml'
773      },
774      'wfff' => {
775        'nmodes'  => 32,
776        'parent'  => 'wfff',
777        'options' => {
778          'snmac' => {
779            'min'     => '',
780            'desc'    => 'Shortname is MAC address',
781            'max'     => '',
782            'default' => '',
783            'type'    => 'boolean'
784          },
785          'ahcicon' => {
786            'min'     => '',
787            'desc'    => 'Ad-hoc closed icon name',
788            'max'     => '',
789            'default' => 'Red Diamond',
790            'type'    => 'string'
791          },
792          'ahoicon' => {
793            'min'     => '',
794            'desc'    => 'Ad-hoc open icon name',
795            'max'     => '',
796            'default' => 'Green Diamond',
797            'type'    => 'string'
798          },
799          'aicicon' => {
800            'min'     => '',
801            'desc'    => 'Infrastructure closed icon name',
802            'max'     => '',
803            'default' => 'Red Square',
804            'type'    => 'string'
805          },
806          'aioicon' => {
807            'min'     => '',
808            'desc'    => 'Infrastructure open icon name',
809            'max'     => '',
810            'default' => 'Green Square',
811            'type'    => 'string'
812          }
813        },
814        'desc'  => 'WiFiFoFum 2.0 for PocketPC XML',
815        'modes' => 'r-----',
816        'ext'   => 'xml'
817      },
818      'mapconverter' => {
819        'nmodes'  => 48,
820        'parent'  => 'xcsv',
821        'options' => {
822          'snunique' => {
823            'min'     => '',
824            'desc'    => 'Make synth. shortnames unique',
825            'max'     => '',
826            'default' => '',
827            'type'    => 'boolean'
828          },
829          'snwhite' => {
830            'min'     => '',
831            'desc'    => 'Allow whitespace synth. shortnames',
832            'max'     => '',
833            'default' => '',
834            'type'    => 'boolean'
835          },
836          'urlbase' => {
837            'min'     => '',
838            'desc'    => 'Basename prepended to URL on output',
839            'max'     => '',
840            'default' => '',
841            'type'    => 'string'
842          },
843          'snupper' => {
844            'min'     => '',
845            'desc'    => 'UPPERCASE synth. shortnames',
846            'max'     => '',
847            'default' => '',
848            'type'    => 'boolean'
849          },
850          'datum' => {
851            'min'     => '',
852            'desc'    => 'GPS datum (def. WGS 84)',
853            'max'     => '',
854            'default' => '',
855            'type'    => 'string'
856          },
857          'snlen' => {
858            'min'     => '1',
859            'desc'    => 'Max synthesized shortname length',
860            'max'     => '',
861            'default' => '',
862            'type'    => 'integer'
863          },
864          'prefer_shortnames' => {
865            'min'     => '',
866            'desc'    => 'Use shortname instead of description',
867            'max'     => '',
868            'default' => '',
869            'type'    => 'boolean'
870          }
871        },
872        'desc'  => 'Mapopolis.com Mapconverter CSV',
873        'modes' => 'rw----',
874        'ext'   => 'txt'
875      },
876      'cetus' => {
877        'nmodes'  => 56,
878        'parent'  => 'cetus',
879        'options' => {
880          'appendicon' => {
881            'min'     => '',
882            'desc'    => 'Append icon_descr to description',
883            'max'     => '',
884            'default' => '',
885            'type'    => 'boolean'
886          },
887          'dbname' => {
888            'min'     => '',
889            'desc'    => 'Database name',
890            'max'     => '',
891            'default' => '',
892            'type'    => 'string'
893          }
894        },
895        'desc'  => 'Cetus for Palm/OS',
896        'modes' => 'rwr---',
897        'ext'   => 'pdb'
898      },
899      'alantrl' => {
900        'nmodes' => 12,
901        'parent' => 'alantrl',
902        'desc'   => 'Alan Map500 tracklogs (.trl)',
903        'modes'  => '--rw--',
904        'ext'    => 'trl'
905      },
906      'glogbook' => {
907        'nmodes' => 12,
908        'parent' => 'glogbook',
909        'desc'   => 'Garmin Logbook XML',
910        'modes'  => '--rw--',
911        'ext'    => 'xml'
912      },
913      'fugawi' => {
914        'nmodes'  => 48,
915        'parent'  => 'xcsv',
916        'options' => {
917          'snunique' => {
918            'min'     => '',
919            'desc'    => 'Make synth. shortnames unique',
920            'max'     => '',
921            'default' => '',
922            'type'    => 'boolean'
923          },
924          'snwhite' => {
925            'min'     => '',
926            'desc'    => 'Allow whitespace synth. shortnames',
927            'max'     => '',
928            'default' => '',
929            'type'    => 'boolean'
930          },
931          'urlbase' => {
932            'min'     => '',
933            'desc'    => 'Basename prepended to URL on output',
934            'max'     => '',
935            'default' => '',
936            'type'    => 'string'
937          },
938          'snupper' => {
939            'min'     => '',
940            'desc'    => 'UPPERCASE synth. shortnames',
941            'max'     => '',
942            'default' => '',
943            'type'    => 'boolean'
944          },
945          'datum' => {
946            'min'     => '',
947            'desc'    => 'GPS datum (def. WGS 84)',
948            'max'     => '',
949            'default' => '',
950            'type'    => 'string'
951          },
952          'snlen' => {
953            'min'     => '1',
954            'desc'    => 'Max synthesized shortname length',
955            'max'     => '',
956            'default' => '',
957            'type'    => 'integer'
958          },
959          'prefer_shortnames' => {
960            'min'     => '',
961            'desc'    => 'Use shortname instead of description',
962            'max'     => '',
963            'default' => '',
964            'type'    => 'boolean'
965          }
966        },
967        'desc'  => 'Fugawi',
968        'modes' => 'rw----',
969        'ext'   => 'txt'
970      },
971      'xmapwpt' => {
972        'nmodes'  => 48,
973        'parent'  => 'xcsv',
974        'options' => {
975          'snunique' => {
976            'min'     => '',
977            'desc'    => 'Make synth. shortnames unique',
978            'max'     => '',
979            'default' => '',
980            'type'    => 'boolean'
981          },
982          'snwhite' => {
983            'min'     => '',
984            'desc'    => 'Allow whitespace synth. shortnames',
985            'max'     => '',
986            'default' => '',
987            'type'    => 'boolean'
988          },
989          'urlbase' => {
990            'min'     => '',
991            'desc'    => 'Basename prepended to URL on output',
992            'max'     => '',
993            'default' => '',
994            'type'    => 'string'
995          },
996          'snupper' => {
997            'min'     => '',
998            'desc'    => 'UPPERCASE synth. shortnames',
999            'max'     => '',
1000            'default' => '',
1001            'type'    => 'boolean'
1002          },
1003          'datum' => {
1004            'min'     => '',
1005            'desc'    => 'GPS datum (def. WGS 84)',
1006            'max'     => '',
1007            'default' => '',
1008            'type'    => 'string'
1009          },
1010          'snlen' => {
1011            'min'     => '1',
1012            'desc'    => 'Max synthesized shortname length',
1013            'max'     => '',
1014            'default' => '',
1015            'type'    => 'integer'
1016          },
1017          'prefer_shortnames' => {
1018            'min'     => '',
1019            'desc'    => 'Use shortname instead of description',
1020            'max'     => '',
1021            'default' => '',
1022            'type'    => 'boolean'
1023          }
1024        },
1025        'desc'  => 'DeLorme XMat HH Street Atlas USA .WPT (PPC)',
1026        'modes' => 'rw----'
1027      },
1028      'xmap2006' => {
1029        'nmodes'  => 48,
1030        'parent'  => 'xcsv',
1031        'options' => {
1032          'snunique' => {
1033            'min'     => '',
1034            'desc'    => 'Make synth. shortnames unique',
1035            'max'     => '',
1036            'default' => '',
1037            'type'    => 'boolean'
1038          },
1039          'snwhite' => {
1040            'min'     => '',
1041            'desc'    => 'Allow whitespace synth. shortnames',
1042            'max'     => '',
1043            'default' => '',
1044            'type'    => 'boolean'
1045          },
1046          'urlbase' => {
1047            'min'     => '',
1048            'desc'    => 'Basename prepended to URL on output',
1049            'max'     => '',
1050            'default' => '',
1051            'type'    => 'string'
1052          },
1053          'snupper' => {
1054            'min'     => '',
1055            'desc'    => 'UPPERCASE synth. shortnames',
1056            'max'     => '',
1057            'default' => '',
1058            'type'    => 'boolean'
1059          },
1060          'datum' => {
1061            'min'     => '',
1062            'desc'    => 'GPS datum (def. WGS 84)',
1063            'max'     => '',
1064            'default' => '',
1065            'type'    => 'string'
1066          },
1067          'snlen' => {
1068            'min'     => '1',
1069            'desc'    => 'Max synthesized shortname length',
1070            'max'     => '',
1071            'default' => '',
1072            'type'    => 'integer'
1073          },
1074          'prefer_shortnames' => {
1075            'min'     => '',
1076            'desc'    => 'Use shortname instead of description',
1077            'max'     => '',
1078            'default' => '',
1079            'type'    => 'boolean'
1080          }
1081        },
1082        'desc'  => 'DeLorme XMap/SAHH 2006 Native .TXT',
1083        'modes' => 'rw----',
1084        'ext'   => 'txt'
1085      },
1086      'saroute' => {
1087        'nmodes'  => 8,
1088        'parent'  => 'saroute',
1089        'options' => {
1090          'controls' => {
1091            'min'     => '',
1092            'desc'    => 'Read control points as waypoint/route/none',
1093            'max'     => '',
1094            'default' => 'none',
1095            'type'    => 'string'
1096          },
1097          'times' => {
1098            'min'     => '',
1099            'desc'    => 'Synthesize track times',
1100            'max'     => '',
1101            'default' => '',
1102            'type'    => 'boolean'
1103          },
1104          'turns_only' => {
1105            'min'     => '',
1106            'desc'    => 'Only read turns; skip all other points',
1107            'max'     => '',
1108            'default' => '',
1109            'type'    => 'boolean'
1110          },
1111          'turns_important' => {
1112            'min'     => '',
1113            'desc'    => 'Keep turns if simplify filter is used',
1114            'max'     => '',
1115            'default' => '',
1116            'type'    => 'boolean'
1117          },
1118          'split' => {
1119            'min'     => '',
1120            'desc'    => 'Split into multiple routes at turns',
1121            'max'     => '',
1122            'default' => '',
1123            'type'    => 'boolean'
1124          }
1125        },
1126        'desc'  => 'DeLorme Street Atlas Route',
1127        'modes' => '--r---',
1128        'ext'   => 'anr'
1129      },
1130      'gpx' => {
1131        'nmodes'  => 63,
1132        'parent'  => 'gpx',
1133        'options' => {
1134          'logpoint' => {
1135            'min'     => '',
1136            'desc'    => 'Create waypoints from geocache log entries',
1137            'max'     => '',
1138            'default' => '',
1139            'type'    => 'boolean'
1140          },
1141          'urlbase' => {
1142            'min'     => '',
1143            'desc'    => 'Base URL for link tag in output',
1144            'max'     => '',
1145            'default' => '',
1146            'type'    => 'string'
1147          },
1148          'gpxver' => {
1149            'min'     => '',
1150            'desc'    => 'Target GPX version for output',
1151            'max'     => '',
1152            'default' => '1.0',
1153            'type'    => 'string'
1154          },
1155          'suppresswhite' => {
1156            'min'     => '',
1157            'desc'    => 'No whitespace in generated shortnames',
1158            'max'     => '',
1159            'default' => '',
1160            'type'    => 'boolean'
1161          },
1162          'snlen' => {
1163            'min'     => '1',
1164            'desc'    => 'Length of generated shortnames',
1165            'max'     => '',
1166            'default' => '32',
1167            'type'    => 'integer'
1168          }
1169        },
1170        'desc'  => 'GPX XML',
1171        'modes' => 'rwrwrw',
1172        'ext'   => 'gpx'
1173      },
1174      'an1' => {
1175        'nmodes'  => 55,
1176        'parent'  => 'an1',
1177        'options' => {
1178          'nogc' => {
1179            'min'     => '',
1180            'desc'    => 'Do not add geocache data to description',
1181            'max'     => '',
1182            'default' => '',
1183            'type'    => 'boolean'
1184          },
1185          'radius' => {
1186            'min'     => '',
1187            'desc'    => 'Radius for circles',
1188            'max'     => '',
1189            'default' => '',
1190            'type'    => 'string'
1191          },
1192          'zoom' => {
1193            'min'     => '',
1194            'desc'    => 'Zoom level to reduce points',
1195            'max'     => '',
1196            'default' => '',
1197            'type'    => 'integer'
1198          },
1199          'deficon' => {
1200            'min'     => '',
1201            'desc'    => 'Symbol to use for point data',
1202            'max'     => '',
1203            'default' => 'Red Flag',
1204            'type'    => 'string'
1205          },
1206          'wpt_type' => {
1207            'min'     => '',
1208            'desc'    => 'Waypoint type',
1209            'max'     => '',
1210            'default' => '',
1211            'type'    => 'string'
1212          },
1213          'color' => {
1214            'min'     => '',
1215            'desc'    => 'Color for lines or mapnotes',
1216            'max'     => '',
1217            'default' => 'red',
1218            'type'    => 'string'
1219          },
1220          'type' => {
1221            'min'     => '',
1222            'desc'    => 'Type of .an1 file',
1223            'max'     => '',
1224            'default' => '',
1225            'type'    => 'string'
1226          },
1227          'road' => {
1228            'min'     => '',
1229            'desc'    => 'Road type changes',
1230            'max'     => '',
1231            'default' => '',
1232            'type'    => 'string'
1233          }
1234        },
1235        'desc'  => 'DeLorme .an1 (drawing) file',
1236        'modes' => 'rw-wrw',
1237        'ext'   => 'an1'
1238      },
1239      'hsandv' => {
1240        'nmodes' => 48,
1241        'parent' => 'hsandv',
1242        'desc'   => 'HSA Endeavour Navigator export File',
1243        'modes'  => 'rw----'
1244      },
1245      'netstumbler' => {
1246        'nmodes'  => 32,
1247        'parent'  => 'netstumbler',
1248        'options' => {
1249          'snmac' => {
1250            'min'     => '',
1251            'desc'    => 'Shortname is MAC address',
1252            'max'     => '',
1253            'default' => '',
1254            'type'    => 'boolean'
1255          },
1256          'nseicon' => {
1257            'min'     => '',
1258            'desc'    => 'Non-stealth encrypted icon name',
1259            'max'     => '',
1260            'default' => 'Red Square',
1261            'type'    => 'string'
1262          },
1263          'nsneicon' => {
1264            'min'     => '',
1265            'desc'    => 'Non-stealth non-encrypted icon name',
1266            'max'     => '',
1267            'default' => 'Green Square',
1268            'type'    => 'string'
1269          },
1270          'sneicon' => {
1271            'min'     => '',
1272            'desc'    => 'Stealth non-encrypted icon name',
1273            'max'     => '',
1274            'default' => 'Green Diamond',
1275            'type'    => 'string'
1276          },
1277          'seicon' => {
1278            'min'     => '',
1279            'desc'    => 'Stealth encrypted icon name',
1280            'max'     => '',
1281            'default' => 'Red Diamond',
1282            'type'    => 'string'
1283          }
1284        },
1285        'desc'  => 'NetStumbler Summary File (text)',
1286        'modes' => 'r-----'
1287      },
1288      'custom' => {
1289        'options' => {
1290          'snunique' => {
1291            'min'     => '',
1292            'desc'    => 'Make synth. shortnames unique',
1293            'max'     => '',
1294            'default' => '',
1295            'type'    => 'boolean'
1296          },
1297          'snwhite' => {
1298            'min'     => '',
1299            'desc'    => 'Allow whitespace synth. shortnames',
1300            'max'     => '',
1301            'default' => '',
1302            'type'    => 'boolean'
1303          },
1304          'urlbase' => {
1305            'min'     => '',
1306            'desc'    => 'Basename prepended to URL on output',
1307            'max'     => '',
1308            'default' => '',
1309            'type'    => 'string'
1310          },
1311          'snupper' => {
1312            'min'     => '',
1313            'desc'    => 'UPPERCASE synth. shortnames',
1314            'max'     => '',
1315            'default' => '',
1316            'type'    => 'boolean'
1317          },
1318          'datum' => {
1319            'min'     => '',
1320            'desc'    => 'GPS datum (def. WGS 84)',
1321            'max'     => '',
1322            'default' => '',
1323            'type'    => 'string'
1324          },
1325          'snlen' => {
1326            'min'     => '1',
1327            'desc'    => 'Max synthesized shortname length',
1328            'max'     => '',
1329            'default' => '',
1330            'type'    => 'integer'
1331          },
1332          'prefer_shortnames' => {
1333            'min'     => '',
1334            'desc'    => 'Use shortname instead of description',
1335            'max'     => '',
1336            'default' => '',
1337            'type'    => 'boolean'
1338          }
1339        }
1340      },
1341      'gpsdrive' => {
1342        'nmodes'  => 48,
1343        'parent'  => 'xcsv',
1344        'options' => {
1345          'snunique' => {
1346            'min'     => '',
1347            'desc'    => 'Make synth. shortnames unique',
1348            'max'     => '',
1349            'default' => '',
1350            'type'    => 'boolean'
1351          },
1352          'snwhite' => {
1353            'min'     => '',
1354            'desc'    => 'Allow whitespace synth. shortnames',
1355            'max'     => '',
1356            'default' => '',
1357            'type'    => 'boolean'
1358          },
1359          'urlbase' => {
1360            'min'     => '',
1361            'desc'    => 'Basename prepended to URL on output',
1362            'max'     => '',
1363            'default' => '',
1364            'type'    => 'string'
1365          },
1366          'snupper' => {
1367            'min'     => '',
1368            'desc'    => 'UPPERCASE synth. shortnames',
1369            'max'     => '',
1370            'default' => '',
1371            'type'    => 'boolean'
1372          },
1373          'datum' => {
1374            'min'     => '',
1375            'desc'    => 'GPS datum (def. WGS 84)',
1376            'max'     => '',
1377            'default' => '',
1378            'type'    => 'string'
1379          },
1380          'snlen' => {
1381            'min'     => '1',
1382            'desc'    => 'Max synthesized shortname length',
1383            'max'     => '',
1384            'default' => '',
1385            'type'    => 'integer'
1386          },
1387          'prefer_shortnames' => {
1388            'min'     => '',
1389            'desc'    => 'Use shortname instead of description',
1390            'max'     => '',
1391            'default' => '',
1392            'type'    => 'boolean'
1393          }
1394        },
1395        'desc'  => 'GpsDrive Format',
1396        'modes' => 'rw----'
1397      },
1398      'gtrnctr' => {
1399        'nmodes' => 4,
1400        'parent' => 'gtrnctr',
1401        'desc'   => 'Garmin Training Centerxml',
1402        'modes'  => '---w--'
1403      },
1404      'geonet' => {
1405        'nmodes'  => 48,
1406        'parent'  => 'xcsv',
1407        'options' => {
1408          'snunique' => {
1409            'min'     => '',
1410            'desc'    => 'Make synth. shortnames unique',
1411            'max'     => '',
1412            'default' => '',
1413            'type'    => 'boolean'
1414          },
1415          'snwhite' => {
1416            'min'     => '',
1417            'desc'    => 'Allow whitespace synth. shortnames',
1418            'max'     => '',
1419            'default' => '',
1420            'type'    => 'boolean'
1421          },
1422          'urlbase' => {
1423            'min'     => '',
1424            'desc'    => 'Basename prepended to URL on output',
1425            'max'     => '',
1426            'default' => '',
1427            'type'    => 'string'
1428          },
1429          'snupper' => {
1430            'min'     => '',
1431            'desc'    => 'UPPERCASE synth. shortnames',
1432            'max'     => '',
1433            'default' => '',
1434            'type'    => 'boolean'
1435          },
1436          'datum' => {
1437            'min'     => '',
1438            'desc'    => 'GPS datum (def. WGS 84)',
1439            'max'     => '',
1440            'default' => '',
1441            'type'    => 'string'
1442          },
1443          'snlen' => {
1444            'min'     => '1',
1445            'desc'    => 'Max synthesized shortname length',
1446            'max'     => '',
1447            'default' => '',
1448            'type'    => 'integer'
1449          },
1450          'prefer_shortnames' => {
1451            'min'     => '',
1452            'desc'    => 'Use shortname instead of description',
1453            'max'     => '',
1454            'default' => '',
1455            'type'    => 'boolean'
1456          }
1457        },
1458        'desc'  => 'GEOnet Names Server (GNS)',
1459        'modes' => 'rw----',
1460        'ext'   => 'txt'
1461      },
1462      'html' => {
1463        'nmodes'  => 16,
1464        'parent'  => 'html',
1465        'options' => {
1466          'altunits' => {
1467            'min'     => '',
1468            'desc'    => 'Units for altitude (f)eet or (m)etres',
1469            'max'     => '',
1470            'default' => 'm',
1471            'type'    => 'string'
1472          },
1473          'encrypt' => {
1474            'min'     => '',
1475            'desc'    => 'Encrypt hints using ROT13',
1476            'max'     => '',
1477            'default' => '',
1478            'type'    => 'boolean'
1479          },
1480          'degformat' => {
1481            'min' => '',
1482            'desc' =>
1483             'Degrees output as \'ddd\', \'dmm\'(default) or \'dms\'',
1484            'max'     => '',
1485            'default' => 'dmm',
1486            'type'    => 'string'
1487          },
1488          'stylesheet' => {
1489            'min'     => '',
1490            'desc'    => 'Path to HTML style sheet',
1491            'max'     => '',
1492            'default' => '',
1493            'type'    => 'string'
1494          },
1495          'logs' => {
1496            'min'     => '',
1497            'desc'    => 'Include groundspeak logs if present',
1498            'max'     => '',
1499            'default' => '',
1500            'type'    => 'boolean'
1501          }
1502        },
1503        'desc'  => 'HTML Output',
1504        'modes' => '-w----',
1505        'ext'   => 'html'
1506      },
1507      'coto' => {
1508        'nmodes'  => 56,
1509        'parent'  => 'coto',
1510        'options' => {
1511          'zerocat' => {
1512            'min'     => '',
1513            'desc'    => 'Name of the \'unassigned\' category',
1514            'max'     => '',
1515            'default' => '',
1516            'type'    => 'string'
1517          }
1518        },
1519        'desc'  => 'cotoGPS for Palm/OS',
1520        'modes' => 'rwr---',
1521        'ext'   => 'pdb'
1522      },
1523      'text' => {
1524        'nmodes'  => 16,
1525        'parent'  => 'text',
1526        'options' => {
1527          'altunits' => {
1528            'min'     => '',
1529            'desc'    => 'Units for altitude (f)eet or (m)etres',
1530            'max'     => '',
1531            'default' => 'm',
1532            'type'    => 'string'
1533          },
1534          'encrypt' => {
1535            'min'     => '',
1536            'desc'    => 'Encrypt hints using ROT13',
1537            'max'     => '',
1538            'default' => '',
1539            'type'    => 'boolean'
1540          },
1541          'degformat' => {
1542            'min' => '',
1543            'desc' =>
1544             'Degrees output as \'ddd\', \'dmm\'(default) or \'dms\'',
1545            'max'     => '',
1546            'default' => 'dmm',
1547            'type'    => 'string'
1548          },
1549          'nosep' => {
1550            'min'     => '',
1551            'desc'    => 'Suppress separator lines between waypoints',
1552            'max'     => '',
1553            'default' => '',
1554            'type'    => 'boolean'
1555          },
1556          'logs' => {
1557            'min'     => '',
1558            'desc'    => 'Include groundspeak logs if present',
1559            'max'     => '',
1560            'default' => '',
1561            'type'    => 'boolean'
1562          }
1563        },
1564        'desc'  => 'Textual Output',
1565        'modes' => '-w----',
1566        'ext'   => 'txt'
1567      },
1568      'geoniche' => {
1569        'nmodes'  => 48,
1570        'parent'  => 'geoniche',
1571        'options' => {
1572          'category' => {
1573            'min'     => '',
1574            'desc'    => 'Category name (Cache)',
1575            'max'     => '',
1576            'default' => '',
1577            'type'    => 'string'
1578          },
1579          'dbname' => {
1580            'min'     => '',
1581            'desc'    => 'Database name (filename)',
1582            'max'     => '',
1583            'default' => '',
1584            'type'    => 'string'
1585          }
1586        },
1587        'desc'  => 'GeoNiche .pdb',
1588        'modes' => 'rw----',
1589        'ext'   => 'pdb'
1590      },
1591      'garmin_poi' => {
1592        'nmodes'  => 48,
1593        'parent'  => 'xcsv',
1594        'options' => {
1595          'snunique' => {
1596            'min'     => '',
1597            'desc'    => 'Make synth. shortnames unique',
1598            'max'     => '',
1599            'default' => '',
1600            'type'    => 'boolean'
1601          },
1602          'snwhite' => {
1603            'min'     => '',
1604            'desc'    => 'Allow whitespace synth. shortnames',
1605            'max'     => '',
1606            'default' => '',
1607            'type'    => 'boolean'
1608          },
1609          'urlbase' => {
1610            'min'     => '',
1611            'desc'    => 'Basename prepended to URL on output',
1612            'max'     => '',
1613            'default' => '',
1614            'type'    => 'string'
1615          },
1616          'snupper' => {
1617            'min'     => '',
1618            'desc'    => 'UPPERCASE synth. shortnames',
1619            'max'     => '',
1620            'default' => '',
1621            'type'    => 'boolean'
1622          },
1623          'datum' => {
1624            'min'     => '',
1625            'desc'    => 'GPS datum (def. WGS 84)',
1626            'max'     => '',
1627            'default' => '',
1628            'type'    => 'string'
1629          },
1630          'snlen' => {
1631            'min'     => '1',
1632            'desc'    => 'Max synthesized shortname length',
1633            'max'     => '',
1634            'default' => '',
1635            'type'    => 'integer'
1636          },
1637          'prefer_shortnames' => {
1638            'min'     => '',
1639            'desc'    => 'Use shortname instead of description',
1640            'max'     => '',
1641            'default' => '',
1642            'type'    => 'boolean'
1643          }
1644        },
1645        'desc'  => 'Garmin POI database',
1646        'modes' => 'rw----'
1647      },
1648      'tpo3' => {
1649        'nmodes' => 42,
1650        'parent' => 'tpo3',
1651        'desc'   => 'National Geographic Topo 3.x/4.x .tpo',
1652        'modes'  => 'r-r-r-',
1653        'ext'    => 'tpo'
1654      },
1655      'raymarine' => {
1656        'nmodes'  => 51,
1657        'parent'  => 'raymarine',
1658        'options' => {
1659          'location' => {
1660            'min'     => '',
1661            'desc'    => 'Default location',
1662            'max'     => '',
1663            'default' => 'New location',
1664            'type'    => 'string'
1665          }
1666        },
1667        'desc'  => 'Raymarine Waypoint File (.rwf)',
1668        'modes' => 'rw--rw',
1669        'ext'   => 'rwf'
1670      },
1671      'garmin_txt' => {
1672        'nmodes'  => 63,
1673        'parent'  => 'garmin_txt',
1674        'options' => {
1675          'grid' => {
1676            'min'     => '',
1677            'desc'    => 'Write position using this grid.',
1678            'max'     => '',
1679            'default' => '',
1680            'type'    => 'string'
1681          },
1682          'temp' => {
1683            'min'     => '',
1684            'desc'    => 'Temperature unit [c=Celsius, f=Fahrenheit]',
1685            'max'     => '',
1686            'default' => 'c',
1687            'type'    => 'string'
1688          },
1689          'prec' => {
1690            'min'     => '',
1691            'desc'    => 'Precision of coordinates',
1692            'max'     => '',
1693            'default' => '3',
1694            'type'    => 'integer'
1695          },
1696          'time' => {
1697            'min'     => '',
1698            'desc'    => 'Read/Write time format (i.e. HH:mm:ss xx)',
1699            'max'     => '',
1700            'default' => '',
1701            'type'    => 'string'
1702          },
1703          'date' => {
1704            'min'     => '',
1705            'desc'    => 'Read/Write date format (i.e. yyyy/mm/dd)',
1706            'max'     => '',
1707            'default' => '',
1708            'type'    => 'string'
1709          },
1710          'utc' => {
1711            'min'     => '-23',
1712            'desc'    => 'Write timestamps with offset x to UTC time',
1713            'max'     => '+23',
1714            'default' => '',
1715            'type'    => 'integer'
1716          },
1717          'dist' => {
1718            'min'     => '',
1719            'desc'    => 'Distance unit [m=metric, s=statute]',
1720            'max'     => '',
1721            'default' => 'm',
1722            'type'    => 'string'
1723          },
1724          'datum' => {
1725            'min'     => '',
1726            'desc'    => 'GPS datum (def. WGS 84)',
1727            'max'     => '',
1728            'default' => 'WGS 84',
1729            'type'    => 'string'
1730          }
1731        },
1732        'desc'  => 'Garmin MapSource - txt (tab delimited)',
1733        'modes' => 'rwrwrw',
1734        'ext'   => 'txt'
1735      },
1736      'magellanx' => {
1737        'nmodes'  => 63,
1738        'parent'  => 'magellanx',
1739        'options' => {
1740          'deficon' => {
1741            'min'     => '',
1742            'desc'    => 'Default icon name',
1743            'max'     => '',
1744            'default' => '',
1745            'type'    => 'string'
1746          },
1747          'maxcmts' => {
1748            'min'  => '',
1749            'desc' => 'Max number of comments to write (maxcmts=200)',
1750            'max'  => '',
1751            'default' => '',
1752            'type'    => 'integer'
1753          }
1754        },
1755        'desc'  => 'Magellan SD files (as for eXplorist)',
1756        'modes' => 'rwrwrw',
1757        'ext'   => 'upt'
1758      },
1759      'magnav' => {
1760        'nmodes' => 48,
1761        'parent' => 'magnav',
1762        'desc'   => 'Magellan NAV Companion for Palm/OS',
1763        'modes'  => 'rw----',
1764        'ext'    => 'pdb'
1765      },
1766      'maggeo' => {
1767        'nmodes' => 16,
1768        'parent' => 'maggeo',
1769        'desc'   => 'Magellan Explorist Geocaching',
1770        'modes'  => '-w----',
1771        'ext'    => 'gs'
1772      },
1773      'cambridge' => {
1774        'nmodes'  => 48,
1775        'parent'  => 'xcsv',
1776        'options' => {
1777          'snunique' => {
1778            'min'     => '',
1779            'desc'    => 'Make synth. shortnames unique',
1780            'max'     => '',
1781            'default' => '',
1782            'type'    => 'boolean'
1783          },
1784          'snwhite' => {
1785            'min'     => '',
1786            'desc'    => 'Allow whitespace synth. shortnames',
1787            'max'     => '',
1788            'default' => '',
1789            'type'    => 'boolean'
1790          },
1791          'urlbase' => {
1792            'min'     => '',
1793            'desc'    => 'Basename prepended to URL on output',
1794            'max'     => '',
1795            'default' => '',
1796            'type'    => 'string'
1797          },
1798          'snupper' => {
1799            'min'     => '',
1800            'desc'    => 'UPPERCASE synth. shortnames',
1801            'max'     => '',
1802            'default' => '',
1803            'type'    => 'boolean'
1804          },
1805          'datum' => {
1806            'min'     => '',
1807            'desc'    => 'GPS datum (def. WGS 84)',
1808            'max'     => '',
1809            'default' => '',
1810            'type'    => 'string'
1811          },
1812          'snlen' => {
1813            'min'     => '1',
1814            'desc'    => 'Max synthesized shortname length',
1815            'max'     => '',
1816            'default' => '',
1817            'type'    => 'integer'
1818          },
1819          'prefer_shortnames' => {
1820            'min'     => '',
1821            'desc'    => 'Use shortname instead of description',
1822            'max'     => '',
1823            'default' => '',
1824            'type'    => 'boolean'
1825          }
1826        },
1827        'desc'  => 'Cambridge/Winpilot glider software',
1828        'modes' => 'rw----',
1829        'ext'   => 'dat'
1830      },
1831      'pathaway' => {
1832        'nmodes'  => 63,
1833        'parent'  => 'pathaway',
1834        'options' => {
1835          'date' => {
1836            'min'     => '',
1837            'desc'    => 'Read/Write date format (i.e. DDMMYYYY)',
1838            'max'     => '',
1839            'default' => '',
1840            'type'    => 'string'
1841          },
1842          'snlen' => {
1843            'min'     => '1',
1844            'desc'    => 'Length of generated shortnames',
1845            'max'     => '',
1846            'default' => '10',
1847            'type'    => 'integer'
1848          },
1849          'deficon' => {
1850            'min'     => '',
1851            'desc'    => 'Default icon name',
1852            'max'     => '',
1853            'default' => '',
1854            'type'    => 'string'
1855          },
1856          'dbname' => {
1857            'min'     => '',
1858            'desc'    => 'Database name',
1859            'max'     => '',
1860            'default' => '',
1861            'type'    => 'string'
1862          }
1863        },
1864        'desc'  => 'PathAway Database for Palm/OS',
1865        'modes' => 'rwrwrw',
1866        'ext'   => 'pdb'
1867      },
1868      'gdb' => {
1869        'nmodes'  => 63,
1870        'parent'  => 'gdb',
1871        'options' => {
1872          'via' => {
1873            'min' => '',
1874            'desc' =>
1875             'Drop route points that do not have an equivalent waypoint (hidden points)',
1876            'max'     => '',
1877            'default' => '',
1878            'type'    => 'boolean'
1879          },
1880          'cat' => {
1881            'min'     => '1',
1882            'desc'    => 'Default category on output (1..16)',
1883            'max'     => '16',
1884            'default' => '',
1885            'type'    => 'integer'
1886          },
1887          'ver' => {
1888            'min'     => '1',
1889            'desc'    => 'Version of gdb file to generate (1,2)',
1890            'max'     => '2',
1891            'default' => '2',
1892            'type'    => 'integer'
1893          }
1894        },
1895        'desc'  => 'Garmin MapSource - gdb',
1896        'modes' => 'rwrwrw',
1897        'ext'   => 'gdb'
1898      },
1899      'wbt' => {
1900        'options' => {
1901          'erase' => {
1902            'min'     => '',
1903            'desc'    => 'Erase device data after download',
1904            'max'     => '',
1905            'default' => '',
1906            'type'    => 'boolean'
1907          }
1908        }
1909      },
1910      'gpsutil' => {
1911        'nmodes' => 48,
1912        'parent' => 'gpsutil',
1913        'desc'   => 'gpsutil',
1914        'modes'  => 'rw----'
1915      },
1916      'vitosmt' => {
1917        'nmodes' => 63,
1918        'parent' => 'vitosmt',
1919        'desc'   => 'Vito Navigator II tracks',
1920        'modes'  => 'rwrwrw',
1921        'ext'    => 'smt'
1922      },
1923      'tiger' => {
1924        'nmodes'  => 48,
1925        'parent'  => 'tiger',
1926        'options' => {
1927          'oldthresh' => {
1928            'min'     => '',
1929            'desc'    => 'Days after which points are considered old',
1930            'max'     => '',
1931            'default' => '14',
1932            'type'    => 'integer'
1933          },
1934          'snlen' => {
1935            'min'     => '1',
1936            'desc'    => 'Max shortname length when used with -s',
1937            'max'     => '',
1938            'default' => '10',
1939            'type'    => 'integer'
1940          },
1941          'ypixels' => {
1942            'min'     => '',
1943            'desc'    => 'Height in pixels of map',
1944            'max'     => '',
1945            'default' => '768',
1946            'type'    => 'integer'
1947          },
1948          'xpixels' => {
1949            'min'     => '',
1950            'desc'    => 'Width in pixels of map',
1951            'max'     => '',
1952            'default' => '768',
1953            'type'    => 'integer'
1954          },
1955          'newmarker' => {
1956            'min'     => '',
1957            'desc'    => 'Marker type for new points',
1958            'max'     => '',
1959            'default' => 'greenpin',
1960            'type'    => 'string'
1961          },
1962          'iconismarker' => {
1963            'min'     => '',
1964            'desc'    => 'The icon description is already the marker',
1965            'max'     => '',
1966            'default' => '',
1967            'type'    => 'boolean'
1968          },
1969          'oldmarker' => {
1970            'min'     => '',
1971            'desc'    => 'Marker type for old points',
1972            'max'     => '',
1973            'default' => 'redpin',
1974            'type'    => 'string'
1975          },
1976          'genurl' => {
1977            'min'     => '',
1978            'desc'    => 'Generate file with lat/lon for centering map',
1979            'max'     => '',
1980            'default' => '',
1981            'type'    => 'outfile'
1982          },
1983          'suppresswhite' => {
1984            'min'     => '',
1985            'desc'    => 'Suppress whitespace in generated shortnames',
1986            'max'     => '',
1987            'default' => '',
1988            'type'    => 'boolean'
1989          },
1990          'unfoundmarker' => {
1991            'min'     => '',
1992            'desc'    => 'Marker type for unfound points',
1993            'max'     => '',
1994            'default' => 'bluepin',
1995            'type'    => 'string'
1996          },
1997          'nolabels' => {
1998            'min'     => '',
1999            'desc'    => 'Suppress labels on generated pins',
2000            'max'     => '',
2001            'default' => '',
2002            'type'    => 'boolean'
2003          },
2004          'margin' => {
2005            'min'     => '',
2006            'desc'    => 'Margin for map.  Degrees or percentage',
2007            'max'     => '',
2008            'default' => '15%',
2009            'type'    => 'float'
2010          }
2011        },
2012        'desc'  => 'U.S. Census Bureau Tiger Mapping Service',
2013        'modes' => 'rw----'
2014      },
2015      'alanwpr' => {
2016        'nmodes' => 51,
2017        'parent' => 'alanwpr',
2018        'desc'   => 'Alan Map500 waypoints and routes (.wpr)',
2019        'modes'  => 'rw--rw',
2020        'ext'    => 'wpr'
2021      },
2022      'gpsman' => {
2023        'nmodes'  => 48,
2024        'parent'  => 'xcsv',
2025        'options' => {
2026          'snunique' => {
2027            'min'     => '',
2028            'desc'    => 'Make synth. shortnames unique',
2029            'max'     => '',
2030            'default' => '',
2031            'type'    => 'boolean'
2032          },
2033          'snwhite' => {
2034            'min'     => '',
2035            'desc'    => 'Allow whitespace synth. shortnames',
2036            'max'     => '',
2037            'default' => '',
2038            'type'    => 'boolean'
2039          },
2040          'urlbase' => {
2041            'min'     => '',
2042            'desc'    => 'Basename prepended to URL on output',
2043            'max'     => '',
2044            'default' => '',
2045            'type'    => 'string'
2046          },
2047          'snupper' => {
2048            'min'     => '',
2049            'desc'    => 'UPPERCASE synth. shortnames',
2050            'max'     => '',
2051            'default' => '',
2052            'type'    => 'boolean'
2053          },
2054          'datum' => {
2055            'min'     => '',
2056            'desc'    => 'GPS datum (def. WGS 84)',
2057            'max'     => '',
2058            'default' => '',
2059            'type'    => 'string'
2060          },
2061          'snlen' => {
2062            'min'     => '1',
2063            'desc'    => 'Max synthesized shortname length',
2064            'max'     => '',
2065            'default' => '',
2066            'type'    => 'integer'
2067          },
2068          'prefer_shortnames' => {
2069            'min'     => '',
2070            'desc'    => 'Use shortname instead of description',
2071            'max'     => '',
2072            'default' => '',
2073            'type'    => 'boolean'
2074          }
2075        },
2076        'desc'  => 'GPSman',
2077        'modes' => 'rw----'
2078      },
2079      'gpl' => {
2080        'nmodes' => 12,
2081        'parent' => 'gpl',
2082        'desc'   => 'DeLorme GPL',
2083        'modes'  => '--rw--',
2084        'ext'    => 'gpl'
2085      },
2086      'vcard' => {
2087        'nmodes'  => 16,
2088        'parent'  => 'vcard',
2089        'options' => {
2090          'encrypt' => {
2091            'min'     => '',
2092            'desc'    => 'Encrypt hints using ROT13',
2093            'max'     => '',
2094            'default' => '',
2095            'type'    => 'boolean'
2096          }
2097        },
2098        'desc'  => 'Vcard Output (for iPod)',
2099        'modes' => '-w----',
2100        'ext'   => 'vcf'
2101      },
2102      'tef' => {
2103        'nmodes'  => 2,
2104        'parent'  => 'tef',
2105        'options' => {
2106          'routevia' => {
2107            'min'     => '',
2108            'desc'    => 'Include only via stations in route',
2109            'max'     => '',
2110            'default' => '',
2111            'type'    => 'boolean'
2112          }
2113        },
2114        'desc'  => 'Map&Guide \'TourExchangeFormat\' XML',
2115        'modes' => '----r-',
2116        'ext'   => 'xml'
2117      },
2118      'arc' => {
2119        'nmodes'  => 48,
2120        'parent'  => 'xcsv',
2121        'options' => {
2122          'snunique' => {
2123            'min'     => '',
2124            'desc'    => 'Make synth. shortnames unique',
2125            'max'     => '',
2126            'default' => '',
2127            'type'    => 'boolean'
2128          },
2129          'snwhite' => {
2130            'min'     => '',
2131            'desc'    => 'Allow whitespace synth. shortnames',
2132            'max'     => '',
2133            'default' => '',
2134            'type'    => 'boolean'
2135          },
2136          'urlbase' => {
2137            'min'     => '',
2138            'desc'    => 'Basename prepended to URL on output',
2139            'max'     => '',
2140            'default' => '',
2141            'type'    => 'string'
2142          },
2143          'snupper' => {
2144            'min'     => '',
2145            'desc'    => 'UPPERCASE synth. shortnames',
2146            'max'     => '',
2147            'default' => '',
2148            'type'    => 'boolean'
2149          },
2150          'datum' => {
2151            'min'     => '',
2152            'desc'    => 'GPS datum (def. WGS 84)',
2153            'max'     => '',
2154            'default' => '',
2155            'type'    => 'string'
2156          },
2157          'snlen' => {
2158            'min'     => '1',
2159            'desc'    => 'Max synthesized shortname length',
2160            'max'     => '',
2161            'default' => '',
2162            'type'    => 'integer'
2163          },
2164          'prefer_shortnames' => {
2165            'min'     => '',
2166            'desc'    => 'Use shortname instead of description',
2167            'max'     => '',
2168            'default' => '',
2169            'type'    => 'boolean'
2170          }
2171        },
2172        'desc'  => 'GPSBabel arc filter file',
2173        'modes' => 'rw----',
2174        'ext'   => 'txt'
2175      },
2176      'kwf2' => {
2177        'nmodes'  => 48,
2178        'parent'  => 'xcsv',
2179        'options' => {
2180          'snunique' => {
2181            'min'     => '',
2182            'desc'    => 'Make synth. shortnames unique',
2183            'max'     => '',
2184            'default' => '',
2185            'type'    => 'boolean'
2186          },
2187          'snwhite' => {
2188            'min'     => '',
2189            'desc'    => 'Allow whitespace synth. shortnames',
2190            'max'     => '',
2191            'default' => '',
2192            'type'    => 'boolean'
2193          },
2194          'urlbase' => {
2195            'min'     => '',
2196            'desc'    => 'Basename prepended to URL on output',
2197            'max'     => '',
2198            'default' => '',
2199            'type'    => 'string'
2200          },
2201          'snupper' => {
2202            'min'     => '',
2203            'desc'    => 'UPPERCASE synth. shortnames',
2204            'max'     => '',
2205            'default' => '',
2206            'type'    => 'boolean'
2207          },
2208          'datum' => {
2209            'min'     => '',
2210            'desc'    => 'GPS datum (def. WGS 84)',
2211            'max'     => '',
2212            'default' => '',
2213            'type'    => 'string'
2214          },
2215          'snlen' => {
2216            'min'     => '1',
2217            'desc'    => 'Max synthesized shortname length',
2218            'max'     => '',
2219            'default' => '',
2220            'type'    => 'integer'
2221          },
2222          'prefer_shortnames' => {
2223            'min'     => '',
2224            'desc'    => 'Use shortname instead of description',
2225            'max'     => '',
2226            'default' => '',
2227            'type'    => 'boolean'
2228          }
2229        },
2230        'desc'  => 'Kartex 5 Waypoint File',
2231        'modes' => 'rw----',
2232        'ext'   => 'kwf'
2233      },
2234      'cup' => {
2235        'nmodes'  => 48,
2236        'parent'  => 'xcsv',
2237        'options' => {
2238          'snunique' => {
2239            'min'     => '',
2240            'desc'    => 'Make synth. shortnames unique',
2241            'max'     => '',
2242            'default' => '',
2243            'type'    => 'boolean'
2244          },
2245          'snwhite' => {
2246            'min'     => '',
2247            'desc'    => 'Allow whitespace synth. shortnames',
2248            'max'     => '',
2249            'default' => '',
2250            'type'    => 'boolean'
2251          },
2252          'urlbase' => {
2253            'min'     => '',
2254            'desc'    => 'Basename prepended to URL on output',
2255            'max'     => '',
2256            'default' => '',
2257            'type'    => 'string'
2258          },
2259          'snupper' => {
2260            'min'     => '',
2261            'desc'    => 'UPPERCASE synth. shortnames',
2262            'max'     => '',
2263            'default' => '',
2264            'type'    => 'boolean'
2265          },
2266          'datum' => {
2267            'min'     => '',
2268            'desc'    => 'GPS datum (def. WGS 84)',
2269            'max'     => '',
2270            'default' => '',
2271            'type'    => 'string'
2272          },
2273          'snlen' => {
2274            'min'     => '1',
2275            'desc'    => 'Max synthesized shortname length',
2276            'max'     => '',
2277            'default' => '',
2278            'type'    => 'integer'
2279          },
2280          'prefer_shortnames' => {
2281            'min'     => '',
2282            'desc'    => 'Use shortname instead of description',
2283            'max'     => '',
2284            'default' => '',
2285            'type'    => 'boolean'
2286          }
2287        },
2288        'desc'  => 'See You flight analysis data',
2289        'modes' => 'rw----',
2290        'ext'   => 'cup'
2291      },
2292      'quovadis' => {
2293        'nmodes'  => 48,
2294        'parent'  => 'quovadis',
2295        'options' => {
2296          'dbname' => {
2297            'min'     => '',
2298            'desc'    => 'Database name',
2299            'max'     => '',
2300            'default' => '',
2301            'type'    => 'string'
2302          }
2303        },
2304        'desc'  => 'Quovadis',
2305        'modes' => 'rw----',
2306        'ext'   => 'pdb'
2307      },
2308      's_and_t' => {
2309        'nmodes'  => 48,
2310        'parent'  => 'xcsv',
2311        'options' => {
2312          'snunique' => {
2313            'min'     => '',
2314            'desc'    => 'Make synth. shortnames unique',
2315            'max'     => '',
2316            'default' => '',
2317            'type'    => 'boolean'
2318          },
2319          'snwhite' => {
2320            'min'     => '',
2321            'desc'    => 'Allow whitespace synth. shortnames',
2322            'max'     => '',
2323            'default' => '',
2324            'type'    => 'boolean'
2325          },
2326          'urlbase' => {
2327            'min'     => '',
2328            'desc'    => 'Basename prepended to URL on output',
2329            'max'     => '',
2330            'default' => '',
2331            'type'    => 'string'
2332          },
2333          'snupper' => {
2334            'min'     => '',
2335            'desc'    => 'UPPERCASE synth. shortnames',
2336            'max'     => '',
2337            'default' => '',
2338            'type'    => 'boolean'
2339          },
2340          'datum' => {
2341            'min'     => '',
2342            'desc'    => 'GPS datum (def. WGS 84)',
2343            'max'     => '',
2344            'default' => '',
2345            'type'    => 'string'
2346          },
2347          'snlen' => {
2348            'min'     => '1',
2349            'desc'    => 'Max synthesized shortname length',
2350            'max'     => '',
2351            'default' => '',
2352            'type'    => 'integer'
2353          },
2354          'prefer_shortnames' => {
2355            'min'     => '',
2356            'desc'    => 'Use shortname instead of description',
2357            'max'     => '',
2358            'default' => '',
2359            'type'    => 'boolean'
2360          }
2361        },
2362        'desc'  => 'Microsoft Streets and Trips 2002-2006',
2363        'modes' => 'rw----',
2364        'ext'   => 'txt'
2365      },
2366      'tpo2' => {
2367        'nmodes' => 8,
2368        'parent' => 'tpo2',
2369        'desc'   => 'National Geographic Topo 2.x .tpo',
2370        'modes'  => '--r---',
2371        'ext'    => 'tpo'
2372      },
2373      'cst' => {
2374        'nmodes' => 42,
2375        'parent' => 'cst',
2376        'desc'   => 'CarteSurTable data file',
2377        'modes'  => 'r-r-r-',
2378        'ext'    => 'cst'
2379      },
2380      'stmwpp' => {
2381        'nmodes'  => 63,
2382        'parent'  => 'stmwpp',
2383        'options' => {
2384          'index' => {
2385            'min' => '1',
2386            'desc' =>
2387             'Index of route/track to write (if more the one in source)',
2388            'max'     => '',
2389            'default' => '',
2390            'type'    => 'integer'
2391          }
2392        },
2393        'desc'  => 'Suunto Trek Manager (STM) WaypointPlus files',
2394        'modes' => 'rwrwrw',
2395        'ext'   => 'txt'
2396      },
2397      'ignrando' => {
2398        'nmodes'  => 12,
2399        'parent'  => 'ignrando',
2400        'options' => {
2401          'index' => {
2402            'min' => '1',
2403            'desc' =>
2404             'Index of track to write (if more the one in source)',
2405            'max'     => '',
2406            'default' => '',
2407            'type'    => 'integer'
2408          }
2409        },
2410        'desc'  => 'IGN Rando track files',
2411        'modes' => '--rw--',
2412        'ext'   => 'rdn'
2413      },
2414      'navicache' => {
2415        'nmodes'  => 32,
2416        'parent'  => 'navicache',
2417        'options' => {
2418          'noretired' => {
2419            'min'     => '',
2420            'desc'    => 'Suppress retired geocaches',
2421            'max'     => '',
2422            'default' => '',
2423            'type'    => 'boolean'
2424          }
2425        },
2426        'desc'  => 'Navicache.com XML',
2427        'modes' => 'r-----'
2428      },
2429      'psitrex' => {
2430        'nmodes' => 63,
2431        'parent' => 'psitrex',
2432        'desc'   => 'KuDaTa PsiTrex text',
2433        'modes'  => 'rwrwrw'
2434      },
2435      'unicsv' => {
2436        'nmodes' => 32,
2437        'parent' => 'unicsv',
2438        'desc'   => 'Universal csv with field structure in first line',
2439        'modes'  => 'r-----'
2440      },
2441      'tmpro' => {
2442        'nmodes' => 48,
2443        'parent' => 'tmpro',
2444        'desc'   => 'TopoMapPro Places File',
2445        'modes'  => 'rw----',
2446        'ext'    => 'tmpro'
2447      },
2448      'shape' => {
2449        'options' => {
2450          'url' => {
2451            'min'     => '',
2452            'desc'    => 'Index of URL field in .dbf',
2453            'max'     => '',
2454            'default' => '',
2455            'type'    => 'integer'
2456          },
2457          'name' => {
2458            'min'     => '',
2459            'desc'    => 'Index of name field in .dbf',
2460            'max'     => '',
2461            'default' => '',
2462            'type'    => 'string'
2463          }
2464        }
2465      },
2466      'saplus' => {
2467        'nmodes'  => 48,
2468        'parent'  => 'xcsv',
2469        'options' => {
2470          'snunique' => {
2471            'min'     => '',
2472            'desc'    => 'Make synth. shortnames unique',
2473            'max'     => '',
2474            'default' => '',
2475            'type'    => 'boolean'
2476          },
2477          'snwhite' => {
2478            'min'     => '',
2479            'desc'    => 'Allow whitespace synth. shortnames',
2480            'max'     => '',
2481            'default' => '',
2482            'type'    => 'boolean'
2483          },
2484          'urlbase' => {
2485            'min'     => '',
2486            'desc'    => 'Basename prepended to URL on output',
2487            'max'     => '',
2488            'default' => '',
2489            'type'    => 'string'
2490          },
2491          'snupper' => {
2492            'min'     => '',
2493            'desc'    => 'UPPERCASE synth. shortnames',
2494            'max'     => '',
2495            'default' => '',
2496            'type'    => 'boolean'
2497          },
2498          'datum' => {
2499            'min'     => '',
2500            'desc'    => 'GPS datum (def. WGS 84)',
2501            'max'     => '',
2502            'default' => '',
2503            'type'    => 'string'
2504          },
2505          'snlen' => {
2506            'min'     => '1',
2507            'desc'    => 'Max synthesized shortname length',
2508            'max'     => '',
2509            'default' => '',
2510            'type'    => 'integer'
2511          },
2512          'prefer_shortnames' => {
2513            'min'     => '',
2514            'desc'    => 'Use shortname instead of description',
2515            'max'     => '',
2516            'default' => '',
2517            'type'    => 'boolean'
2518          }
2519        },
2520        'desc'  => 'DeLorme Street Atlas Plus',
2521        'modes' => 'rw----'
2522      },
2523      'dna' => {
2524        'nmodes'  => 48,
2525        'parent'  => 'xcsv',
2526        'options' => {
2527          'snunique' => {
2528            'min'     => '',
2529            'desc'    => 'Make synth. shortnames unique',
2530            'max'     => '',
2531            'default' => '',
2532            'type'    => 'boolean'
2533          },
2534          'snwhite' => {
2535            'min'     => '',
2536            'desc'    => 'Allow whitespace synth. shortnames',
2537            'max'     => '',
2538            'default' => '',
2539            'type'    => 'boolean'
2540          },
2541          'urlbase' => {
2542            'min'     => '',
2543            'desc'    => 'Basename prepended to URL on output',
2544            'max'     => '',
2545            'default' => '',
2546            'type'    => 'string'
2547          },
2548          'snupper' => {
2549            'min'     => '',
2550            'desc'    => 'UPPERCASE synth. shortnames',
2551            'max'     => '',
2552            'default' => '',
2553            'type'    => 'boolean'
2554          },
2555          'datum' => {
2556            'min'     => '',
2557            'desc'    => 'GPS datum (def. WGS 84)',
2558            'max'     => '',
2559            'default' => '',
2560            'type'    => 'string'
2561          },
2562          'snlen' => {
2563            'min'     => '1',
2564            'desc'    => 'Max synthesized shortname length',
2565            'max'     => '',
2566            'default' => '',
2567            'type'    => 'integer'
2568          },
2569          'prefer_shortnames' => {
2570            'min'     => '',
2571            'desc'    => 'Use shortname instead of description',
2572            'max'     => '',
2573            'default' => '',
2574            'type'    => 'boolean'
2575          }
2576        },
2577        'desc'  => 'Navitrak DNA marker format',
2578        'modes' => 'rw----',
2579        'ext'   => 'dna'
2580      },
2581      'gtm' => {
2582        'nmodes' => 63,
2583        'parent' => 'gtm',
2584        'desc'   => 'GPS TrackMaker',
2585        'modes'  => 'rwrwrw',
2586        'ext'    => 'gtm'
2587      },
2588      'compegps' => {
2589        'nmodes'  => 63,
2590        'parent'  => 'compegps',
2591        'options' => {
2592          'index' => {
2593            'min' => '1',
2594            'desc' =>
2595             'Index of route/track to write (if more the one in source)',
2596            'max'     => '',
2597            'default' => '',
2598            'type'    => 'integer'
2599          },
2600          'radius' => {
2601            'min' => '',
2602            'desc' =>
2603             'Give points (waypoints/route points) a default radius (proximity)',
2604            'max'     => '',
2605            'default' => '',
2606            'type'    => 'float'
2607          },
2608          'snlen' => {
2609            'min'     => '1',
2610            'desc'    => 'Length of generated shortnames (default 16)',
2611            'max'     => '',
2612            'default' => '16',
2613            'type'    => 'integer'
2614          },
2615          'deficon' => {
2616            'min'     => '',
2617            'desc'    => 'Default icon name',
2618            'max'     => '',
2619            'default' => '',
2620            'type'    => 'string'
2621          }
2622        },
2623        'desc'  => 'CompeGPS data files (.wpt/.trk/.rte)',
2624        'modes' => 'rwrwrw'
2625      },
2626      'copilot' => {
2627        'nmodes' => 48,
2628        'parent' => 'copilot',
2629        'desc'   => 'CoPilot Flight Planner for Palm/OS',
2630        'modes'  => 'rw----',
2631        'ext'    => 'pdb'
2632      },
2633      'nmea' => {
2634        'nmodes'  => 60,
2635        'parent'  => 'nmea',
2636        'options' => {
2637          'gpvtg' => {
2638            'min'     => '',
2639            'desc'    => 'Read/write GPVTG sentences',
2640            'max'     => '',
2641            'default' => '1',
2642            'type'    => 'boolean'
2643          },
2644          'baud' => {
2645            'min' => '',
2646            'desc' =>
2647             'Speed in bits per second of serial port (baud=4800)',
2648            'max'     => '',
2649            'default' => '',
2650            'type'    => 'integer'
2651          },
2652          'date' => {
2653            'min' => '',
2654            'desc' =>
2655             'Complete date-free tracks with given date (YYYYMMDD).',
2656            'max'     => '',
2657            'default' => '',
2658            'type'    => 'integer'
2659          },
2660          'snlen' => {
2661            'min'     => '1',
2662            'desc'    => 'Max length of waypoint name to write',
2663            'max'     => '64',
2664            'default' => '6',
2665            'type'    => 'integer'
2666          },
2667          'get_posn' => {
2668            'min'     => '',
2669            'desc'    => 'Return current position as a waypoint',
2670            'max'     => '',
2671            'default' => '',
2672            'type'    => 'boolean'
2673          },
2674          'pause' => {
2675            'min' => '',
2676            'desc' =>
2677             'Decimal seconds to pause between groups of strings',
2678            'max'     => '',
2679            'default' => '',
2680            'type'    => 'integer'
2681          },
2682          'gpgga' => {
2683            'min'     => '',
2684            'desc'    => 'Read/write GPGGA sentences',
2685            'max'     => '',
2686            'default' => '1',
2687            'type'    => 'boolean'
2688          },
2689          'gpgsa' => {
2690            'min'     => '',
2691            'desc'    => 'Read/write GPGSA sentences',
2692            'max'     => '',
2693            'default' => '1',
2694            'type'    => 'boolean'
2695          },
2696          'gprmc' => {
2697            'min'     => '',
2698            'desc'    => 'Read/write GPRMC sentences',
2699            'max'     => '',
2700            'default' => '1',
2701            'type'    => 'boolean'
2702          }
2703        },
2704        'desc'  => 'NMEA 0183 sentences',
2705        'modes' => 'rwrw--'
2706      },
2707      'mapsource' => {
2708        'nmodes'  => 63,
2709        'parent'  => 'mapsource',
2710        'options' => {
2711          'snwhite' => {
2712            'min'     => '',
2713            'desc'    => 'Allow whitespace synth. shortnames',
2714            'max'     => '',
2715            'default' => '',
2716            'type'    => 'boolean'
2717          },
2718          'mpsverout' => {
2719            'min'  => '',
2720            'desc' => 'Version of mapsource file to generate (3,4,5)',
2721            'max'  => '',
2722            'default' => '',
2723            'type'    => 'integer'
2724          },
2725          'mpsusedepth' => {
2726            'min'  => '',
2727            'desc' => 'Use depth values on output (default is ignore)',
2728            'max'  => '',
2729            'default' => '',
2730            'type'    => 'boolean'
2731          },
2732          'mpsuseprox' => {
2733            'min' => '',
2734            'desc' =>
2735             'Use proximity values on output (default is ignore)',
2736            'max'     => '',
2737            'default' => '',
2738            'type'    => 'boolean'
2739          },
2740          'snlen' => {
2741            'min'     => '1',
2742            'desc'    => 'Length of generated shortnames',
2743            'max'     => '',
2744            'default' => '10',
2745            'type'    => 'integer'
2746          },
2747          'mpsmergeout' => {
2748            'min'     => '',
2749            'desc'    => 'Merge output with existing file',
2750            'max'     => '',
2751            'default' => '',
2752            'type'    => 'boolean'
2753          }
2754        },
2755        'desc'  => 'Garmin MapSource - mps',
2756        'modes' => 'rwrwrw',
2757        'ext'   => 'mps'
2758      },
2759      'axim_gpb' => {
2760        'nmodes' => 8,
2761        'parent' => 'axim_gpb',
2762        'desc'   => 'Dell Axim Navigation System (.gpb) file format',
2763        'modes'  => '--r---',
2764        'ext'    => 'gpb'
2765      },
2766      'gpsdrivetrack' => {
2767        'nmodes'  => 48,
2768        'parent'  => 'xcsv',
2769        'options' => {
2770          'snunique' => {
2771            'min'     => '',
2772            'desc'    => 'Make synth. shortnames unique',
2773            'max'     => '',
2774            'default' => '',
2775            'type'    => 'boolean'
2776          },
2777          'snwhite' => {
2778            'min'     => '',
2779            'desc'    => 'Allow whitespace synth. shortnames',
2780            'max'     => '',
2781            'default' => '',
2782            'type'    => 'boolean'
2783          },
2784          'urlbase' => {
2785            'min'     => '',
2786            'desc'    => 'Basename prepended to URL on output',
2787            'max'     => '',
2788            'default' => '',
2789            'type'    => 'string'
2790          },
2791          'snupper' => {
2792            'min'     => '',
2793            'desc'    => 'UPPERCASE synth. shortnames',
2794            'max'     => '',
2795            'default' => '',
2796            'type'    => 'boolean'
2797          },
2798          'datum' => {
2799            'min'     => '',
2800            'desc'    => 'GPS datum (def. WGS 84)',
2801            'max'     => '',
2802            'default' => '',
2803            'type'    => 'string'
2804          },
2805          'snlen' => {
2806            'min'     => '1',
2807            'desc'    => 'Max synthesized shortname length',
2808            'max'     => '',
2809            'default' => '',
2810            'type'    => 'integer'
2811          },
2812          'prefer_shortnames' => {
2813            'min'     => '',
2814            'desc'    => 'Use shortname instead of description',
2815            'max'     => '',
2816            'default' => '',
2817            'type'    => 'boolean'
2818          }
2819        },
2820        'desc'  => 'GpsDrive Format for Tracks',
2821        'modes' => 'rw----'
2822      },
2823      'hiketech' => {
2824        'nmodes' => 60,
2825        'parent' => 'hiketech',
2826        'desc'   => 'HikeTech',
2827        'modes'  => 'rwrw--',
2828        'ext'    => 'gps'
2829      },
2830      'psp' => {
2831        'nmodes' => 48,
2832        'parent' => 'psp',
2833        'desc'   => 'MS PocketStreets 2002 Pushpin',
2834        'modes'  => 'rw----',
2835        'ext'    => 'psp'
2836      },
2837      'sportsim' => {
2838        'nmodes'  => 48,
2839        'parent'  => 'xcsv',
2840        'options' => {
2841          'snunique' => {
2842            'min'     => '',
2843            'desc'    => 'Make synth. shortnames unique',
2844            'max'     => '',
2845            'default' => '',
2846            'type'    => 'boolean'
2847          },
2848          'snwhite' => {
2849            'min'     => '',
2850            'desc'    => 'Allow whitespace synth. shortnames',
2851            'max'     => '',
2852            'default' => '',
2853            'type'    => 'boolean'
2854          },
2855          'urlbase' => {
2856            'min'     => '',
2857            'desc'    => 'Basename prepended to URL on output',
2858            'max'     => '',
2859            'default' => '',
2860            'type'    => 'string'
2861          },
2862          'snupper' => {
2863            'min'     => '',
2864            'desc'    => 'UPPERCASE synth. shortnames',
2865            'max'     => '',
2866            'default' => '',
2867            'type'    => 'boolean'
2868          },
2869          'datum' => {
2870            'min'     => '',
2871            'desc'    => 'GPS datum (def. WGS 84)',
2872            'max'     => '',
2873            'default' => '',
2874            'type'    => 'string'
2875          },
2876          'snlen' => {
2877            'min'     => '1',
2878            'desc'    => 'Max synthesized shortname length',
2879            'max'     => '',
2880            'default' => '',
2881            'type'    => 'integer'
2882          },
2883          'prefer_shortnames' => {
2884            'min'     => '',
2885            'desc'    => 'Use shortname instead of description',
2886            'max'     => '',
2887            'default' => '',
2888            'type'    => 'boolean'
2889          }
2890        },
2891        'desc'  => 'Sportsim track files (part of zipped .ssz files)',
2892        'modes' => 'rw----',
2893        'ext'   => 'txt'
2894      },
2895      'ozi' => {
2896        'nmodes'  => 63,
2897        'parent'  => 'ozi',
2898        'options' => {
2899          'snunique' => {
2900            'min'     => '',
2901            'desc'    => 'Make synth. shortnames unique',
2902            'max'     => '',
2903            'default' => '',
2904            'type'    => 'boolean'
2905          },
2906          'snwhite' => {
2907            'min'     => '',
2908            'desc'    => 'Allow whitespace synth. shortnames',
2909            'max'     => '',
2910            'default' => '',
2911            'type'    => 'boolean'
2912          },
2913          'snupper' => {
2914            'min'     => '',
2915            'desc'    => 'UPPERCASE synth. shortnames',
2916            'max'     => '',
2917            'default' => '',
2918            'type'    => 'boolean'
2919          },
2920          'snlen' => {
2921            'min'     => '1',
2922            'desc'    => 'Max synthesized shortname length',
2923            'max'     => '',
2924            'default' => '32',
2925            'type'    => 'integer'
2926          },
2927          'wptbgcolor' => {
2928            'min'     => '',
2929            'desc'    => 'Waypoint background color',
2930            'max'     => '',
2931            'default' => 'yellow',
2932            'type'    => 'string'
2933          },
2934          'wptfgcolor' => {
2935            'min'     => '',
2936            'desc'    => 'Waypoint foreground color',
2937            'max'     => '',
2938            'default' => 'black',
2939            'type'    => 'string'
2940          }
2941        },
2942        'desc'  => 'OziExplorer',
2943        'modes' => 'rwrwrw'
2944      },
2945      'tabsep' => {
2946        'options' => {
2947          'snunique' => {
2948            'min'     => '',
2949            'desc'    => 'Make synth. shortnames unique',
2950            'max'     => '',
2951            'default' => '',
2952            'type'    => 'boolean'
2953          },
2954          'snwhite' => {
2955            'min'     => '',
2956            'desc'    => 'Allow whitespace synth. shortnames',
2957            'max'     => '',
2958            'default' => '',
2959            'type'    => 'boolean'
2960          },
2961          'urlbase' => {
2962            'min'     => '',
2963            'desc'    => 'Basename prepended to URL on output',
2964            'max'     => '',
2965            'default' => '',
2966            'type'    => 'string'
2967          },
2968          'snupper' => {
2969            'min'     => '',
2970            'desc'    => 'UPPERCASE synth. shortnames',
2971            'max'     => '',
2972            'default' => '',
2973            'type'    => 'boolean'
2974          },
2975          'datum' => {
2976            'min'     => '',
2977            'desc'    => 'GPS datum (def. WGS 84)',
2978            'max'     => '',
2979            'default' => '',
2980            'type'    => 'string'
2981          },
2982          'snlen' => {
2983            'min'     => '1',
2984            'desc'    => 'Max synthesized shortname length',
2985            'max'     => '',
2986            'default' => '',
2987            'type'    => 'integer'
2988          },
2989          'prefer_shortnames' => {
2990            'min'     => '',
2991            'desc'    => 'Use shortname instead of description',
2992            'max'     => '',
2993            'default' => '',
2994            'type'    => 'boolean'
2995          }
2996        }
2997      },
2998      'coastexp' => {
2999        'nmodes' => 51,
3000        'parent' => 'coastexp',
3001        'desc'   => 'CoastalExplorer XML',
3002        'modes'  => 'rw--rw'
3003      },
3004      'palmdoc' => {
3005        'nmodes'  => 16,
3006        'parent'  => 'palmdoc',
3007        'options' => {
3008          'encrypt' => {
3009            'min'     => '',
3010            'desc'    => 'Encrypt hints with ROT13',
3011            'max'     => '',
3012            'default' => '',
3013            'type'    => 'boolean'
3014          },
3015          'nosep' => {
3016            'min'     => '',
3017            'desc'    => 'No separator lines between waypoints',
3018            'max'     => '',
3019            'default' => '',
3020            'type'    => 'boolean'
3021          },
3022          'bookmarks_short' => {
3023            'min'     => '',
3024            'desc'    => 'Include short name in bookmarks',
3025            'max'     => '',
3026            'default' => '',
3027            'type'    => 'boolean'
3028          },
3029          'logs' => {
3030            'min'     => '',
3031            'desc'    => 'Include groundspeak logs if present',
3032            'max'     => '',
3033            'default' => '',
3034            'type'    => 'boolean'
3035          },
3036          'dbname' => {
3037            'min'     => '',
3038            'desc'    => 'Database name',
3039            'max'     => '',
3040            'default' => '',
3041            'type'    => 'string'
3042          }
3043        },
3044        'desc'  => 'PalmDoc Output',
3045        'modes' => '-w----',
3046        'ext'   => 'pdb'
3047      },
3048      'xcsv' => {
3049        'options' => {
3050          'snunique' => {
3051            'min'     => '',
3052            'desc'    => 'Make synth. shortnames unique',
3053            'max'     => '',
3054            'default' => '',
3055            'type'    => 'boolean'
3056          },
3057          'urlbase' => {
3058            'min'     => '',
3059            'desc'    => 'Basename prepended to URL on output',
3060            'max'     => '',
3061            'default' => '',
3062            'type'    => 'string'
3063          },
3064          'style' => {
3065            'min'     => '',
3066            'desc'    => 'Full path to XCSV style file',
3067            'max'     => '',
3068            'default' => '',
3069            'type'    => 'file'
3070          },
3071          'snlen' => {
3072            'min'     => '1',
3073            'desc'    => 'Max synthesized shortname length',
3074            'max'     => '',
3075            'default' => '',
3076            'type'    => 'integer'
3077          },
3078          'prefer_shortnames' => {
3079            'min'     => '',
3080            'desc'    => 'Use shortname instead of description',
3081            'max'     => '',
3082            'default' => '',
3083            'type'    => 'boolean'
3084          },
3085          'snwhite' => {
3086            'min'     => '',
3087            'desc'    => 'Allow whitespace synth. shortnames',
3088            'max'     => '',
3089            'default' => '',
3090            'type'    => 'boolean'
3091          },
3092          'snupper' => {
3093            'min'     => '',
3094            'desc'    => 'UPPERCASE synth. shortnames',
3095            'max'     => '',
3096            'default' => '',
3097            'type'    => 'boolean'
3098          },
3099          'datum' => {
3100            'min'     => '',
3101            'desc'    => 'GPS datum (def. WGS 84)',
3102            'max'     => '',
3103            'default' => '',
3104            'type'    => 'string'
3105          }
3106        }
3107      },
3108      'mapsend' => {
3109        'nmodes'  => 63,
3110        'parent'  => 'mapsend',
3111        'options' => {
3112          'trkver' => {
3113            'min'     => '3',
3114            'desc'    => 'MapSend version TRK file to generate (3,4)',
3115            'max'     => '4',
3116            'default' => '4',
3117            'type'    => 'integer'
3118          }
3119        },
3120        'desc'  => 'Magellan Mapsend',
3121        'modes' => 'rwrwrw'
3122      },
3123      'garmin301' => {
3124        'nmodes'  => 48,
3125        'parent'  => 'xcsv',
3126        'options' => {
3127          'snunique' => {
3128            'min'     => '',
3129            'desc'    => 'Make synth. shortnames unique',
3130            'max'     => '',
3131            'default' => '',
3132            'type'    => 'boolean'
3133          },
3134          'snwhite' => {
3135            'min'     => '',
3136            'desc'    => 'Allow whitespace synth. shortnames',
3137            'max'     => '',
3138            'default' => '',
3139            'type'    => 'boolean'
3140          },
3141          'urlbase' => {
3142            'min'     => '',
3143            'desc'    => 'Basename prepended to URL on output',
3144            'max'     => '',
3145            'default' => '',
3146            'type'    => 'string'
3147          },
3148          'snupper' => {
3149            'min'     => '',
3150            'desc'    => 'UPPERCASE synth. shortnames',
3151            'max'     => '',
3152            'default' => '',
3153            'type'    => 'boolean'
3154          },
3155          'datum' => {
3156            'min'     => '',
3157            'desc'    => 'GPS datum (def. WGS 84)',
3158            'max'     => '',
3159            'default' => '',
3160            'type'    => 'string'
3161          },
3162          'snlen' => {
3163            'min'     => '1',
3164            'desc'    => 'Max synthesized shortname length',
3165            'max'     => '',
3166            'default' => '',
3167            'type'    => 'integer'
3168          },
3169          'prefer_shortnames' => {
3170            'min'     => '',
3171            'desc'    => 'Use shortname instead of description',
3172            'max'     => '',
3173            'default' => '',
3174            'type'    => 'boolean'
3175          }
3176        },
3177        'desc'  => 'Garmin 301 Custom position and heartrate',
3178        'modes' => 'rw----'
3179      },
3180      'nima' => {
3181        'nmodes'  => 48,
3182        'parent'  => 'xcsv',
3183        'options' => {
3184          'snunique' => {
3185            'min'     => '',
3186            'desc'    => 'Make synth. shortnames unique',
3187            'max'     => '',
3188            'default' => '',
3189            'type'    => 'boolean'
3190          },
3191          'snwhite' => {
3192            'min'     => '',
3193            'desc'    => 'Allow whitespace synth. shortnames',
3194            'max'     => '',
3195            'default' => '',
3196            'type'    => 'boolean'
3197          },
3198          'urlbase' => {
3199            'min'     => '',
3200            'desc'    => 'Basename prepended to URL on output',
3201            'max'     => '',
3202            'default' => '',
3203            'type'    => 'string'
3204          },
3205          'snupper' => {
3206            'min'     => '',
3207            'desc'    => 'UPPERCASE synth. shortnames',
3208            'max'     => '',
3209            'default' => '',
3210            'type'    => 'boolean'
3211          },
3212          'datum' => {
3213            'min'     => '',
3214            'desc'    => 'GPS datum (def. WGS 84)',
3215            'max'     => '',
3216            'default' => '',
3217            'type'    => 'string'
3218          },
3219          'snlen' => {
3220            'min'     => '1',
3221            'desc'    => 'Max synthesized shortname length',
3222            'max'     => '',
3223            'default' => '',
3224            'type'    => 'integer'
3225          },
3226          'prefer_shortnames' => {
3227            'min'     => '',
3228            'desc'    => 'Use shortname instead of description',
3229            'max'     => '',
3230            'default' => '',
3231            'type'    => 'boolean'
3232          }
3233        },
3234        'desc'  => 'NIMA/GNIS Geographic Names File',
3235        'modes' => 'rw----'
3236      },
3237      'mag_pdb' => {
3238        'nmodes' => 34,
3239        'parent' => 'mag_pdb',
3240        'desc'   => 'Map&Guide to Palm/OS exported files (.pdb)',
3241        'modes'  => 'r---r-',
3242        'ext'    => 'pdb'
3243      },
3244      'gpilots' => {
3245        'nmodes'  => 48,
3246        'parent'  => 'gpilots',
3247        'options' => {
3248          'dbname' => {
3249            'min'     => '',
3250            'desc'    => 'Database name',
3251            'max'     => '',
3252            'default' => '',
3253            'type'    => 'string'
3254          }
3255        },
3256        'desc'  => 'GpilotS',
3257        'modes' => 'rw----',
3258        'ext'   => 'pdb'
3259      }
3260    },
3261    'for_ext' => {
3262      'anr'    => ['saroute'],
3263      'rwf'    => ['raymarine'],
3264      'tpg'    => ['tpg'],
3265      'mxf'    => ['mxf'],
3266      'sdf'    => ['stmsdf'],
3267      'gpl'    => ['gpl'],
3268      'bcr'    => ['bcr'],
3269      'xml'    => [ 'glogbook', 'google', 'tef', 'wfff' ],
3270      'gpssim' => ['gpssim'],
3271      'trl'   => [ 'alantrl', 'dmtlog' ],
3272      'cup'   => ['cup'],
3273      'pcx'   => ['pcx'],
3274      'wpt'   => ['xmap'],
3275      'rte'   => ['nmn4'],
3276      'kml'   => ['kml'],
3277      'cst'   => ['cst'],
3278      'est'   => ['msroute'],
3279      'gs'    => ['maggeo'],
3280      'rdn'   => ['ignrando'],
3281      'gps'   => ['hiketech'],
3282      'loc'   => [ 'easygps', 'geo' ],
3283      'tmpro' => ['tmpro'],
3284      'ov2'   => ['tomtom'],
3285      'axe'   => ['msroute'],
3286      'dna'   => ['dna'],
3287      'gtm'   => ['gtm'],
3288      'gpx'   => ['gpx'],
3289      'an1'   => ['an1'],
3290      'wpo'   => ['holux'],
3291      'txt'   => [
3292        'xmap2006', 'fugawi',       'garmin_txt', 'geonet',
3293        'arc',      'mapconverter', 's_and_t',    'sportsim',
3294        'stmwpp',   'text'
3295      ],
3296      'vcf'  => ['vcard'],
3297      'html' => ['html'],
3298      'dat'  => ['cambridge'],
3299      'gpb'  => ['axim_gpb'],
3300      'kwf'  => ['kwf2'],
3301      'psp'  => ['psp'],
3302      'usr'  => ['lowranceusr'],
3303      'mps'  => ['mapsource'],
3304      'upt'  => ['magellanx'],
3305      'smt'  => ['vitosmt'],
3306      'ktf'  => ['ktf2'],
3307      'pdb'  => [
3308        'cetus',    'copilot', 'coto',     'gcdb',
3309        'geoniche', 'gpilots', 'gpspilot', 'magnav',
3310        'mag_pdb',  'palmdoc', 'pathaway', 'quovadis'
3311      ],
3312      'wpr' => ['alanwpr'],
3313      'tpo' => [ 'tpo2', 'tpo3' ],
3314      'gdb' => ['gdb']
3315    },
3316    'filters' => {
3317      'transform' => {
3318        'options' => {
3319          'del' => {
3320            'desc'  => 'Delete source data after transformation',
3321            'type'  => 'boolean',
3322            'valid' => ['N']
3323          },
3324          'wpt' => {
3325            'desc' =>
3326             'Transform track(s) or route(s) into waypoint(s) [R/T]',
3327            'type'  => 'string',
3328            'valid' => []
3329          },
3330          'trk' => {
3331            'desc' =>
3332             'Transform waypoint(s) or route(s) into tracks(s) [W/R]',
3333            'type'  => 'string',
3334            'valid' => []
3335          },
3336          'rte' => {
3337            'desc' =>
3338             'Transform waypoint(s) or track(s) into route(s) [W/T]',
3339            'type'  => 'string',
3340            'valid' => []
3341          }
3342        },
3343        'desc' =>
3344         'Transform waypoints into a route, tracks into routes, ...'
3345      },
3346      'discard' => {
3347        'options' => {
3348          'vdop' => {
3349            'desc'  => 'Suppress waypoints with higher vdop',
3350            'type'  => 'float',
3351            'valid' => ['-1.0']
3352          },
3353          'hdopandvdop' => {
3354            'desc'  => 'Link hdop and vdop supression with AND',
3355            'type'  => 'boolean',
3356            'valid' => []
3357          },
3358          'hdop' => {
3359            'desc'  => 'Suppress waypoints with higher hdop',
3360            'type'  => 'float',
3361            'valid' => ['-1.0']
3362          }
3363        },
3364        'desc' => 'Remove unreliable points with high hdop or vdop'
3365      },
3366      'stack' => {
3367        'options' => {
3368          'discard' => {
3369            'desc'  => '(pop) Discard top of stack',
3370            'type'  => 'boolean',
3371            'valid' => []
3372          },
3373          'depth' => {
3374            'desc'  => '(swap) Item to use (default=1)',
3375            'type'  => 'integer',
3376            'valid' => [ '', '0' ]
3377          },
3378          'append' => {
3379            'desc'  => '(pop) Append list',
3380            'type'  => 'boolean',
3381            'valid' => []
3382          },
3383          'copy' => {
3384            'desc'  => '(push) Copy waypoint list',
3385            'type'  => 'boolean',
3386            'valid' => []
3387          },
3388          'push' => {
3389            'desc'  => 'Push waypoint list onto stack',
3390            'type'  => 'boolean',
3391            'valid' => []
3392          },
3393          'replace' => {
3394            'desc'  => '(pop) Replace list (default)',
3395            'type'  => 'boolean',
3396            'valid' => []
3397          },
3398          'swap' => {
3399            'desc'  => 'Swap waypoint list with <depth> item on stack',
3400            'type'  => 'boolean',
3401            'valid' => []
3402          },
3403          'pop' => {
3404            'desc'  => 'Pop waypoint list from stack',
3405            'type'  => 'boolean',
3406            'valid' => []
3407          }
3408        },
3409        'desc' => 'Save and restore waypoint lists'
3410      },
3411      'track' => {
3412        'options' => {
3413          'course' => {
3414            'desc'  => 'Synthesize course',
3415            'type'  => 'boolean',
3416            'valid' => []
3417          },
3418          'stop' => {
3419            'desc'  => 'Use only track points before this timestamp',
3420            'type'  => 'integer',
3421            'valid' => []
3422          },
3423          'move' => {
3424            'desc'  => 'Correct trackpoint timestamps by a delta',
3425            'type'  => 'string',
3426            'valid' => []
3427          },
3428          'fix' => {
3429            'desc'  => 'Synthesize GPS fixes (PPS, DGPS, 3D, 2D, NONE)',
3430            'type'  => 'string',
3431            'valid' => []
3432          },
3433          'name' => {
3434            'desc' =>
3435             'Use only track(s) where title matches given name',
3436            'type'  => 'string',
3437            'valid' => []
3438          },
3439          'merge' => {
3440            'desc'  => 'Merge multiple tracks for the same way',
3441            'type'  => 'string',
3442            'valid' => []
3443          },
3444          'speed' => {
3445            'desc'  => 'Synthesize speed',
3446            'type'  => 'boolean',
3447            'valid' => []
3448          },
3449          'sdistance' => {
3450            'desc'  => 'Split by distance',
3451            'type'  => 'string',
3452            'valid' => []
3453          },
3454          'title' => {
3455            'desc'  => 'Basic title for new track(s)',
3456            'type'  => 'string',
3457            'valid' => []
3458          },
3459          'pack' => {
3460            'desc'  => 'Pack all tracks into one',
3461            'type'  => 'boolean',
3462            'valid' => []
3463          },
3464          'split' => {
3465            'desc'  => 'Split by date or time interval (see README)',
3466            'type'  => 'string',
3467            'valid' => []
3468          },
3469          'start' => {
3470            'desc'  => 'Use only track points after this timestamp',
3471            'type'  => 'integer',
3472            'valid' => []
3473          }
3474        },
3475        'desc' => 'Manipulate track lists'
3476      },
3477      'radius' => {
3478        'options' => {
3479          'nosort' => {
3480            'desc'  => 'Inhibit sort by distance to center',
3481            'type'  => 'boolean',
3482            'valid' => []
3483          },
3484          'maxcount' => {
3485            'desc'  => 'Output no more than this number of points',
3486            'type'  => 'integer',
3487            'valid' => [ '', '1' ]
3488          },
3489          'asroute' => {
3490            'desc'  => 'Put resulting waypoints in route of this name',
3491            'type'  => 'string',
3492            'valid' => []
3493          },
3494          'distance' => {
3495            'desc'  => 'Maximum distance from center',
3496            'type'  => 'float',
3497            'valid' => []
3498          },
3499          'lat' => {
3500            'desc'  => 'Latitude for center point (D.DDDDD)',
3501            'type'  => 'float',
3502            'valid' => []
3503          },
3504          'lon' => {
3505            'desc'  => 'Longitude for center point (D.DDDDD)',
3506            'type'  => 'float',
3507            'valid' => []
3508          },
3509          'exclude' => {
3510            'desc'  => 'Exclude points close to center',
3511            'type'  => 'boolean',
3512            'valid' => []
3513          }
3514        },
3515        'desc' => 'Include Only Points Within Radius'
3516      },
3517      'position' => {
3518        'options' => {
3519          'distance' => {
3520            'desc'  => 'Maximum positional distance',
3521            'type'  => 'float',
3522            'valid' => []
3523          },
3524          'all' => {
3525            'desc'  => 'Suppress all points close to other points',
3526            'type'  => 'boolean',
3527            'valid' => []
3528          }
3529        },
3530        'desc' => 'Remove Points Within Distance'
3531      },
3532      'reverse'  => { 'desc' => 'Reverse stops within routes' },
3533      'simplify' => {
3534        'options' => {
3535          'length' => {
3536            'desc'  => 'Use arclength error',
3537            'type'  => 'boolean',
3538            'valid' => []
3539          },
3540          'count' => {
3541            'desc'  => 'Maximum number of points in route',
3542            'type'  => 'integer',
3543            'valid' => [ '', '1' ]
3544          },
3545          'crosstrack' => {
3546            'desc'  => 'Use cross-track error (default)',
3547            'type'  => 'boolean',
3548            'valid' => []
3549          },
3550          'error' => {
3551            'desc'  => 'Maximum error',
3552            'type'  => 'string',
3553            'valid' => [ '', '0' ]
3554          }
3555        },
3556        'desc' => 'Simplify routes'
3557      },
3558      'sort' => {
3559        'options' => {
3560          'shortname' => {
3561            'desc'  => 'Sort by waypoint short name',
3562            'type'  => 'boolean',
3563            'valid' => []
3564          },
3565          'time' => {
3566            'desc'  => 'Sort by time',
3567            'type'  => 'boolean',
3568            'valid' => []
3569          },
3570          'gcid' => {
3571            'desc'  => 'Sort by numeric geocache ID',
3572            'type'  => 'boolean',
3573            'valid' => []
3574          },
3575          'description' => {
3576            'desc'  => 'Sort by waypoint description',
3577            'type'  => 'boolean',
3578            'valid' => []
3579          }
3580        },
3581        'desc' => 'Rearrange waypoints by resorting'
3582      },
3583      'nuketypes' => {
3584        'options' => {
3585          'waypoints' => {
3586            'desc'  => 'Remove all waypoints from data stream',
3587            'type'  => 'boolean',
3588            'valid' => ['0']
3589          },
3590          'routes' => {
3591            'desc'  => 'Remove all routes from data stream',
3592            'type'  => 'boolean',
3593            'valid' => ['0']
3594          },
3595          'tracks' => {
3596            'desc'  => 'Remove all tracks from data stream',
3597            'type'  => 'boolean',
3598            'valid' => ['0']
3599          }
3600        },
3601        'desc' => 'Remove all waypoints, tracks, or routes'
3602      },
3603      'interpolate' => {
3604        'options' => {
3605          'distance' => {
3606            'desc'  => 'Distance interval in miles or kilometers',
3607            'type'  => 'string',
3608            'valid' => []
3609          },
3610          'time' => {
3611            'desc'  => 'Time interval in seconds',
3612            'type'  => 'integer',
3613            'valid' => [ '', '0' ]
3614          },
3615          'route' => {
3616            'desc'  => 'Interpolate routes instead',
3617            'type'  => 'boolean',
3618            'valid' => []
3619          }
3620        },
3621        'desc' => 'Interpolate between trackpoints'
3622      },
3623      'duplicate' => {
3624        'options' => {
3625          'shortname' => {
3626            'desc'  => 'Suppress duplicate waypoints based on name',
3627            'type'  => 'boolean',
3628            'valid' => []
3629          },
3630          'correct' => {
3631            'desc'  => 'Use coords from duplicate points',
3632            'type'  => 'boolean',
3633            'valid' => []
3634          },
3635          'location' => {
3636            'desc'  => 'Suppress duplicate waypoint based on coords',
3637            'type'  => 'boolean',
3638            'valid' => []
3639          },
3640          'all' => {
3641            'desc'  => 'Suppress all instances of duplicates',
3642            'type'  => 'boolean',
3643            'valid' => []
3644          }
3645        },
3646        'desc' => 'Remove Duplicates'
3647      },
3648      'polygon' => {
3649        'options' => {
3650          'file' => {
3651            'desc'  => 'File containing vertices of polygon',
3652            'type'  => 'file',
3653            'valid' => []
3654          },
3655          'exclude' => {
3656            'desc'  => 'Exclude points inside the polygon',
3657            'type'  => 'boolean',
3658            'valid' => []
3659          }
3660        },
3661        'desc' => 'Include Only Points Inside Polygon'
3662      },
3663      'arc' => {
3664        'options' => {
3665          'distance' => {
3666            'desc'  => 'Maximum distance from arc',
3667            'type'  => 'float',
3668            'valid' => []
3669          },
3670          'points' => {
3671            'desc'  => 'Use distance from vertices not lines',
3672            'type'  => 'boolean',
3673            'valid' => []
3674          },
3675          'file' => {
3676            'desc'  => 'File containing vertices of arc',
3677            'type'  => 'file',
3678            'valid' => []
3679          },
3680          'exclude' => {
3681            'desc'  => 'Exclude points close to the arc',
3682            'type'  => 'boolean',
3683            'valid' => []
3684          }
3685        },
3686        'desc' => 'Include Only Points Within Distance of Arc'
3687      }
3688    }
3689  };
3690
3691  my $ref_info135 = {
3692    'formats' => {
3693      'google' => {
3694        'nmodes' => 8,
3695        'parent' => 'google',
3696        'desc'   => 'Google Maps XML',
3697        'modes'  => '--r---',
3698        'ext'    => 'xml',
3699        'doclink' =>
3700         'http://www.gpsbabel.org/htmldoc-development/fmt_google.html'
3701      },
3702      'nmn4' => {
3703        'nmodes'  => 3,
3704        'parent'  => 'nmn4',
3705        'options' => {
3706          'index' => {
3707            'min' => '1',
3708            'desc' =>
3709             'Index of route to write (if more the one in source)',
3710            'max'     => '',
3711            'default' => '',
3712            'type'    => 'integer',
3713            'doclink' =>
3714             'http://www.gpsbabel.org/htmldoc-development/fmt_nmn4.html#fmt_nmn4_o_index'
3715          }
3716        },
3717        'desc'  => 'Navigon Mobile Navigator .rte files',
3718        'modes' => '----rw',
3719        'ext'   => 'rte',
3720        'doclink' =>
3721         'http://www.gpsbabel.org/htmldoc-development/fmt_nmn4.html'
3722      },
3723      'tpg' => {
3724        'nmodes'  => 48,
3725        'parent'  => 'tpg',
3726        'options' => {
3727          'datum' => {
3728            'min'     => '',
3729            'desc'    => 'Datum (default=NAD27)',
3730            'max'     => '',
3731            'default' => 'N. America 1927 mean',
3732            'type'    => 'string',
3733            'doclink' =>
3734             'http://www.gpsbabel.org/htmldoc-development/fmt_tpg.html#fmt_tpg_o_datum'
3735          }
3736        },
3737        'desc'  => 'National Geographic Topo .tpg (waypoints)',
3738        'modes' => 'rw----',
3739        'ext'   => 'tpg',
3740        'doclink' =>
3741         'http://www.gpsbabel.org/htmldoc-development/fmt_tpg.html'
3742      },
3743      'mxf' => {
3744        'nmodes'  => 48,
3745        'parent'  => 'xcsv',
3746        'options' => {
3747          'snunique' => {
3748            'min'     => '',
3749            'desc'    => 'Make synth. shortnames unique',
3750            'max'     => '',
3751            'default' => '',
3752            'type'    => 'boolean',
3753            'doclink' =>
3754             'http://www.gpsbabel.org/htmldoc-development/fmt_mxf.html#fmt_mxf_o_snunique'
3755          },
3756          'snwhite' => {
3757            'min'     => '',
3758            'desc'    => 'Allow whitespace synth. shortnames',
3759            'max'     => '',
3760            'default' => '',
3761            'type'    => 'boolean',
3762            'doclink' =>
3763             'http://www.gpsbabel.org/htmldoc-development/fmt_mxf.html#fmt_mxf_o_snwhite'
3764          },
3765          'urlbase' => {
3766            'min'     => '',
3767            'desc'    => 'Basename prepended to URL on output',
3768            'max'     => '',
3769            'default' => '',
3770            'type'    => 'string',
3771            'doclink' =>
3772             'http://www.gpsbabel.org/htmldoc-development/fmt_mxf.html#fmt_mxf_o_urlbase'
3773          },
3774          'snupper' => {
3775            'min'     => '',
3776            'desc'    => 'UPPERCASE synth. shortnames',
3777            'max'     => '',
3778            'default' => '',
3779            'type'    => 'boolean',
3780            'doclink' =>
3781             'http://www.gpsbabel.org/htmldoc-development/fmt_mxf.html#fmt_mxf_o_snupper'
3782          },
3783          'datum' => {
3784            'min'     => '',
3785            'desc'    => 'GPS datum (def. WGS 84)',
3786            'max'     => '',
3787            'default' => 'WGS 84',
3788            'type'    => 'string',
3789            'doclink' =>
3790             'http://www.gpsbabel.org/htmldoc-development/fmt_mxf.html#fmt_mxf_o_datum'
3791          },
3792          'snlen' => {
3793            'min'     => '1',
3794            'desc'    => 'Max synthesized shortname length',
3795            'max'     => '',
3796            'default' => '',
3797            'type'    => 'integer',
3798            'doclink' =>
3799             'http://www.gpsbabel.org/htmldoc-development/fmt_mxf.html#fmt_mxf_o_snlen'
3800          },
3801          'prefer_shortnames' => {
3802            'min'     => '',
3803            'desc'    => 'Use shortname instead of description',
3804            'max'     => '',
3805            'default' => '',
3806            'type'    => 'boolean',
3807            'doclink' =>
3808             'http://www.gpsbabel.org/htmldoc-development/fmt_mxf.html#fmt_mxf_o_prefer_shortnames'
3809          }
3810        },
3811        'desc'  => 'MapTech Exchange Format',
3812        'modes' => 'rw----',
3813        'ext'   => 'mxf',
3814        'doclink' =>
3815         'http://www.gpsbabel.org/htmldoc-development/fmt_mxf.html'
3816      },
3817      'igc' => {
3818        'nmodes'  => 15,
3819        'parent'  => 'igc',
3820        'options' => {
3821          'timeadj' => {
3822            'min' => '',
3823            'desc' =>
3824             '(integer sec or \'auto\') Barograph to GPS time diff',
3825            'max'     => '',
3826            'default' => '',
3827            'type'    => 'string',
3828            'doclink' =>
3829             'http://www.gpsbabel.org/htmldoc-development/fmt_igc.html#fmt_igc_o_timeadj'
3830          }
3831        },
3832        'desc'  => 'FAI/IGC Flight Recorder Data Format',
3833        'modes' => '--rwrw',
3834        'doclink' =>
3835         'http://www.gpsbabel.org/htmldoc-development/fmt_igc.html'
3836      },
3837      'magellan' => {
3838        'nmodes'  => 63,
3839        'parent'  => 'magellan',
3840        'options' => {
3841          'nukewpt' => {
3842            'min'     => '',
3843            'desc'    => 'Delete all waypoints',
3844            'max'     => '',
3845            'default' => '',
3846            'type'    => 'boolean',
3847            'doclink' =>
3848             'http://www.gpsbabel.org/htmldoc-development/fmt_magellan.html#fmt_magellan_o_nukewpt'
3849          },
3850          'noack' => {
3851            'min'     => '',
3852            'desc'    => 'Suppress use of handshaking in name of speed',
3853            'max'     => '',
3854            'default' => '',
3855            'type'    => 'boolean',
3856            'doclink' =>
3857             'http://www.gpsbabel.org/htmldoc-development/fmt_magellan.html#fmt_magellan_o_noack'
3858          },
3859          'baud' => {
3860            'min'     => '',
3861            'desc'    => 'Numeric value of bitrate (baud=4800)',
3862            'max'     => '',
3863            'default' => '4800',
3864            'type'    => 'integer',
3865            'doclink' =>
3866             'http://www.gpsbabel.org/htmldoc-development/fmt_magellan.html#fmt_magellan_o_baud'
3867          },
3868          'deficon' => {
3869            'min'     => '',
3870            'desc'    => 'Default icon name',
3871            'max'     => '',
3872            'default' => '',
3873            'type'    => 'string',
3874            'doclink' =>
3875             'http://www.gpsbabel.org/htmldoc-development/fmt_magellan.html#fmt_magellan_o_deficon'
3876          },
3877          'maxcmts' => {
3878            'min'  => '',
3879            'desc' => 'Max number of comments to write (maxcmts=200)',
3880            'max'  => '',
3881            'default' => '200',
3882            'type'    => 'integer',
3883            'doclink' =>
3884             'http://www.gpsbabel.org/htmldoc-development/fmt_magellan.html#fmt_magellan_o_maxcmts'
3885          }
3886        },
3887        'desc'  => 'Magellan SD files (as for Meridian)',
3888        'modes' => 'rwrwrw',
3889        'doclink' =>
3890         'http://www.gpsbabel.org/htmldoc-development/fmt_magellan.html'
3891      },
3892      'lowranceusr' => {
3893        'nmodes'  => 63,
3894        'parent'  => 'lowranceusr',
3895        'options' => {
3896          'merge' => {
3897            'min'     => '',
3898            'desc'    => '(USR output) Merge into one segmented track',
3899            'max'     => '',
3900            'default' => '',
3901            'type'    => 'boolean',
3902            'doclink' =>
3903             'http://www.gpsbabel.org/htmldoc-development/fmt_lowranceusr.html#fmt_lowranceusr_o_merge'
3904          },
3905          'writeasicons' => {
3906            'min'     => '',
3907            'desc'    => 'Treat waypoints as icons on write',
3908            'max'     => '',
3909            'default' => '',
3910            'type'    => 'boolean',
3911            'doclink' =>
3912             'http://www.gpsbabel.org/htmldoc-development/fmt_lowranceusr.html#fmt_lowranceusr_o_writeasicons'
3913          },
3914          'ignoreicons' => {
3915            'min'     => '',
3916            'desc'    => 'Ignore event marker icons on read',
3917            'max'     => '',
3918            'default' => '',
3919            'type'    => 'boolean',
3920            'doclink' =>
3921             'http://www.gpsbabel.org/htmldoc-development/fmt_lowranceusr.html#fmt_lowranceusr_o_ignoreicons'
3922          },
3923          'break' => {
3924            'min'  => '',
3925            'desc' => '(USR input) Break segments into separate tracks',
3926            'max'  => '',
3927            'default' => '',
3928            'type'    => 'boolean',
3929            'doclink' =>
3930             'http://www.gpsbabel.org/htmldoc-development/fmt_lowranceusr.html#fmt_lowranceusr_o_break'
3931          }
3932        },
3933        'desc'  => 'Lowrance USR',
3934        'modes' => 'rwrwrw',
3935        'ext'   => 'usr',
3936        'doclink' =>
3937         'http://www.gpsbabel.org/htmldoc-development/fmt_lowranceusr.html'
3938      },
3939      'dmtlog' => {
3940        'nmodes'  => 60,
3941        'parent'  => 'dmtlog',
3942        'options' => {
3943          'index' => {
3944            'min'     => '1',
3945            'desc'    => 'Index of track (if more the one in source)',
3946            'max'     => '',
3947            'default' => '1',
3948            'type'    => 'integer',
3949            'doclink' =>
3950             'http://www.gpsbabel.org/htmldoc-development/fmt_dmtlog.html#fmt_dmtlog_o_index'
3951          }
3952        },
3953        'desc'  => 'TrackLogs digital mapping (.trl)',
3954        'modes' => 'rwrw--',
3955        'ext'   => 'trl',
3956        'doclink' =>
3957         'http://www.gpsbabel.org/htmldoc-development/fmt_dmtlog.html'
3958      },
3959      'vitovtt' => {
3960        'nmodes' => 8,
3961        'parent' => 'vitovtt',
3962        'desc'   => 'Vito SmartMap tracks (.vtt)',
3963        'modes'  => '--r---',
3964        'ext'    => 'vtt',
3965        'doclink' =>
3966         'http://www.gpsbabel.org/htmldoc-development/fmt_vitovtt.html'
3967      },
3968      'garmin' => {
3969        'options' => {
3970          'snwhite' => {
3971            'min'     => '',
3972            'desc'    => 'Allow whitespace synth. shortnames',
3973            'max'     => '',
3974            'default' => '',
3975            'type'    => 'boolean',
3976            'doclink' =>
3977             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin.html#fmt_garmin_o_snwhite'
3978          },
3979          'power_off' => {
3980            'min'     => '',
3981            'desc'    => 'Command unit to power itself down',
3982            'max'     => '',
3983            'default' => '',
3984            'type'    => 'boolean',
3985            'doclink' =>
3986             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin.html#fmt_garmin_o_power_off'
3987          },
3988          'category' => {
3989            'min'     => '1',
3990            'desc'    => 'Category number to use for written waypoints',
3991            'max'     => '16',
3992            'default' => '',
3993            'type'    => 'integer',
3994            'doclink' =>
3995             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin.html#fmt_garmin_o_category'
3996          },
3997          'deficon' => {
3998            'min'     => '',
3999            'desc'    => 'Default icon name',
4000            'max'     => '',
4001            'default' => '',
4002            'type'    => 'string',
4003            'doclink' =>
4004             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin.html#fmt_garmin_o_deficon'
4005          },
4006          'snlen' => {
4007            'min'     => '1',
4008            'desc'    => 'Length of generated shortnames',
4009            'max'     => '',
4010            'default' => '',
4011            'type'    => 'integer',
4012            'doclink' =>
4013             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin.html#fmt_garmin_o_snlen'
4014          },
4015          'get_posn' => {
4016            'min'     => '',
4017            'desc'    => 'Return current position as a waypoint',
4018            'max'     => '',
4019            'default' => '',
4020            'type'    => 'boolean',
4021            'doclink' =>
4022             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin.html#fmt_garmin_o_get_posn'
4023          }
4024        }
4025      },
4026      'bcr' => {
4027        'nmodes'  => 3,
4028        'parent'  => 'bcr',
4029        'options' => {
4030          'index' => {
4031            'min' => '1',
4032            'desc' =>
4033             'Index of route to write (if more the one in source)',
4034            'max'     => '',
4035            'default' => '',
4036            'type'    => 'integer',
4037            'doclink' =>
4038             'http://www.gpsbabel.org/htmldoc-development/fmt_bcr.html#fmt_bcr_o_index'
4039          },
4040          'radius' => {
4041            'min' => '',
4042            'desc' =>
4043             'Radius of our big earth (default 6371000 meters)',
4044            'max'     => '',
4045            'default' => '6371000',
4046            'type'    => 'float',
4047            'doclink' =>
4048             'http://www.gpsbabel.org/htmldoc-development/fmt_bcr.html#fmt_bcr_o_radius'
4049          },
4050          'name' => {
4051            'min'     => '',
4052            'desc'    => 'New name for the route',
4053            'max'     => '',
4054            'default' => '',
4055            'type'    => 'string',
4056            'doclink' =>
4057             'http://www.gpsbabel.org/htmldoc-development/fmt_bcr.html#fmt_bcr_o_name'
4058          },
4059          'prefer_shortnames' => {
4060            'min'     => '',
4061            'desc'    => 'Use shortname instead of description',
4062            'max'     => '',
4063            'default' => '',
4064            'type'    => 'boolean',
4065            'doclink' =>
4066             'http://www.gpsbabel.org/htmldoc-development/fmt_bcr.html#fmt_bcr_o_prefer_shortnames'
4067          }
4068        },
4069        'desc'  => 'Motorrad Routenplaner (Map&Guide) .bcr files',
4070        'modes' => '----rw',
4071        'ext'   => 'bcr',
4072        'doclink' =>
4073         'http://www.gpsbabel.org/htmldoc-development/fmt_bcr.html'
4074      },
4075      'msroute' => {
4076        'nmodes' => 2,
4077        'parent' => 'msroute',
4078        'desc'   => 'Microsoft Streets and Trips (pin/route reader)',
4079        'modes'  => '----r-',
4080        'ext'    => 'est',
4081        'doclink' =>
4082         'http://www.gpsbabel.org/htmldoc-development/fmt_msroute.html'
4083      },
4084      'csv' => {
4085        'nmodes'  => 48,
4086        'parent'  => 'xcsv',
4087        'options' => {
4088          'snunique' => {
4089            'min'     => '',
4090            'desc'    => 'Make synth. shortnames unique',
4091            'max'     => '',
4092            'default' => '',
4093            'type'    => 'boolean',
4094            'doclink' =>
4095             'http://www.gpsbabel.org/htmldoc-development/fmt_csv.html#fmt_csv_o_snunique'
4096          },
4097          'snwhite' => {
4098            'min'     => '',
4099            'desc'    => 'Allow whitespace synth. shortnames',
4100            'max'     => '',
4101            'default' => '',
4102            'type'    => 'boolean',
4103            'doclink' =>
4104             'http://www.gpsbabel.org/htmldoc-development/fmt_csv.html#fmt_csv_o_snwhite'
4105          },
4106          'urlbase' => {
4107            'min'     => '',
4108            'desc'    => 'Basename prepended to URL on output',
4109            'max'     => '',
4110            'default' => '',
4111            'type'    => 'string',
4112            'doclink' =>
4113             'http://www.gpsbabel.org/htmldoc-development/fmt_csv.html#fmt_csv_o_urlbase'
4114          },
4115          'snupper' => {
4116            'min'     => '',
4117            'desc'    => 'UPPERCASE synth. shortnames',
4118            'max'     => '',
4119            'default' => '',
4120            'type'    => 'boolean',
4121            'doclink' =>
4122             'http://www.gpsbabel.org/htmldoc-development/fmt_csv.html#fmt_csv_o_snupper'
4123          },
4124          'datum' => {
4125            'min'     => '',
4126            'desc'    => 'GPS datum (def. WGS 84)',
4127            'max'     => '',
4128            'default' => 'WGS 84',
4129            'type'    => 'string',
4130            'doclink' =>
4131             'http://www.gpsbabel.org/htmldoc-development/fmt_csv.html#fmt_csv_o_datum'
4132          },
4133          'snlen' => {
4134            'min'     => '1',
4135            'desc'    => 'Max synthesized shortname length',
4136            'max'     => '',
4137            'default' => '',
4138            'type'    => 'integer',
4139            'doclink' =>
4140             'http://www.gpsbabel.org/htmldoc-development/fmt_csv.html#fmt_csv_o_snlen'
4141          },
4142          'prefer_shortnames' => {
4143            'min'     => '',
4144            'desc'    => 'Use shortname instead of description',
4145            'max'     => '',
4146            'default' => '',
4147            'type'    => 'boolean',
4148            'doclink' =>
4149             'http://www.gpsbabel.org/htmldoc-development/fmt_csv.html#fmt_csv_o_prefer_shortnames'
4150          }
4151        },
4152        'desc'  => 'Comma separated values',
4153        'modes' => 'rw----',
4154        'doclink' =>
4155         'http://www.gpsbabel.org/htmldoc-development/fmt_csv.html'
4156      },
4157      'tomtom' => {
4158        'nmodes' => 48,
4159        'parent' => 'tomtom',
4160        'desc'   => 'TomTom POI file (.ov2)',
4161        'modes'  => 'rw----',
4162        'ext'    => 'ov2',
4163        'doclink' =>
4164         'http://www.gpsbabel.org/htmldoc-development/fmt_tomtom.html'
4165      },
4166      'gcdb' => {
4167        'nmodes' => 48,
4168        'parent' => 'gcdb',
4169        'desc'   => 'GeocachingDB for Palm/OS',
4170        'modes'  => 'rw----',
4171        'ext'    => 'pdb',
4172        'doclink' =>
4173         'http://www.gpsbabel.org/htmldoc-development/fmt_gcdb.html'
4174      },
4175      'gpssim' => {
4176        'nmodes'  => 21,
4177        'parent'  => 'gpssim',
4178        'options' => {
4179          'wayptspd' => {
4180            'min'     => '',
4181            'desc'    => 'Default speed for waypoints (knots/hr)',
4182            'max'     => '',
4183            'default' => '',
4184            'type'    => 'float',
4185            'doclink' =>
4186             'http://www.gpsbabel.org/htmldoc-development/fmt_gpssim.html#fmt_gpssim_o_wayptspd'
4187          },
4188          'split' => {
4189            'min'     => '',
4190            'desc'    => 'Split input into separate files',
4191            'max'     => '',
4192            'default' => '',
4193            'type'    => 'boolean',
4194            'doclink' =>
4195             'http://www.gpsbabel.org/htmldoc-development/fmt_gpssim.html#fmt_gpssim_o_split'
4196          }
4197        },
4198        'desc'  => 'Franson GPSGate Simulation',
4199        'modes' => '-w-w-w',
4200        'ext'   => 'gpssim',
4201        'doclink' =>
4202         'http://www.gpsbabel.org/htmldoc-development/fmt_gpssim.html'
4203      },
4204      'yahoo' => {
4205        'nmodes'  => 32,
4206        'parent'  => 'yahoo',
4207        'options' => {
4208          'addrsep' => {
4209            'min' => '',
4210            'desc' =>
4211             'String to separate concatenated address fields (default=", ")',
4212            'max'     => '',
4213            'default' => ', ',
4214            'type'    => 'string',
4215            'doclink' =>
4216             'http://www.gpsbabel.org/htmldoc-development/fmt_yahoo.html#fmt_yahoo_o_addrsep'
4217          }
4218        },
4219        'desc'  => 'Yahoo Geocode API data',
4220        'modes' => 'r-----',
4221        'doclink' =>
4222         'http://www.gpsbabel.org/htmldoc-development/fmt_yahoo.html'
4223      },
4224      'wbt-bin' => {
4225        'nmodes' => 8,
4226        'parent' => 'wbt-bin',
4227        'desc'   => 'Wintec WBT-100/200 Binary File Format',
4228        'modes'  => '--r---',
4229        'ext'    => 'bin',
4230        'doclink' =>
4231         'http://www.gpsbabel.org/htmldoc-development/fmt_wbt-bin.html'
4232      },
4233      'stmsdf' => {
4234        'nmodes'  => 15,
4235        'parent'  => 'stmsdf',
4236        'options' => {
4237          'index' => {
4238            'min'     => '1',
4239            'desc'    => 'Index of route (if more the one in source)',
4240            'max'     => '',
4241            'default' => '1',
4242            'type'    => 'integer',
4243            'doclink' =>
4244             'http://www.gpsbabel.org/htmldoc-development/fmt_stmsdf.html#fmt_stmsdf_o_index'
4245          }
4246        },
4247        'desc'  => 'Suunto Trek Manager (STM) .sdf files',
4248        'modes' => '--rwrw',
4249        'ext'   => 'sdf',
4250        'doclink' =>
4251         'http://www.gpsbabel.org/htmldoc-development/fmt_stmsdf.html'
4252      },
4253      'easygps' => {
4254        'nmodes' => 48,
4255        'parent' => 'easygps',
4256        'desc'   => 'EasyGPS binary format',
4257        'modes'  => 'rw----',
4258        'ext'    => 'loc',
4259        'doclink' =>
4260         'http://www.gpsbabel.org/htmldoc-development/fmt_easygps.html'
4261      },
4262      'tomtom_itn' => {
4263        'nmodes'  => 3,
4264        'parent'  => 'xcsv',
4265        'options' => {
4266          'snunique' => {
4267            'min'     => '',
4268            'desc'    => 'Make synth. shortnames unique',
4269            'max'     => '',
4270            'default' => '',
4271            'type'    => 'boolean',
4272            'doclink' =>
4273             'http://www.gpsbabel.org/htmldoc-development/fmt_tomtom_itn.html#fmt_tomtom_itn_o_snunique'
4274          },
4275          'snwhite' => {
4276            'min'     => '',
4277            'desc'    => 'Allow whitespace synth. shortnames',
4278            'max'     => '',
4279            'default' => '',
4280            'type'    => 'boolean',
4281            'doclink' =>
4282             'http://www.gpsbabel.org/htmldoc-development/fmt_tomtom_itn.html#fmt_tomtom_itn_o_snwhite'
4283          },
4284          'urlbase' => {
4285            'min'     => '',
4286            'desc'    => 'Basename prepended to URL on output',
4287            'max'     => '',
4288            'default' => '',
4289            'type'    => 'string',
4290            'doclink' =>
4291             'http://www.gpsbabel.org/htmldoc-development/fmt_tomtom_itn.html#fmt_tomtom_itn_o_urlbase'
4292          },
4293          'snupper' => {
4294            'min'     => '',
4295            'desc'    => 'UPPERCASE synth. shortnames',
4296            'max'     => '',
4297            'default' => '',
4298            'type'    => 'boolean',
4299            'doclink' =>
4300             'http://www.gpsbabel.org/htmldoc-development/fmt_tomtom_itn.html#fmt_tomtom_itn_o_snupper'
4301          },
4302          'datum' => {
4303            'min'     => '',
4304            'desc'    => 'GPS datum (def. WGS 84)',
4305            'max'     => '',
4306            'default' => 'WGS 84',
4307            'type'    => 'string',
4308            'doclink' =>
4309             'http://www.gpsbabel.org/htmldoc-development/fmt_tomtom_itn.html#fmt_tomtom_itn_o_datum'
4310          },
4311          'snlen' => {
4312            'min'     => '1',
4313            'desc'    => 'Max synthesized shortname length',
4314            'max'     => '',
4315            'default' => '',
4316            'type'    => 'integer',
4317            'doclink' =>
4318             'http://www.gpsbabel.org/htmldoc-development/fmt_tomtom_itn.html#fmt_tomtom_itn_o_snlen'
4319          },
4320          'prefer_shortnames' => {
4321            'min'     => '',
4322            'desc'    => 'Use shortname instead of description',
4323            'max'     => '',
4324            'default' => '',
4325            'type'    => 'boolean',
4326            'doclink' =>
4327             'http://www.gpsbabel.org/htmldoc-development/fmt_tomtom_itn.html#fmt_tomtom_itn_o_prefer_shortnames'
4328          }
4329        },
4330        'desc'  => 'TomTom Itineraries (.itn)',
4331        'modes' => '----rw',
4332        'ext'   => 'itn',
4333        'doclink' =>
4334         'http://www.gpsbabel.org/htmldoc-development/fmt_tomtom_itn.html'
4335      },
4336      'openoffice' => {
4337        'nmodes'  => 48,
4338        'parent'  => 'xcsv',
4339        'options' => {
4340          'snunique' => {
4341            'min'     => '',
4342            'desc'    => 'Make synth. shortnames unique',
4343            'max'     => '',
4344            'default' => '',
4345            'type'    => 'boolean',
4346            'doclink' =>
4347             'http://www.gpsbabel.org/htmldoc-development/fmt_openoffice.html#fmt_openoffice_o_snunique'
4348          },
4349          'snwhite' => {
4350            'min'     => '',
4351            'desc'    => 'Allow whitespace synth. shortnames',
4352            'max'     => '',
4353            'default' => '',
4354            'type'    => 'boolean',
4355            'doclink' =>
4356             'http://www.gpsbabel.org/htmldoc-development/fmt_openoffice.html#fmt_openoffice_o_snwhite'
4357          },
4358          'urlbase' => {
4359            'min'     => '',
4360            'desc'    => 'Basename prepended to URL on output',
4361            'max'     => '',
4362            'default' => '',
4363            'type'    => 'string',
4364            'doclink' =>
4365             'http://www.gpsbabel.org/htmldoc-development/fmt_openoffice.html#fmt_openoffice_o_urlbase'
4366          },
4367          'snupper' => {
4368            'min'     => '',
4369            'desc'    => 'UPPERCASE synth. shortnames',
4370            'max'     => '',
4371            'default' => '',
4372            'type'    => 'boolean',
4373            'doclink' =>
4374             'http://www.gpsbabel.org/htmldoc-development/fmt_openoffice.html#fmt_openoffice_o_snupper'
4375          },
4376          'datum' => {
4377            'min'     => '',
4378            'desc'    => 'GPS datum (def. WGS 84)',
4379            'max'     => '',
4380            'default' => 'WGS 84',
4381            'type'    => 'string',
4382            'doclink' =>
4383             'http://www.gpsbabel.org/htmldoc-development/fmt_openoffice.html#fmt_openoffice_o_datum'
4384          },
4385          'snlen' => {
4386            'min'     => '1',
4387            'desc'    => 'Max synthesized shortname length',
4388            'max'     => '',
4389            'default' => '',
4390            'type'    => 'integer',
4391            'doclink' =>
4392             'http://www.gpsbabel.org/htmldoc-development/fmt_openoffice.html#fmt_openoffice_o_snlen'
4393          },
4394          'prefer_shortnames' => {
4395            'min'     => '',
4396            'desc'    => 'Use shortname instead of description',
4397            'max'     => '',
4398            'default' => '',
4399            'type'    => 'boolean',
4400            'doclink' =>
4401             'http://www.gpsbabel.org/htmldoc-development/fmt_openoffice.html#fmt_openoffice_o_prefer_shortnames'
4402          }
4403        },
4404        'desc' =>
4405         'Tab delimited fields useful for OpenOffice, Ploticus etc.',
4406        'modes' => 'rw----',
4407        'doclink' =>
4408         'http://www.gpsbabel.org/htmldoc-development/fmt_openoffice.html'
4409      },
4410      'ktf2' => {
4411        'nmodes'  => 48,
4412        'parent'  => 'xcsv',
4413        'options' => {
4414          'snunique' => {
4415            'min'     => '',
4416            'desc'    => 'Make synth. shortnames unique',
4417            'max'     => '',
4418            'default' => '',
4419            'type'    => 'boolean',
4420            'doclink' =>
4421             'http://www.gpsbabel.org/htmldoc-development/fmt_ktf2.html#fmt_ktf2_o_snunique'
4422          },
4423          'snwhite' => {
4424            'min'     => '',
4425            'desc'    => 'Allow whitespace synth. shortnames',
4426            'max'     => '',
4427            'default' => '',
4428            'type'    => 'boolean',
4429            'doclink' =>
4430             'http://www.gpsbabel.org/htmldoc-development/fmt_ktf2.html#fmt_ktf2_o_snwhite'
4431          },
4432          'urlbase' => {
4433            'min'     => '',
4434            'desc'    => 'Basename prepended to URL on output',
4435            'max'     => '',
4436            'default' => '',
4437            'type'    => 'string',
4438            'doclink' =>
4439             'http://www.gpsbabel.org/htmldoc-development/fmt_ktf2.html#fmt_ktf2_o_urlbase'
4440          },
4441          'snupper' => {
4442            'min'     => '',
4443            'desc'    => 'UPPERCASE synth. shortnames',
4444            'max'     => '',
4445            'default' => '',
4446            'type'    => 'boolean',
4447            'doclink' =>
4448             'http://www.gpsbabel.org/htmldoc-development/fmt_ktf2.html#fmt_ktf2_o_snupper'
4449          },
4450          'datum' => {
4451            'min'     => '',
4452            'desc'    => 'GPS datum (def. WGS 84)',
4453            'max'     => '',
4454            'default' => 'WGS 84',
4455            'type'    => 'string',
4456            'doclink' =>
4457             'http://www.gpsbabel.org/htmldoc-development/fmt_ktf2.html#fmt_ktf2_o_datum'
4458          },
4459          'snlen' => {
4460            'min'     => '1',
4461            'desc'    => 'Max synthesized shortname length',
4462            'max'     => '',
4463            'default' => '',
4464            'type'    => 'integer',
4465            'doclink' =>
4466             'http://www.gpsbabel.org/htmldoc-development/fmt_ktf2.html#fmt_ktf2_o_snlen'
4467          },
4468          'prefer_shortnames' => {
4469            'min'     => '',
4470            'desc'    => 'Use shortname instead of description',
4471            'max'     => '',
4472            'default' => '',
4473            'type'    => 'boolean',
4474            'doclink' =>
4475             'http://www.gpsbabel.org/htmldoc-development/fmt_ktf2.html#fmt_ktf2_o_prefer_shortnames'
4476          }
4477        },
4478        'desc'  => 'Kartex 5 Track File',
4479        'modes' => 'rw----',
4480        'ext'   => 'ktf',
4481        'doclink' =>
4482         'http://www.gpsbabel.org/htmldoc-development/fmt_ktf2.html'
4483      },
4484      'geo' => {
4485        'nmodes'  => 48,
4486        'parent'  => 'geo',
4487        'options' => {
4488          'nuke_placer' => {
4489            'min'     => '',
4490            'desc'    => 'Omit Placer name',
4491            'max'     => '',
4492            'default' => '',
4493            'type'    => 'boolean',
4494            'doclink' =>
4495             'http://www.gpsbabel.org/htmldoc-development/fmt_geo.html#fmt_geo_o_nuke_placer'
4496          },
4497          'deficon' => {
4498            'min'     => '',
4499            'desc'    => 'Default icon name',
4500            'max'     => '',
4501            'default' => '',
4502            'type'    => 'string',
4503            'doclink' =>
4504             'http://www.gpsbabel.org/htmldoc-development/fmt_geo.html#fmt_geo_o_deficon'
4505          }
4506        },
4507        'desc'  => 'Geocaching.com .loc',
4508        'modes' => 'rw----',
4509        'ext'   => 'loc',
4510        'doclink' =>
4511         'http://www.gpsbabel.org/htmldoc-development/fmt_geo.html'
4512      },
4513      'pcx' => {
4514        'nmodes'  => 63,
4515        'parent'  => 'pcx',
4516        'options' => {
4517          'cartoexploreur' => {
4518            'min'     => '',
4519            'desc'    => 'Write tracks compatible with Carto Exploreur',
4520            'max'     => '',
4521            'default' => '',
4522            'type'    => 'boolean',
4523            'doclink' =>
4524             'http://www.gpsbabel.org/htmldoc-development/fmt_pcx.html#fmt_pcx_o_cartoexploreur'
4525          },
4526          'deficon' => {
4527            'min'     => '',
4528            'desc'    => 'Default icon name',
4529            'max'     => '',
4530            'default' => 'Waypoint',
4531            'type'    => 'string',
4532            'doclink' =>
4533             'http://www.gpsbabel.org/htmldoc-development/fmt_pcx.html#fmt_pcx_o_deficon'
4534          }
4535        },
4536        'desc'  => 'Garmin PCX5',
4537        'modes' => 'rwrwrw',
4538        'ext'   => 'pcx',
4539        'doclink' =>
4540         'http://www.gpsbabel.org/htmldoc-development/fmt_pcx.html'
4541      },
4542      'xmap' => {
4543        'nmodes'  => 48,
4544        'parent'  => 'xcsv',
4545        'options' => {
4546          'snunique' => {
4547            'min'     => '',
4548            'desc'    => 'Make synth. shortnames unique',
4549            'max'     => '',
4550            'default' => '',
4551            'type'    => 'boolean',
4552            'doclink' =>
4553             'http://www.gpsbabel.org/htmldoc-development/fmt_xmap.html#fmt_xmap_o_snunique'
4554          },
4555          'snwhite' => {
4556            'min'     => '',
4557            'desc'    => 'Allow whitespace synth. shortnames',
4558            'max'     => '',
4559            'default' => '',
4560            'type'    => 'boolean',
4561            'doclink' =>
4562             'http://www.gpsbabel.org/htmldoc-development/fmt_xmap.html#fmt_xmap_o_snwhite'
4563          },
4564          'urlbase' => {
4565            'min'     => '',
4566            'desc'    => 'Basename prepended to URL on output',
4567            'max'     => '',
4568            'default' => '',
4569            'type'    => 'string',
4570            'doclink' =>
4571             'http://www.gpsbabel.org/htmldoc-development/fmt_xmap.html#fmt_xmap_o_urlbase'
4572          },
4573          'snupper' => {
4574            'min'     => '',
4575            'desc'    => 'UPPERCASE synth. shortnames',
4576            'max'     => '',
4577            'default' => '',
4578            'type'    => 'boolean',
4579            'doclink' =>
4580             'http://www.gpsbabel.org/htmldoc-development/fmt_xmap.html#fmt_xmap_o_snupper'
4581          },
4582          'datum' => {
4583            'min'     => '',
4584            'desc'    => 'GPS datum (def. WGS 84)',
4585            'max'     => '',
4586            'default' => 'WGS 84',
4587            'type'    => 'string',
4588            'doclink' =>
4589             'http://www.gpsbabel.org/htmldoc-development/fmt_xmap.html#fmt_xmap_o_datum'
4590          },
4591          'snlen' => {
4592            'min'     => '1',
4593            'desc'    => 'Max synthesized shortname length',
4594            'max'     => '',
4595            'default' => '',
4596            'type'    => 'integer',
4597            'doclink' =>
4598             'http://www.gpsbabel.org/htmldoc-development/fmt_xmap.html#fmt_xmap_o_snlen'
4599          },
4600          'prefer_shortnames' => {
4601            'min'     => '',
4602            'desc'    => 'Use shortname instead of description',
4603            'max'     => '',
4604            'default' => '',
4605            'type'    => 'boolean',
4606            'doclink' =>
4607             'http://www.gpsbabel.org/htmldoc-development/fmt_xmap.html#fmt_xmap_o_prefer_shortnames'
4608          }
4609        },
4610        'desc'  => 'DeLorme XMap HH Native .WPT',
4611        'modes' => 'rw----',
4612        'ext'   => 'wpt',
4613        'doclink' =>
4614         'http://www.gpsbabel.org/htmldoc-development/fmt_xmap.html'
4615      },
4616      'holux' => {
4617        'nmodes' => 48,
4618        'parent' => 'holux',
4619        'desc'   => 'Holux (gm-100) .wpo Format',
4620        'modes'  => 'rw----',
4621        'ext'    => 'wpo',
4622        'doclink' =>
4623         'http://www.gpsbabel.org/htmldoc-development/fmt_holux.html'
4624      },
4625      'gpspilot' => {
4626        'nmodes'  => 48,
4627        'parent'  => 'gpspilot',
4628        'options' => {
4629          'dbname' => {
4630            'min'     => '',
4631            'desc'    => 'Database name',
4632            'max'     => '',
4633            'default' => '',
4634            'type'    => 'string',
4635            'doclink' =>
4636             'http://www.gpsbabel.org/htmldoc-development/fmt_gpspilot.html#fmt_gpspilot_o_dbname'
4637          }
4638        },
4639        'desc'  => 'GPSPilot Tracker for Palm/OS',
4640        'modes' => 'rw----',
4641        'ext'   => 'pdb',
4642        'doclink' =>
4643         'http://www.gpsbabel.org/htmldoc-development/fmt_gpspilot.html'
4644      },
4645      'wbt-tk1' => {
4646        'nmodes' => 8,
4647        'parent' => 'wbt-tk1',
4648        'desc'   => 'Wintec WBT-201/G-Rays 2 Binary File Format',
4649        'modes'  => '--r---',
4650        'ext'    => 'tk1',
4651        'doclink' =>
4652         'http://www.gpsbabel.org/htmldoc-development/fmt_wbt-tk1.html'
4653      },
4654      'kml' => {
4655        'nmodes'  => 63,
4656        'parent'  => 'kml',
4657        'options' => {
4658          'max_position_points' => {
4659            'min' => '',
4660            'desc' =>
4661             'Retain at most this number of position points  (0 = unlimited)',
4662            'max'     => '',
4663            'default' => '',
4664            'type'    => 'integer',
4665            'doclink' =>
4666             'http://www.gpsbabel.org/htmldoc-development/fmt_kml.html#fmt_kml_o_max_position_points'
4667          },
4668          'line_color' => {
4669            'min'     => '',
4670            'desc'    => 'Line color, specified in hex AABBGGRR',
4671            'max'     => '',
4672            'default' => '64eeee17',
4673            'type'    => 'string',
4674            'doclink' =>
4675             'http://www.gpsbabel.org/htmldoc-development/fmt_kml.html#fmt_kml_o_line_color'
4676          },
4677          'trackdata' => {
4678            'min' => '',
4679            'desc' =>
4680             'Include extended data for trackpoints (default = 1)',
4681            'max'     => '',
4682            'default' => '1',
4683            'type'    => 'boolean',
4684            'doclink' =>
4685             'http://www.gpsbabel.org/htmldoc-development/fmt_kml.html#fmt_kml_o_trackdata'
4686          },
4687          'line_width' => {
4688            'min'     => '',
4689            'desc'    => 'Width of lines, in pixels',
4690            'max'     => '',
4691            'default' => '6',
4692            'type'    => 'integer',
4693            'doclink' =>
4694             'http://www.gpsbabel.org/htmldoc-development/fmt_kml.html#fmt_kml_o_line_width'
4695          },
4696          'points' => {
4697            'min'     => '',
4698            'desc'    => 'Export placemarks for tracks and routes',
4699            'max'     => '',
4700            'default' => '1',
4701            'type'    => 'boolean',
4702            'doclink' =>
4703             'http://www.gpsbabel.org/htmldoc-development/fmt_kml.html#fmt_kml_o_points'
4704          },
4705          'lines' => {
4706            'min'     => '',
4707            'desc'    => 'Export linestrings for tracks and routes',
4708            'max'     => '',
4709            'default' => '1',
4710            'type'    => 'boolean',
4711            'doclink' =>
4712             'http://www.gpsbabel.org/htmldoc-development/fmt_kml.html#fmt_kml_o_lines'
4713          },
4714          'deficon' => {
4715            'min'     => '',
4716            'desc'    => 'Default icon name',
4717            'max'     => '',
4718            'default' => '',
4719            'type'    => 'string',
4720            'doclink' =>
4721             'http://www.gpsbabel.org/htmldoc-development/fmt_kml.html#fmt_kml_o_deficon'
4722          },
4723          'floating' => {
4724            'min' => '',
4725            'desc' =>
4726             'Altitudes are absolute and not clamped to ground',
4727            'max'     => '',
4728            'default' => '',
4729            'type'    => 'boolean',
4730            'doclink' =>
4731             'http://www.gpsbabel.org/htmldoc-development/fmt_kml.html#fmt_kml_o_floating'
4732          },
4733          'labels' => {
4734            'min' => '',
4735            'desc' =>
4736             'Display labels on track and routepoints  (default = 1)',
4737            'max'     => '',
4738            'default' => '1',
4739            'type'    => 'boolean',
4740            'doclink' =>
4741             'http://www.gpsbabel.org/htmldoc-development/fmt_kml.html#fmt_kml_o_labels'
4742          },
4743          'extrude' => {
4744            'min'  => '',
4745            'desc' => 'Draw extrusion line from trackpoint to ground',
4746            'max'  => '',
4747            'default' => '',
4748            'type'    => 'boolean',
4749            'doclink' =>
4750             'http://www.gpsbabel.org/htmldoc-development/fmt_kml.html#fmt_kml_o_extrude'
4751          },
4752          'units' => {
4753            'min' => '',
4754            'desc' =>
4755             'Units used when writing comments (\'s\'tatute or \'m\'etric)',
4756            'max'     => '',
4757            'default' => 's',
4758            'type'    => 'string',
4759            'doclink' =>
4760             'http://www.gpsbabel.org/htmldoc-development/fmt_kml.html#fmt_kml_o_units'
4761          }
4762        },
4763        'desc'  => 'Google Earth (Keyhole) Markup Language',
4764        'modes' => 'rwrwrw',
4765        'ext'   => 'kml',
4766        'doclink' =>
4767         'http://www.gpsbabel.org/htmldoc-development/fmt_kml.html'
4768      },
4769      'wfff' => {
4770        'nmodes'  => 32,
4771        'parent'  => 'wfff',
4772        'options' => {
4773          'snmac' => {
4774            'min'     => '',
4775            'desc'    => 'Shortname is MAC address',
4776            'max'     => '',
4777            'default' => '',
4778            'type'    => 'boolean',
4779            'doclink' =>
4780             'http://www.gpsbabel.org/htmldoc-development/fmt_wfff.html#fmt_wfff_o_snmac'
4781          },
4782          'ahcicon' => {
4783            'min'     => '',
4784            'desc'    => 'Ad-hoc closed icon name',
4785            'max'     => '',
4786            'default' => 'Red Diamond',
4787            'type'    => 'string',
4788            'doclink' =>
4789             'http://www.gpsbabel.org/htmldoc-development/fmt_wfff.html#fmt_wfff_o_ahcicon'
4790          },
4791          'ahoicon' => {
4792            'min'     => '',
4793            'desc'    => 'Ad-hoc open icon name',
4794            'max'     => '',
4795            'default' => 'Green Diamond',
4796            'type'    => 'string',
4797            'doclink' =>
4798             'http://www.gpsbabel.org/htmldoc-development/fmt_wfff.html#fmt_wfff_o_ahoicon'
4799          },
4800          'aicicon' => {
4801            'min'     => '',
4802            'desc'    => 'Infrastructure closed icon name',
4803            'max'     => '',
4804            'default' => 'Red Square',
4805            'type'    => 'string',
4806            'doclink' =>
4807             'http://www.gpsbabel.org/htmldoc-development/fmt_wfff.html#fmt_wfff_o_aicicon'
4808          },
4809          'aioicon' => {
4810            'min'     => '',
4811            'desc'    => 'Infrastructure open icon name',
4812            'max'     => '',
4813            'default' => 'Green Square',
4814            'type'    => 'string',
4815            'doclink' =>
4816             'http://www.gpsbabel.org/htmldoc-development/fmt_wfff.html#fmt_wfff_o_aioicon'
4817          }
4818        },
4819        'desc'  => 'WiFiFoFum 2.0 for PocketPC XML',
4820        'modes' => 'r-----',
4821        'ext'   => 'xml',
4822        'doclink' =>
4823         'http://www.gpsbabel.org/htmldoc-development/fmt_wfff.html'
4824      },
4825      'mapconverter' => {
4826        'nmodes'  => 48,
4827        'parent'  => 'xcsv',
4828        'options' => {
4829          'snunique' => {
4830            'min'     => '',
4831            'desc'    => 'Make synth. shortnames unique',
4832            'max'     => '',
4833            'default' => '',
4834            'type'    => 'boolean',
4835            'doclink' =>
4836             'http://www.gpsbabel.org/htmldoc-development/fmt_mapconverter.html#fmt_mapconverter_o_snunique'
4837          },
4838          'snwhite' => {
4839            'min'     => '',
4840            'desc'    => 'Allow whitespace synth. shortnames',
4841            'max'     => '',
4842            'default' => '',
4843            'type'    => 'boolean',
4844            'doclink' =>
4845             'http://www.gpsbabel.org/htmldoc-development/fmt_mapconverter.html#fmt_mapconverter_o_snwhite'
4846          },
4847          'urlbase' => {
4848            'min'     => '',
4849            'desc'    => 'Basename prepended to URL on output',
4850            'max'     => '',
4851            'default' => '',
4852            'type'    => 'string',
4853            'doclink' =>
4854             'http://www.gpsbabel.org/htmldoc-development/fmt_mapconverter.html#fmt_mapconverter_o_urlbase'
4855          },
4856          'snupper' => {
4857            'min'     => '',
4858            'desc'    => 'UPPERCASE synth. shortnames',
4859            'max'     => '',
4860            'default' => '',
4861            'type'    => 'boolean',
4862            'doclink' =>
4863             'http://www.gpsbabel.org/htmldoc-development/fmt_mapconverter.html#fmt_mapconverter_o_snupper'
4864          },
4865          'datum' => {
4866            'min'     => '',
4867            'desc'    => 'GPS datum (def. WGS 84)',
4868            'max'     => '',
4869            'default' => 'WGS 84',
4870            'type'    => 'string',
4871            'doclink' =>
4872             'http://www.gpsbabel.org/htmldoc-development/fmt_mapconverter.html#fmt_mapconverter_o_datum'
4873          },
4874          'snlen' => {
4875            'min'     => '1',
4876            'desc'    => 'Max synthesized shortname length',
4877            'max'     => '',
4878            'default' => '',
4879            'type'    => 'integer',
4880            'doclink' =>
4881             'http://www.gpsbabel.org/htmldoc-development/fmt_mapconverter.html#fmt_mapconverter_o_snlen'
4882          },
4883          'prefer_shortnames' => {
4884            'min'     => '',
4885            'desc'    => 'Use shortname instead of description',
4886            'max'     => '',
4887            'default' => '',
4888            'type'    => 'boolean',
4889            'doclink' =>
4890             'http://www.gpsbabel.org/htmldoc-development/fmt_mapconverter.html#fmt_mapconverter_o_prefer_shortnames'
4891          }
4892        },
4893        'desc'  => 'Mapopolis.com Mapconverter CSV',
4894        'modes' => 'rw----',
4895        'ext'   => 'txt',
4896        'doclink' =>
4897         'http://www.gpsbabel.org/htmldoc-development/fmt_mapconverter.html'
4898      },
4899      'cetus' => {
4900        'nmodes'  => 56,
4901        'parent'  => 'cetus',
4902        'options' => {
4903          'appendicon' => {
4904            'min'     => '',
4905            'desc'    => 'Append icon_descr to description',
4906            'max'     => '',
4907            'default' => '',
4908            'type'    => 'boolean',
4909            'doclink' =>
4910             'http://www.gpsbabel.org/htmldoc-development/fmt_cetus.html#fmt_cetus_o_appendicon'
4911          },
4912          'dbname' => {
4913            'min'     => '',
4914            'desc'    => 'Database name',
4915            'max'     => '',
4916            'default' => '',
4917            'type'    => 'string',
4918            'doclink' =>
4919             'http://www.gpsbabel.org/htmldoc-development/fmt_cetus.html#fmt_cetus_o_dbname'
4920          }
4921        },
4922        'desc'  => 'Cetus for Palm/OS',
4923        'modes' => 'rwr---',
4924        'ext'   => 'pdb',
4925        'doclink' =>
4926         'http://www.gpsbabel.org/htmldoc-development/fmt_cetus.html'
4927      },
4928      'alantrl' => {
4929        'nmodes' => 12,
4930        'parent' => 'alantrl',
4931        'desc'   => 'Alan Map500 tracklogs (.trl)',
4932        'modes'  => '--rw--',
4933        'ext'    => 'trl',
4934        'doclink' =>
4935         'http://www.gpsbabel.org/htmldoc-development/fmt_alantrl.html'
4936      },
4937      'glogbook' => {
4938        'nmodes' => 12,
4939        'parent' => 'glogbook',
4940        'desc'   => 'Garmin Logbook XML',
4941        'modes'  => '--rw--',
4942        'ext'    => 'xml',
4943        'doclink' =>
4944         'http://www.gpsbabel.org/htmldoc-development/fmt_glogbook.html'
4945      },
4946      'fugawi' => {
4947        'nmodes'  => 48,
4948        'parent'  => 'xcsv',
4949        'options' => {
4950          'snunique' => {
4951            'min'     => '',
4952            'desc'    => 'Make synth. shortnames unique',
4953            'max'     => '',
4954            'default' => '',
4955            'type'    => 'boolean',
4956            'doclink' =>
4957             'http://www.gpsbabel.org/htmldoc-development/fmt_fugawi.html#fmt_fugawi_o_snunique'
4958          },
4959          'snwhite' => {
4960            'min'     => '',
4961            'desc'    => 'Allow whitespace synth. shortnames',
4962            'max'     => '',
4963            'default' => '',
4964            'type'    => 'boolean',
4965            'doclink' =>
4966             'http://www.gpsbabel.org/htmldoc-development/fmt_fugawi.html#fmt_fugawi_o_snwhite'
4967          },
4968          'urlbase' => {
4969            'min'     => '',
4970            'desc'    => 'Basename prepended to URL on output',
4971            'max'     => '',
4972            'default' => '',
4973            'type'    => 'string',
4974            'doclink' =>
4975             'http://www.gpsbabel.org/htmldoc-development/fmt_fugawi.html#fmt_fugawi_o_urlbase'
4976          },
4977          'snupper' => {
4978            'min'     => '',
4979            'desc'    => 'UPPERCASE synth. shortnames',
4980            'max'     => '',
4981            'default' => '',
4982            'type'    => 'boolean',
4983            'doclink' =>
4984             'http://www.gpsbabel.org/htmldoc-development/fmt_fugawi.html#fmt_fugawi_o_snupper'
4985          },
4986          'datum' => {
4987            'min'     => '',
4988            'desc'    => 'GPS datum (def. WGS 84)',
4989            'max'     => '',
4990            'default' => 'WGS 84',
4991            'type'    => 'string',
4992            'doclink' =>
4993             'http://www.gpsbabel.org/htmldoc-development/fmt_fugawi.html#fmt_fugawi_o_datum'
4994          },
4995          'snlen' => {
4996            'min'     => '1',
4997            'desc'    => 'Max synthesized shortname length',
4998            'max'     => '',
4999            'default' => '',
5000            'type'    => 'integer',
5001            'doclink' =>
5002             'http://www.gpsbabel.org/htmldoc-development/fmt_fugawi.html#fmt_fugawi_o_snlen'
5003          },
5004          'prefer_shortnames' => {
5005            'min'     => '',
5006            'desc'    => 'Use shortname instead of description',
5007            'max'     => '',
5008            'default' => '',
5009            'type'    => 'boolean',
5010            'doclink' =>
5011             'http://www.gpsbabel.org/htmldoc-development/fmt_fugawi.html#fmt_fugawi_o_prefer_shortnames'
5012          }
5013        },
5014        'desc'  => 'Fugawi',
5015        'modes' => 'rw----',
5016        'ext'   => 'txt',
5017        'doclink' =>
5018         'http://www.gpsbabel.org/htmldoc-development/fmt_fugawi.html'
5019      },
5020      'xmapwpt' => {
5021        'nmodes'  => 48,
5022        'parent'  => 'xcsv',
5023        'options' => {
5024          'snunique' => {
5025            'min'     => '',
5026            'desc'    => 'Make synth. shortnames unique',
5027            'max'     => '',
5028            'default' => '',
5029            'type'    => 'boolean',
5030            'doclink' =>
5031             'http://www.gpsbabel.org/htmldoc-development/fmt_xmapwpt.html#fmt_xmapwpt_o_snunique'
5032          },
5033          'snwhite' => {
5034            'min'     => '',
5035            'desc'    => 'Allow whitespace synth. shortnames',
5036            'max'     => '',
5037            'default' => '',
5038            'type'    => 'boolean',
5039            'doclink' =>
5040             'http://www.gpsbabel.org/htmldoc-development/fmt_xmapwpt.html#fmt_xmapwpt_o_snwhite'
5041          },
5042          'urlbase' => {
5043            'min'     => '',
5044            'desc'    => 'Basename prepended to URL on output',
5045            'max'     => '',
5046            'default' => '',
5047            'type'    => 'string',
5048            'doclink' =>
5049             'http://www.gpsbabel.org/htmldoc-development/fmt_xmapwpt.html#fmt_xmapwpt_o_urlbase'
5050          },
5051          'snupper' => {
5052            'min'     => '',
5053            'desc'    => 'UPPERCASE synth. shortnames',
5054            'max'     => '',
5055            'default' => '',
5056            'type'    => 'boolean',
5057            'doclink' =>
5058             'http://www.gpsbabel.org/htmldoc-development/fmt_xmapwpt.html#fmt_xmapwpt_o_snupper'
5059          },
5060          'datum' => {
5061            'min'     => '',
5062            'desc'    => 'GPS datum (def. WGS 84)',
5063            'max'     => '',
5064            'default' => 'WGS 84',
5065            'type'    => 'string',
5066            'doclink' =>
5067             'http://www.gpsbabel.org/htmldoc-development/fmt_xmapwpt.html#fmt_xmapwpt_o_datum'
5068          },
5069          'snlen' => {
5070            'min'     => '1',
5071            'desc'    => 'Max synthesized shortname length',
5072            'max'     => '',
5073            'default' => '',
5074            'type'    => 'integer',
5075            'doclink' =>
5076             'http://www.gpsbabel.org/htmldoc-development/fmt_xmapwpt.html#fmt_xmapwpt_o_snlen'
5077          },
5078          'prefer_shortnames' => {
5079            'min'     => '',
5080            'desc'    => 'Use shortname instead of description',
5081            'max'     => '',
5082            'default' => '',
5083            'type'    => 'boolean',
5084            'doclink' =>
5085             'http://www.gpsbabel.org/htmldoc-development/fmt_xmapwpt.html#fmt_xmapwpt_o_prefer_shortnames'
5086          }
5087        },
5088        'desc'  => 'DeLorme XMat HH Street Atlas USA .WPT (PPC)',
5089        'modes' => 'rw----',
5090        'doclink' =>
5091         'http://www.gpsbabel.org/htmldoc-development/fmt_xmapwpt.html'
5092      },
5093      'xmap2006' => {
5094        'nmodes'  => 48,
5095        'parent'  => 'xcsv',
5096        'options' => {
5097          'snunique' => {
5098            'min'     => '',
5099            'desc'    => 'Make synth. shortnames unique',
5100            'max'     => '',
5101            'default' => '',
5102            'type'    => 'boolean',
5103            'doclink' =>
5104             'http://www.gpsbabel.org/htmldoc-development/fmt_xmap2006.html#fmt_xmap2006_o_snunique'
5105          },
5106          'snwhite' => {
5107            'min'     => '',
5108            'desc'    => 'Allow whitespace synth. shortnames',
5109            'max'     => '',
5110            'default' => '',
5111            'type'    => 'boolean',
5112            'doclink' =>
5113             'http://www.gpsbabel.org/htmldoc-development/fmt_xmap2006.html#fmt_xmap2006_o_snwhite'
5114          },
5115          'urlbase' => {
5116            'min'     => '',
5117            'desc'    => 'Basename prepended to URL on output',
5118            'max'     => '',
5119            'default' => '',
5120            'type'    => 'string',
5121            'doclink' =>
5122             'http://www.gpsbabel.org/htmldoc-development/fmt_xmap2006.html#fmt_xmap2006_o_urlbase'
5123          },
5124          'snupper' => {
5125            'min'     => '',
5126            'desc'    => 'UPPERCASE synth. shortnames',
5127            'max'     => '',
5128            'default' => '',
5129            'type'    => 'boolean',
5130            'doclink' =>
5131             'http://www.gpsbabel.org/htmldoc-development/fmt_xmap2006.html#fmt_xmap2006_o_snupper'
5132          },
5133          'datum' => {
5134            'min'     => '',
5135            'desc'    => 'GPS datum (def. WGS 84)',
5136            'max'     => '',
5137            'default' => 'WGS 84',
5138            'type'    => 'string',
5139            'doclink' =>
5140             'http://www.gpsbabel.org/htmldoc-development/fmt_xmap2006.html#fmt_xmap2006_o_datum'
5141          },
5142          'snlen' => {
5143            'min'     => '1',
5144            'desc'    => 'Max synthesized shortname length',
5145            'max'     => '',
5146            'default' => '',
5147            'type'    => 'integer',
5148            'doclink' =>
5149             'http://www.gpsbabel.org/htmldoc-development/fmt_xmap2006.html#fmt_xmap2006_o_snlen'
5150          },
5151          'prefer_shortnames' => {
5152            'min'     => '',
5153            'desc'    => 'Use shortname instead of description',
5154            'max'     => '',
5155            'default' => '',
5156            'type'    => 'boolean',
5157            'doclink' =>
5158             'http://www.gpsbabel.org/htmldoc-development/fmt_xmap2006.html#fmt_xmap2006_o_prefer_shortnames'
5159          }
5160        },
5161        'desc'  => 'DeLorme XMap/SAHH 2006 Native .TXT',
5162        'modes' => 'rw----',
5163        'ext'   => 'txt',
5164        'doclink' =>
5165         'http://www.gpsbabel.org/htmldoc-development/fmt_xmap2006.html'
5166      },
5167      'saroute' => {
5168        'nmodes'  => 8,
5169        'parent'  => 'saroute',
5170        'options' => {
5171          'controls' => {
5172            'min'     => '',
5173            'desc'    => 'Read control points as waypoint/route/none',
5174            'max'     => '',
5175            'default' => 'none',
5176            'type'    => 'string',
5177            'doclink' =>
5178             'http://www.gpsbabel.org/htmldoc-development/fmt_saroute.html#fmt_saroute_o_controls'
5179          },
5180          'times' => {
5181            'min'     => '',
5182            'desc'    => 'Synthesize track times',
5183            'max'     => '',
5184            'default' => '',
5185            'type'    => 'boolean',
5186            'doclink' =>
5187             'http://www.gpsbabel.org/htmldoc-development/fmt_saroute.html#fmt_saroute_o_times'
5188          },
5189          'turns_only' => {
5190            'min'     => '',
5191            'desc'    => 'Only read turns; skip all other points',
5192            'max'     => '',
5193            'default' => '',
5194            'type'    => 'boolean',
5195            'doclink' =>
5196             'http://www.gpsbabel.org/htmldoc-development/fmt_saroute.html#fmt_saroute_o_turns_only'
5197          },
5198          'turns_important' => {
5199            'min'     => '',
5200            'desc'    => 'Keep turns if simplify filter is used',
5201            'max'     => '',
5202            'default' => '',
5203            'type'    => 'boolean',
5204            'doclink' =>
5205             'http://www.gpsbabel.org/htmldoc-development/fmt_saroute.html#fmt_saroute_o_turns_important'
5206          },
5207          'split' => {
5208            'min'     => '',
5209            'desc'    => 'Split into multiple routes at turns',
5210            'max'     => '',
5211            'default' => '',
5212            'type'    => 'boolean',
5213            'doclink' =>
5214             'http://www.gpsbabel.org/htmldoc-development/fmt_saroute.html#fmt_saroute_o_split'
5215          }
5216        },
5217        'desc'  => 'DeLorme Street Atlas Route',
5218        'modes' => '--r---',
5219        'ext'   => 'anr',
5220        'doclink' =>
5221         'http://www.gpsbabel.org/htmldoc-development/fmt_saroute.html'
5222      },
5223      'gpx' => {
5224        'nmodes'  => 63,
5225        'parent'  => 'gpx',
5226        'options' => {
5227          'logpoint' => {
5228            'min'     => '',
5229            'desc'    => 'Create waypoints from geocache log entries',
5230            'max'     => '',
5231            'default' => '',
5232            'type'    => 'boolean',
5233            'doclink' =>
5234             'http://www.gpsbabel.org/htmldoc-development/fmt_gpx.html#fmt_gpx_o_logpoint'
5235          },
5236          'urlbase' => {
5237            'min'     => '',
5238            'desc'    => 'Base URL for link tag in output',
5239            'max'     => '',
5240            'default' => '',
5241            'type'    => 'string',
5242            'doclink' =>
5243             'http://www.gpsbabel.org/htmldoc-development/fmt_gpx.html#fmt_gpx_o_urlbase'
5244          },
5245          'gpxver' => {
5246            'min'     => '',
5247            'desc'    => 'Target GPX version for output',
5248            'max'     => '',
5249            'default' => '1.0',
5250            'type'    => 'string',
5251            'doclink' =>
5252             'http://www.gpsbabel.org/htmldoc-development/fmt_gpx.html#fmt_gpx_o_gpxver'
5253          },
5254          'suppresswhite' => {
5255            'min'     => '',
5256            'desc'    => 'No whitespace in generated shortnames',
5257            'max'     => '',
5258            'default' => '',
5259            'type'    => 'boolean',
5260            'doclink' =>
5261             'http://www.gpsbabel.org/htmldoc-development/fmt_gpx.html#fmt_gpx_o_suppresswhite'
5262          },
5263          'snlen' => {
5264            'min'     => '1',
5265            'desc'    => 'Length of generated shortnames',
5266            'max'     => '',
5267            'default' => '32',
5268            'type'    => 'integer',
5269            'doclink' =>
5270             'http://www.gpsbabel.org/htmldoc-development/fmt_gpx.html#fmt_gpx_o_snlen'
5271          }
5272        },
5273        'desc'  => 'GPX XML',
5274        'modes' => 'rwrwrw',
5275        'ext'   => 'gpx',
5276        'doclink' =>
5277         'http://www.gpsbabel.org/htmldoc-development/fmt_gpx.html'
5278      },
5279      'an1' => {
5280        'nmodes'  => 55,
5281        'parent'  => 'an1',
5282        'options' => {
5283          'nogc' => {
5284            'min'     => '',
5285            'desc'    => 'Do not add geocache data to description',
5286            'max'     => '',
5287            'default' => '',
5288            'type'    => 'boolean',
5289            'doclink' =>
5290             'http://www.gpsbabel.org/htmldoc-development/fmt_an1.html#fmt_an1_o_nogc'
5291          },
5292          'radius' => {
5293            'min'     => '',
5294            'desc'    => 'Radius for circles',
5295            'max'     => '',
5296            'default' => '',
5297            'type'    => 'string',
5298            'doclink' =>
5299             'http://www.gpsbabel.org/htmldoc-development/fmt_an1.html#fmt_an1_o_radius'
5300          },
5301          'zoom' => {
5302            'min'     => '',
5303            'desc'    => 'Zoom level to reduce points',
5304            'max'     => '',
5305            'default' => '',
5306            'type'    => 'integer',
5307            'doclink' =>
5308             'http://www.gpsbabel.org/htmldoc-development/fmt_an1.html#fmt_an1_o_zoom'
5309          },
5310          'nourl' => {
5311            'min'     => '',
5312            'desc'    => 'Do not add URLs to description',
5313            'max'     => '',
5314            'default' => '',
5315            'type'    => 'boolean',
5316            'doclink' =>
5317             'http://www.gpsbabel.org/htmldoc-development/fmt_an1.html#fmt_an1_o_nourl'
5318          },
5319          'deficon' => {
5320            'min'     => '',
5321            'desc'    => 'Symbol to use for point data',
5322            'max'     => '',
5323            'default' => 'Red Flag',
5324            'type'    => 'string',
5325            'doclink' =>
5326             'http://www.gpsbabel.org/htmldoc-development/fmt_an1.html#fmt_an1_o_deficon'
5327          },
5328          'wpt_type' => {
5329            'min'     => '',
5330            'desc'    => 'Waypoint type',
5331            'max'     => '',
5332            'default' => '',
5333            'type'    => 'string',
5334            'doclink' =>
5335             'http://www.gpsbabel.org/htmldoc-development/fmt_an1.html#fmt_an1_o_wpt_type'
5336          },
5337          'color' => {
5338            'min'     => '',
5339            'desc'    => 'Color for lines or mapnotes',
5340            'max'     => '',
5341            'default' => 'red',
5342            'type'    => 'string',
5343            'doclink' =>
5344             'http://www.gpsbabel.org/htmldoc-development/fmt_an1.html#fmt_an1_o_color'
5345          },
5346          'type' => {
5347            'min'     => '',
5348            'desc'    => 'Type of .an1 file',
5349            'max'     => '',
5350            'default' => '',
5351            'type'    => 'string',
5352            'doclink' =>
5353             'http://www.gpsbabel.org/htmldoc-development/fmt_an1.html#fmt_an1_o_type'
5354          },
5355          'road' => {
5356            'min'     => '',
5357            'desc'    => 'Road type changes',
5358            'max'     => '',
5359            'default' => '',
5360            'type'    => 'string',
5361            'doclink' =>
5362             'http://www.gpsbabel.org/htmldoc-development/fmt_an1.html#fmt_an1_o_road'
5363          }
5364        },
5365        'desc'  => 'DeLorme .an1 (drawing) file',
5366        'modes' => 'rw-wrw',
5367        'ext'   => 'an1',
5368        'doclink' =>
5369         'http://www.gpsbabel.org/htmldoc-development/fmt_an1.html'
5370      },
5371      'hsandv' => {
5372        'nmodes' => 48,
5373        'parent' => 'hsandv',
5374        'desc'   => 'HSA Endeavour Navigator export File',
5375        'modes'  => 'rw----',
5376        'doclink' =>
5377         'http://www.gpsbabel.org/htmldoc-development/fmt_hsandv.html'
5378      },
5379      'netstumbler' => {
5380        'nmodes'  => 32,
5381        'parent'  => 'netstumbler',
5382        'options' => {
5383          'snmac' => {
5384            'min'     => '',
5385            'desc'    => 'Shortname is MAC address',
5386            'max'     => '',
5387            'default' => '',
5388            'type'    => 'boolean',
5389            'doclink' =>
5390             'http://www.gpsbabel.org/htmldoc-development/fmt_netstumbler.html#fmt_netstumbler_o_snmac'
5391          },
5392          'nseicon' => {
5393            'min'     => '',
5394            'desc'    => 'Non-stealth encrypted icon name',
5395            'max'     => '',
5396            'default' => 'Red Square',
5397            'type'    => 'string',
5398            'doclink' =>
5399             'http://www.gpsbabel.org/htmldoc-development/fmt_netstumbler.html#fmt_netstumbler_o_nseicon'
5400          },
5401          'nsneicon' => {
5402            'min'     => '',
5403            'desc'    => 'Non-stealth non-encrypted icon name',
5404            'max'     => '',
5405            'default' => 'Green Square',
5406            'type'    => 'string',
5407            'doclink' =>
5408             'http://www.gpsbabel.org/htmldoc-development/fmt_netstumbler.html#fmt_netstumbler_o_nsneicon'
5409          },
5410          'sneicon' => {
5411            'min'     => '',
5412            'desc'    => 'Stealth non-encrypted icon name',
5413            'max'     => '',
5414            'default' => 'Green Diamond',
5415            'type'    => 'string',
5416            'doclink' =>
5417             'http://www.gpsbabel.org/htmldoc-development/fmt_netstumbler.html#fmt_netstumbler_o_sneicon'
5418          },
5419          'seicon' => {
5420            'min'     => '',
5421            'desc'    => 'Stealth encrypted icon name',
5422            'max'     => '',
5423            'default' => 'Red Diamond',
5424            'type'    => 'string',
5425            'doclink' =>
5426             'http://www.gpsbabel.org/htmldoc-development/fmt_netstumbler.html#fmt_netstumbler_o_seicon'
5427          }
5428        },
5429        'desc'  => 'NetStumbler Summary File (text)',
5430        'modes' => 'r-----',
5431        'doclink' =>
5432         'http://www.gpsbabel.org/htmldoc-development/fmt_netstumbler.html'
5433      },
5434      'custom' => {
5435        'options' => {
5436          'snunique' => {
5437            'min'     => '',
5438            'desc'    => 'Make synth. shortnames unique',
5439            'max'     => '',
5440            'default' => '',
5441            'type'    => 'boolean',
5442            'doclink' =>
5443             'http://www.gpsbabel.org/htmldoc-development/fmt_custom.html#fmt_custom_o_snunique'
5444          },
5445          'snwhite' => {
5446            'min'     => '',
5447            'desc'    => 'Allow whitespace synth. shortnames',
5448            'max'     => '',
5449            'default' => '',
5450            'type'    => 'boolean',
5451            'doclink' =>
5452             'http://www.gpsbabel.org/htmldoc-development/fmt_custom.html#fmt_custom_o_snwhite'
5453          },
5454          'urlbase' => {
5455            'min'     => '',
5456            'desc'    => 'Basename prepended to URL on output',
5457            'max'     => '',
5458            'default' => '',
5459            'type'    => 'string',
5460            'doclink' =>
5461             'http://www.gpsbabel.org/htmldoc-development/fmt_custom.html#fmt_custom_o_urlbase'
5462          },
5463          'snupper' => {
5464            'min'     => '',
5465            'desc'    => 'UPPERCASE synth. shortnames',
5466            'max'     => '',
5467            'default' => '',
5468            'type'    => 'boolean',
5469            'doclink' =>
5470             'http://www.gpsbabel.org/htmldoc-development/fmt_custom.html#fmt_custom_o_snupper'
5471          },
5472          'datum' => {
5473            'min'     => '',
5474            'desc'    => 'GPS datum (def. WGS 84)',
5475            'max'     => '',
5476            'default' => 'WGS 84',
5477            'type'    => 'string',
5478            'doclink' =>
5479             'http://www.gpsbabel.org/htmldoc-development/fmt_custom.html#fmt_custom_o_datum'
5480          },
5481          'snlen' => {
5482            'min'     => '1',
5483            'desc'    => 'Max synthesized shortname length',
5484            'max'     => '',
5485            'default' => '',
5486            'type'    => 'integer',
5487            'doclink' =>
5488             'http://www.gpsbabel.org/htmldoc-development/fmt_custom.html#fmt_custom_o_snlen'
5489          },
5490          'prefer_shortnames' => {
5491            'min'     => '',
5492            'desc'    => 'Use shortname instead of description',
5493            'max'     => '',
5494            'default' => '',
5495            'type'    => 'boolean',
5496            'doclink' =>
5497             'http://www.gpsbabel.org/htmldoc-development/fmt_custom.html#fmt_custom_o_prefer_shortnames'
5498          }
5499        }
5500      },
5501      'tomtom_asc' => {
5502        'nmodes'  => 48,
5503        'parent'  => 'xcsv',
5504        'options' => {
5505          'snunique' => {
5506            'min'     => '',
5507            'desc'    => 'Make synth. shortnames unique',
5508            'max'     => '',
5509            'default' => '',
5510            'type'    => 'boolean',
5511            'doclink' =>
5512             'http://www.gpsbabel.org/htmldoc-development/fmt_tomtom_asc.html#fmt_tomtom_asc_o_snunique'
5513          },
5514          'snwhite' => {
5515            'min'     => '',
5516            'desc'    => 'Allow whitespace synth. shortnames',
5517            'max'     => '',
5518            'default' => '',
5519            'type'    => 'boolean',
5520            'doclink' =>
5521             'http://www.gpsbabel.org/htmldoc-development/fmt_tomtom_asc.html#fmt_tomtom_asc_o_snwhite'
5522          },
5523          'urlbase' => {
5524            'min'     => '',
5525            'desc'    => 'Basename prepended to URL on output',
5526            'max'     => '',
5527            'default' => '',
5528            'type'    => 'string',
5529            'doclink' =>
5530             'http://www.gpsbabel.org/htmldoc-development/fmt_tomtom_asc.html#fmt_tomtom_asc_o_urlbase'
5531          },
5532          'snupper' => {
5533            'min'     => '',
5534            'desc'    => 'UPPERCASE synth. shortnames',
5535            'max'     => '',
5536            'default' => '',
5537            'type'    => 'boolean',
5538            'doclink' =>
5539             'http://www.gpsbabel.org/htmldoc-development/fmt_tomtom_asc.html#fmt_tomtom_asc_o_snupper'
5540          },
5541          'datum' => {
5542            'min'     => '',
5543            'desc'    => 'GPS datum (def. WGS 84)',
5544            'max'     => '',
5545            'default' => 'WGS 84',
5546            'type'    => 'string',
5547            'doclink' =>
5548             'http://www.gpsbabel.org/htmldoc-development/fmt_tomtom_asc.html#fmt_tomtom_asc_o_datum'
5549          },
5550          'snlen' => {
5551            'min'     => '1',
5552            'desc'    => 'Max synthesized shortname length',
5553            'max'     => '',
5554            'default' => '',
5555            'type'    => 'integer',
5556            'doclink' =>
5557             'http://www.gpsbabel.org/htmldoc-development/fmt_tomtom_asc.html#fmt_tomtom_asc_o_snlen'
5558          },
5559          'prefer_shortnames' => {
5560            'min'     => '',
5561            'desc'    => 'Use shortname instead of description',
5562            'max'     => '',
5563            'default' => '',
5564            'type'    => 'boolean',
5565            'doclink' =>
5566             'http://www.gpsbabel.org/htmldoc-development/fmt_tomtom_asc.html#fmt_tomtom_asc_o_prefer_shortnames'
5567          }
5568        },
5569        'desc'  => 'TomTom POI file (.asc)',
5570        'modes' => 'rw----',
5571        'ext'   => 'asc',
5572        'doclink' =>
5573         'http://www.gpsbabel.org/htmldoc-development/fmt_tomtom_asc.html'
5574      },
5575      'gpsdrive' => {
5576        'nmodes'  => 48,
5577        'parent'  => 'xcsv',
5578        'options' => {
5579          'snunique' => {
5580            'min'     => '',
5581            'desc'    => 'Make synth. shortnames unique',
5582            'max'     => '',
5583            'default' => '',
5584            'type'    => 'boolean',
5585            'doclink' =>
5586             'http://www.gpsbabel.org/htmldoc-development/fmt_gpsdrive.html#fmt_gpsdrive_o_snunique'
5587          },
5588          'snwhite' => {
5589            'min'     => '',
5590            'desc'    => 'Allow whitespace synth. shortnames',
5591            'max'     => '',
5592            'default' => '',
5593            'type'    => 'boolean',
5594            'doclink' =>
5595             'http://www.gpsbabel.org/htmldoc-development/fmt_gpsdrive.html#fmt_gpsdrive_o_snwhite'
5596          },
5597          'urlbase' => {
5598            'min'     => '',
5599            'desc'    => 'Basename prepended to URL on output',
5600            'max'     => '',
5601            'default' => '',
5602            'type'    => 'string',
5603            'doclink' =>
5604             'http://www.gpsbabel.org/htmldoc-development/fmt_gpsdrive.html#fmt_gpsdrive_o_urlbase'
5605          },
5606          'snupper' => {
5607            'min'     => '',
5608            'desc'    => 'UPPERCASE synth. shortnames',
5609            'max'     => '',
5610            'default' => '',
5611            'type'    => 'boolean',
5612            'doclink' =>
5613             'http://www.gpsbabel.org/htmldoc-development/fmt_gpsdrive.html#fmt_gpsdrive_o_snupper'
5614          },
5615          'datum' => {
5616            'min'     => '',
5617            'desc'    => 'GPS datum (def. WGS 84)',
5618            'max'     => '',
5619            'default' => 'WGS 84',
5620            'type'    => 'string',
5621            'doclink' =>
5622             'http://www.gpsbabel.org/htmldoc-development/fmt_gpsdrive.html#fmt_gpsdrive_o_datum'
5623          },
5624          'snlen' => {
5625            'min'     => '1',
5626            'desc'    => 'Max synthesized shortname length',
5627            'max'     => '',
5628            'default' => '',
5629            'type'    => 'integer',
5630            'doclink' =>
5631             'http://www.gpsbabel.org/htmldoc-development/fmt_gpsdrive.html#fmt_gpsdrive_o_snlen'
5632          },
5633          'prefer_shortnames' => {
5634            'min'     => '',
5635            'desc'    => 'Use shortname instead of description',
5636            'max'     => '',
5637            'default' => '',
5638            'type'    => 'boolean',
5639            'doclink' =>
5640             'http://www.gpsbabel.org/htmldoc-development/fmt_gpsdrive.html#fmt_gpsdrive_o_prefer_shortnames'
5641          }
5642        },
5643        'desc'  => 'GpsDrive Format',
5644        'modes' => 'rw----',
5645        'doclink' =>
5646         'http://www.gpsbabel.org/htmldoc-development/fmt_gpsdrive.html'
5647      },
5648      'gtrnctr' => {
5649        'nmodes' => 4,
5650        'parent' => 'gtrnctr',
5651        'desc'   => 'Garmin Training Centerxml',
5652        'modes'  => '---w--',
5653        'doclink' =>
5654         'http://www.gpsbabel.org/htmldoc-development/fmt_gtrnctr.html'
5655      },
5656      'geonet' => {
5657        'nmodes'  => 48,
5658        'parent'  => 'xcsv',
5659        'options' => {
5660          'snunique' => {
5661            'min'     => '',
5662            'desc'    => 'Make synth. shortnames unique',
5663            'max'     => '',
5664            'default' => '',
5665            'type'    => 'boolean',
5666            'doclink' =>
5667             'http://www.gpsbabel.org/htmldoc-development/fmt_geonet.html#fmt_geonet_o_snunique'
5668          },
5669          'snwhite' => {
5670            'min'     => '',
5671            'desc'    => 'Allow whitespace synth. shortnames',
5672            'max'     => '',
5673            'default' => '',
5674            'type'    => 'boolean',
5675            'doclink' =>
5676             'http://www.gpsbabel.org/htmldoc-development/fmt_geonet.html#fmt_geonet_o_snwhite'
5677          },
5678          'urlbase' => {
5679            'min'     => '',
5680            'desc'    => 'Basename prepended to URL on output',
5681            'max'     => '',
5682            'default' => '',
5683            'type'    => 'string',
5684            'doclink' =>
5685             'http://www.gpsbabel.org/htmldoc-development/fmt_geonet.html#fmt_geonet_o_urlbase'
5686          },
5687          'snupper' => {
5688            'min'     => '',
5689            'desc'    => 'UPPERCASE synth. shortnames',
5690            'max'     => '',
5691            'default' => '',
5692            'type'    => 'boolean',
5693            'doclink' =>
5694             'http://www.gpsbabel.org/htmldoc-development/fmt_geonet.html#fmt_geonet_o_snupper'
5695          },
5696          'datum' => {
5697            'min'     => '',
5698            'desc'    => 'GPS datum (def. WGS 84)',
5699            'max'     => '',
5700            'default' => 'WGS 84',
5701            'type'    => 'string',
5702            'doclink' =>
5703             'http://www.gpsbabel.org/htmldoc-development/fmt_geonet.html#fmt_geonet_o_datum'
5704          },
5705          'snlen' => {
5706            'min'     => '1',
5707            'desc'    => 'Max synthesized shortname length',
5708            'max'     => '',
5709            'default' => '',
5710            'type'    => 'integer',
5711            'doclink' =>
5712             'http://www.gpsbabel.org/htmldoc-development/fmt_geonet.html#fmt_geonet_o_snlen'
5713          },
5714          'prefer_shortnames' => {
5715            'min'     => '',
5716            'desc'    => 'Use shortname instead of description',
5717            'max'     => '',
5718            'default' => '',
5719            'type'    => 'boolean',
5720            'doclink' =>
5721             'http://www.gpsbabel.org/htmldoc-development/fmt_geonet.html#fmt_geonet_o_prefer_shortnames'
5722          }
5723        },
5724        'desc'  => 'GEOnet Names Server (GNS)',
5725        'modes' => 'rw----',
5726        'ext'   => 'txt',
5727        'doclink' =>
5728         'http://www.gpsbabel.org/htmldoc-development/fmt_geonet.html'
5729      },
5730      'html' => {
5731        'nmodes'  => 16,
5732        'parent'  => 'html',
5733        'options' => {
5734          'altunits' => {
5735            'min'     => '',
5736            'desc'    => 'Units for altitude (f)eet or (m)etres',
5737            'max'     => '',
5738            'default' => 'm',
5739            'type'    => 'string',
5740            'doclink' =>
5741             'http://www.gpsbabel.org/htmldoc-development/fmt_html.html#fmt_html_o_altunits'
5742          },
5743          'encrypt' => {
5744            'min'     => '',
5745            'desc'    => 'Encrypt hints using ROT13',
5746            'max'     => '',
5747            'default' => '',
5748            'type'    => 'boolean',
5749            'doclink' =>
5750             'http://www.gpsbabel.org/htmldoc-development/fmt_html.html#fmt_html_o_encrypt'
5751          },
5752          'degformat' => {
5753            'min' => '',
5754            'desc' =>
5755             'Degrees output as \'ddd\', \'dmm\'(default) or \'dms\'',
5756            'max'     => '',
5757            'default' => 'dmm',
5758            'type'    => 'string',
5759            'doclink' =>
5760             'http://www.gpsbabel.org/htmldoc-development/fmt_html.html#fmt_html_o_degformat'
5761          },
5762          'stylesheet' => {
5763            'min'     => '',
5764            'desc'    => 'Path to HTML style sheet',
5765            'max'     => '',
5766            'default' => '',
5767            'type'    => 'string',
5768            'doclink' =>
5769             'http://www.gpsbabel.org/htmldoc-development/fmt_html.html#fmt_html_o_stylesheet'
5770          },
5771          'logs' => {
5772            'min'     => '',
5773            'desc'    => 'Include groundspeak logs if present',
5774            'max'     => '',
5775            'default' => '',
5776            'type'    => 'boolean',
5777            'doclink' =>
5778             'http://www.gpsbabel.org/htmldoc-development/fmt_html.html#fmt_html_o_logs'
5779          }
5780        },
5781        'desc'  => 'HTML Output',
5782        'modes' => '-w----',
5783        'ext'   => 'html',
5784        'doclink' =>
5785         'http://www.gpsbabel.org/htmldoc-development/fmt_html.html'
5786      },
5787      'coto' => {
5788        'nmodes'  => 56,
5789        'parent'  => 'coto',
5790        'options' => {
5791          'zerocat' => {
5792            'min'     => '',
5793            'desc'    => 'Name of the \'unassigned\' category',
5794            'max'     => '',
5795            'default' => '',
5796            'type'    => 'string',
5797            'extra'   => [
5798              'http://www.gpsbabel.org/htmldoc-development/fmt_coto.html#fmt_coto_o_internals'
5799            ],
5800            'doclink' =>
5801             'http://www.gpsbabel.org/htmldoc-development/fmt_coto.html#fmt_coto_o_zerocat'
5802          }
5803        },
5804        'desc'  => 'cotoGPS for Palm/OS',
5805        'modes' => 'rwr---',
5806        'ext'   => 'pdb',
5807        'doclink' =>
5808         'http://www.gpsbabel.org/htmldoc-development/fmt_coto.html'
5809      },
5810      'text' => {
5811        'nmodes'  => 16,
5812        'parent'  => 'text',
5813        'options' => {
5814          'splitoutput' => {
5815            'min'     => '',
5816            'desc'    => 'Write each waypoint in a separate file',
5817            'max'     => '',
5818            'default' => '',
5819            'type'    => 'boolean',
5820            'doclink' =>
5821             'http://www.gpsbabel.org/htmldoc-development/fmt_text.html#fmt_text_o_splitoutput'
5822          },
5823          'altunits' => {
5824            'min'     => '',
5825            'desc'    => 'Units for altitude (f)eet or (m)etres',
5826            'max'     => '',
5827            'default' => 'm',
5828            'type'    => 'string',
5829            'doclink' =>
5830             'http://www.gpsbabel.org/htmldoc-development/fmt_text.html#fmt_text_o_altunits'
5831          },
5832          'encrypt' => {
5833            'min'     => '',
5834            'desc'    => 'Encrypt hints using ROT13',
5835            'max'     => '',
5836            'default' => '',
5837            'type'    => 'boolean',
5838            'doclink' =>
5839             'http://www.gpsbabel.org/htmldoc-development/fmt_text.html#fmt_text_o_encrypt'
5840          },
5841          'degformat' => {
5842            'min' => '',
5843            'desc' =>
5844             'Degrees output as \'ddd\', \'dmm\'(default) or \'dms\'',
5845            'max'     => '',
5846            'default' => 'dmm',
5847            'type'    => 'string',
5848            'doclink' =>
5849             'http://www.gpsbabel.org/htmldoc-development/fmt_text.html#fmt_text_o_degformat'
5850          },
5851          'nosep' => {
5852            'min'     => '',
5853            'desc'    => 'Suppress separator lines between waypoints',
5854            'max'     => '',
5855            'default' => '',
5856            'type'    => 'boolean',
5857            'doclink' =>
5858             'http://www.gpsbabel.org/htmldoc-development/fmt_text.html#fmt_text_o_nosep'
5859          },
5860          'logs' => {
5861            'min'     => '',
5862            'desc'    => 'Include groundspeak logs if present',
5863            'max'     => '',
5864            'default' => '',
5865            'type'    => 'boolean',
5866            'doclink' =>
5867             'http://www.gpsbabel.org/htmldoc-development/fmt_text.html#fmt_text_o_logs'
5868          }
5869        },
5870        'desc'  => 'Textual Output',
5871        'modes' => '-w----',
5872        'ext'   => 'txt',
5873        'doclink' =>
5874         'http://www.gpsbabel.org/htmldoc-development/fmt_text.html'
5875      },
5876      'kompass_wp' => {
5877        'nmodes'  => 48,
5878        'parent'  => 'xcsv',
5879        'options' => {
5880          'snunique' => {
5881            'min'     => '',
5882            'desc'    => 'Make synth. shortnames unique',
5883            'max'     => '',
5884            'default' => '',
5885            'type'    => 'boolean',
5886            'doclink' =>
5887             'http://www.gpsbabel.org/htmldoc-development/fmt_kompass_wp.html#fmt_kompass_wp_o_snunique'
5888          },
5889          'snwhite' => {
5890            'min'     => '',
5891            'desc'    => 'Allow whitespace synth. shortnames',
5892            'max'     => '',
5893            'default' => '',
5894            'type'    => 'boolean',
5895            'doclink' =>
5896             'http://www.gpsbabel.org/htmldoc-development/fmt_kompass_wp.html#fmt_kompass_wp_o_snwhite'
5897          },
5898          'urlbase' => {
5899            'min'     => '',
5900            'desc'    => 'Basename prepended to URL on output',
5901            'max'     => '',
5902            'default' => '',
5903            'type'    => 'string',
5904            'doclink' =>
5905             'http://www.gpsbabel.org/htmldoc-development/fmt_kompass_wp.html#fmt_kompass_wp_o_urlbase'
5906          },
5907          'snupper' => {
5908            'min'     => '',
5909            'desc'    => 'UPPERCASE synth. shortnames',
5910            'max'     => '',
5911            'default' => '',
5912            'type'    => 'boolean',
5913            'doclink' =>
5914             'http://www.gpsbabel.org/htmldoc-development/fmt_kompass_wp.html#fmt_kompass_wp_o_snupper'
5915          },
5916          'datum' => {
5917            'min'     => '',
5918            'desc'    => 'GPS datum (def. WGS 84)',
5919            'max'     => '',
5920            'default' => 'WGS 84',
5921            'type'    => 'string',
5922            'doclink' =>
5923             'http://www.gpsbabel.org/htmldoc-development/fmt_kompass_wp.html#fmt_kompass_wp_o_datum'
5924          },
5925          'snlen' => {
5926            'min'     => '1',
5927            'desc'    => 'Max synthesized shortname length',
5928            'max'     => '',
5929            'default' => '',
5930            'type'    => 'integer',
5931            'doclink' =>
5932             'http://www.gpsbabel.org/htmldoc-development/fmt_kompass_wp.html#fmt_kompass_wp_o_snlen'
5933          },
5934          'prefer_shortnames' => {
5935            'min'     => '',
5936            'desc'    => 'Use shortname instead of description',
5937            'max'     => '',
5938            'default' => '',
5939            'type'    => 'boolean',
5940            'doclink' =>
5941             'http://www.gpsbabel.org/htmldoc-development/fmt_kompass_wp.html#fmt_kompass_wp_o_prefer_shortnames'
5942          }
5943        },
5944        'desc'  => 'Kompass (DAV) Waypoints (.wp)',
5945        'modes' => 'rw----',
5946        'ext'   => 'wp',
5947        'doclink' =>
5948         'http://www.gpsbabel.org/htmldoc-development/fmt_kompass_wp.html'
5949      },
5950      'g7towin' => {
5951        'nmodes' => 42,
5952        'parent' => 'g7towin',
5953        'desc'   => 'G7ToWin data files (.g7t)',
5954        'modes'  => 'r-r-r-',
5955        'ext'    => 'g7t',
5956        'doclink' =>
5957         'http://www.gpsbabel.org/htmldoc-development/fmt_g7towin.html'
5958      },
5959      'geoniche' => {
5960        'nmodes'  => 48,
5961        'parent'  => 'geoniche',
5962        'options' => {
5963          'category' => {
5964            'min'     => '',
5965            'desc'    => 'Category name (Cache)',
5966            'max'     => '',
5967            'default' => '',
5968            'type'    => 'string',
5969            'doclink' =>
5970             'http://www.gpsbabel.org/htmldoc-development/fmt_geoniche.html#fmt_geoniche_o_category'
5971          },
5972          'dbname' => {
5973            'min'     => '',
5974            'desc'    => 'Database name (filename)',
5975            'max'     => '',
5976            'default' => '',
5977            'type'    => 'string',
5978            'doclink' =>
5979             'http://www.gpsbabel.org/htmldoc-development/fmt_geoniche.html#fmt_geoniche_o_dbname'
5980          }
5981        },
5982        'desc'  => 'GeoNiche .pdb',
5983        'modes' => 'rw----',
5984        'ext'   => 'pdb',
5985        'doclink' =>
5986         'http://www.gpsbabel.org/htmldoc-development/fmt_geoniche.html'
5987      },
5988      'garmin_poi' => {
5989        'nmodes'  => 48,
5990        'parent'  => 'xcsv',
5991        'options' => {
5992          'snunique' => {
5993            'min'     => '',
5994            'desc'    => 'Make synth. shortnames unique',
5995            'max'     => '',
5996            'default' => '',
5997            'type'    => 'boolean',
5998            'doclink' =>
5999             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin_poi.html#fmt_garmin_poi_o_snunique'
6000          },
6001          'snwhite' => {
6002            'min'     => '',
6003            'desc'    => 'Allow whitespace synth. shortnames',
6004            'max'     => '',
6005            'default' => '',
6006            'type'    => 'boolean',
6007            'doclink' =>
6008             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin_poi.html#fmt_garmin_poi_o_snwhite'
6009          },
6010          'urlbase' => {
6011            'min'     => '',
6012            'desc'    => 'Basename prepended to URL on output',
6013            'max'     => '',
6014            'default' => '',
6015            'type'    => 'string',
6016            'doclink' =>
6017             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin_poi.html#fmt_garmin_poi_o_urlbase'
6018          },
6019          'snupper' => {
6020            'min'     => '',
6021            'desc'    => 'UPPERCASE synth. shortnames',
6022            'max'     => '',
6023            'default' => '',
6024            'type'    => 'boolean',
6025            'doclink' =>
6026             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin_poi.html#fmt_garmin_poi_o_snupper'
6027          },
6028          'datum' => {
6029            'min'     => '',
6030            'desc'    => 'GPS datum (def. WGS 84)',
6031            'max'     => '',
6032            'default' => 'WGS 84',
6033            'type'    => 'string',
6034            'doclink' =>
6035             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin_poi.html#fmt_garmin_poi_o_datum'
6036          },
6037          'snlen' => {
6038            'min'     => '1',
6039            'desc'    => 'Max synthesized shortname length',
6040            'max'     => '',
6041            'default' => '',
6042            'type'    => 'integer',
6043            'doclink' =>
6044             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin_poi.html#fmt_garmin_poi_o_snlen'
6045          },
6046          'prefer_shortnames' => {
6047            'min'     => '',
6048            'desc'    => 'Use shortname instead of description',
6049            'max'     => '',
6050            'default' => '',
6051            'type'    => 'boolean',
6052            'doclink' =>
6053             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin_poi.html#fmt_garmin_poi_o_prefer_shortnames'
6054          }
6055        },
6056        'desc'  => 'Garmin POI database',
6057        'modes' => 'rw----',
6058        'doclink' =>
6059         'http://www.gpsbabel.org/htmldoc-development/fmt_garmin_poi.html'
6060      },
6061      'tpo3' => {
6062        'nmodes' => 42,
6063        'parent' => 'tpo3',
6064        'desc'   => 'National Geographic Topo 3.x/4.x .tpo',
6065        'modes'  => 'r-r-r-',
6066        'ext'    => 'tpo',
6067        'doclink' =>
6068         'http://www.gpsbabel.org/htmldoc-development/fmt_tpo3.html'
6069      },
6070      'raymarine' => {
6071        'nmodes'  => 51,
6072        'parent'  => 'raymarine',
6073        'options' => {
6074          'location' => {
6075            'min'     => '',
6076            'desc'    => 'Default location',
6077            'max'     => '',
6078            'default' => 'My Waypoints',
6079            'type'    => 'string',
6080            'doclink' =>
6081             'http://www.gpsbabel.org/htmldoc-development/fmt_raymarine.html#fmt_raymarine_o_location'
6082          }
6083        },
6084        'desc'  => 'Raymarine Waypoint File (.rwf)',
6085        'modes' => 'rw--rw',
6086        'ext'   => 'rwf',
6087        'doclink' =>
6088         'http://www.gpsbabel.org/htmldoc-development/fmt_raymarine.html'
6089      },
6090      'garmin_txt' => {
6091        'nmodes'  => 63,
6092        'parent'  => 'garmin_txt',
6093        'options' => {
6094          'grid' => {
6095            'min'     => '',
6096            'desc'    => 'Write position using this grid.',
6097            'max'     => '',
6098            'default' => '',
6099            'type'    => 'string',
6100            'doclink' =>
6101             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin_txt.html#fmt_garmin_txt_o_grid'
6102          },
6103          'temp' => {
6104            'min'     => '',
6105            'desc'    => 'Temperature unit [c=Celsius, f=Fahrenheit]',
6106            'max'     => '',
6107            'default' => 'c',
6108            'type'    => 'string',
6109            'doclink' =>
6110             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin_txt.html#fmt_garmin_txt_o_temp'
6111          },
6112          'prec' => {
6113            'min'     => '',
6114            'desc'    => 'Precision of coordinates',
6115            'max'     => '',
6116            'default' => '3',
6117            'type'    => 'integer',
6118            'doclink' =>
6119             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin_txt.html#fmt_garmin_txt_o_prec'
6120          },
6121          'time' => {
6122            'min'     => '',
6123            'desc'    => 'Read/Write time format (i.e. HH:mm:ss xx)',
6124            'max'     => '',
6125            'default' => '',
6126            'type'    => 'string',
6127            'doclink' =>
6128             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin_txt.html#fmt_garmin_txt_o_time'
6129          },
6130          'date' => {
6131            'min'     => '',
6132            'desc'    => 'Read/Write date format (i.e. yyyy/mm/dd)',
6133            'max'     => '',
6134            'default' => '',
6135            'type'    => 'string',
6136            'doclink' =>
6137             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin_txt.html#fmt_garmin_txt_o_date'
6138          },
6139          'utc' => {
6140            'min'     => '-23',
6141            'desc'    => 'Write timestamps with offset x to UTC time',
6142            'max'     => '+23',
6143            'default' => '',
6144            'type'    => 'integer',
6145            'doclink' =>
6146             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin_txt.html#fmt_garmin_txt_o_utc'
6147          },
6148          'dist' => {
6149            'min'     => '',
6150            'desc'    => 'Distance unit [m=metric, s=statute]',
6151            'max'     => '',
6152            'default' => 'm',
6153            'type'    => 'string',
6154            'doclink' =>
6155             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin_txt.html#fmt_garmin_txt_o_dist'
6156          },
6157          'datum' => {
6158            'min'     => '',
6159            'desc'    => 'GPS datum (def. WGS 84)',
6160            'max'     => '',
6161            'default' => 'WGS 84',
6162            'type'    => 'string',
6163            'doclink' =>
6164             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin_txt.html#fmt_garmin_txt_o_datum'
6165          }
6166        },
6167        'desc'  => 'Garmin MapSource - txt (tab delimited)',
6168        'modes' => 'rwrwrw',
6169        'ext'   => 'txt',
6170        'doclink' =>
6171         'http://www.gpsbabel.org/htmldoc-development/fmt_garmin_txt.html'
6172      },
6173      'magellanx' => {
6174        'nmodes'  => 63,
6175        'parent'  => 'magellanx',
6176        'options' => {
6177          'deficon' => {
6178            'min'     => '',
6179            'desc'    => 'Default icon name',
6180            'max'     => '',
6181            'default' => '',
6182            'type'    => 'string',
6183            'doclink' =>
6184             'http://www.gpsbabel.org/htmldoc-development/fmt_magellanx.html#fmt_magellanx_o_deficon'
6185          },
6186          'maxcmts' => {
6187            'min'  => '',
6188            'desc' => 'Max number of comments to write (maxcmts=200)',
6189            'max'  => '',
6190            'default' => '',
6191            'type'    => 'integer',
6192            'doclink' =>
6193             'http://www.gpsbabel.org/htmldoc-development/fmt_magellanx.html#fmt_magellanx_o_maxcmts'
6194          }
6195        },
6196        'desc'  => 'Magellan SD files (as for eXplorist)',
6197        'modes' => 'rwrwrw',
6198        'ext'   => 'upt',
6199        'doclink' =>
6200         'http://www.gpsbabel.org/htmldoc-development/fmt_magellanx.html'
6201      },
6202      'magnav' => {
6203        'nmodes' => 48,
6204        'parent' => 'magnav',
6205        'desc'   => 'Magellan NAV Companion for Palm/OS',
6206        'modes'  => 'rw----',
6207        'ext'    => 'pdb',
6208        'doclink' =>
6209         'http://www.gpsbabel.org/htmldoc-development/fmt_magnav.html'
6210      },
6211      'maggeo' => {
6212        'nmodes' => 16,
6213        'parent' => 'maggeo',
6214        'desc'   => 'Magellan Explorist Geocaching',
6215        'modes'  => '-w----',
6216        'ext'    => 'gs',
6217        'doclink' =>
6218         'http://www.gpsbabel.org/htmldoc-development/fmt_maggeo.html'
6219      },
6220      'cambridge' => {
6221        'nmodes'  => 48,
6222        'parent'  => 'xcsv',
6223        'options' => {
6224          'snunique' => {
6225            'min'     => '',
6226            'desc'    => 'Make synth. shortnames unique',
6227            'max'     => '',
6228            'default' => '',
6229            'type'    => 'boolean',
6230            'doclink' =>
6231             'http://www.gpsbabel.org/htmldoc-development/fmt_cambridge.html#fmt_cambridge_o_snunique'
6232          },
6233          'snwhite' => {
6234            'min'     => '',
6235            'desc'    => 'Allow whitespace synth. shortnames',
6236            'max'     => '',
6237            'default' => '',
6238            'type'    => 'boolean',
6239            'doclink' =>
6240             'http://www.gpsbabel.org/htmldoc-development/fmt_cambridge.html#fmt_cambridge_o_snwhite'
6241          },
6242          'urlbase' => {
6243            'min'     => '',
6244            'desc'    => 'Basename prepended to URL on output',
6245            'max'     => '',
6246            'default' => '',
6247            'type'    => 'string',
6248            'doclink' =>
6249             'http://www.gpsbabel.org/htmldoc-development/fmt_cambridge.html#fmt_cambridge_o_urlbase'
6250          },
6251          'snupper' => {
6252            'min'     => '',
6253            'desc'    => 'UPPERCASE synth. shortnames',
6254            'max'     => '',
6255            'default' => '',
6256            'type'    => 'boolean',
6257            'doclink' =>
6258             'http://www.gpsbabel.org/htmldoc-development/fmt_cambridge.html#fmt_cambridge_o_snupper'
6259          },
6260          'datum' => {
6261            'min'     => '',
6262            'desc'    => 'GPS datum (def. WGS 84)',
6263            'max'     => '',
6264            'default' => 'WGS 84',
6265            'type'    => 'string',
6266            'doclink' =>
6267             'http://www.gpsbabel.org/htmldoc-development/fmt_cambridge.html#fmt_cambridge_o_datum'
6268          },
6269          'snlen' => {
6270            'min'     => '1',
6271            'desc'    => 'Max synthesized shortname length',
6272            'max'     => '',
6273            'default' => '',
6274            'type'    => 'integer',
6275            'doclink' =>
6276             'http://www.gpsbabel.org/htmldoc-development/fmt_cambridge.html#fmt_cambridge_o_snlen'
6277          },
6278          'prefer_shortnames' => {
6279            'min'     => '',
6280            'desc'    => 'Use shortname instead of description',
6281            'max'     => '',
6282            'default' => '',
6283            'type'    => 'boolean',
6284            'doclink' =>
6285             'http://www.gpsbabel.org/htmldoc-development/fmt_cambridge.html#fmt_cambridge_o_prefer_shortnames'
6286          }
6287        },
6288        'desc'  => 'Cambridge/Winpilot glider software',
6289        'modes' => 'rw----',
6290        'ext'   => 'dat',
6291        'doclink' =>
6292         'http://www.gpsbabel.org/htmldoc-development/fmt_cambridge.html'
6293      },
6294      'pathaway' => {
6295        'nmodes'  => 63,
6296        'parent'  => 'pathaway',
6297        'options' => {
6298          'date' => {
6299            'min'     => '',
6300            'desc'    => 'Read/Write date format (i.e. DDMMYYYY)',
6301            'max'     => '',
6302            'default' => '',
6303            'type'    => 'string',
6304            'doclink' =>
6305             'http://www.gpsbabel.org/htmldoc-development/fmt_pathaway.html#fmt_pathaway_o_date'
6306          },
6307          'snlen' => {
6308            'min'     => '1',
6309            'desc'    => 'Length of generated shortnames',
6310            'max'     => '',
6311            'default' => '10',
6312            'type'    => 'integer',
6313            'doclink' =>
6314             'http://www.gpsbabel.org/htmldoc-development/fmt_pathaway.html#fmt_pathaway_o_snlen'
6315          },
6316          'deficon' => {
6317            'min'     => '',
6318            'desc'    => 'Default icon name',
6319            'max'     => '',
6320            'default' => '',
6321            'type'    => 'string',
6322            'doclink' =>
6323             'http://www.gpsbabel.org/htmldoc-development/fmt_pathaway.html#fmt_pathaway_o_deficon'
6324          },
6325          'dbname' => {
6326            'min'     => '',
6327            'desc'    => 'Database name',
6328            'max'     => '',
6329            'default' => '',
6330            'type'    => 'string',
6331            'doclink' =>
6332             'http://www.gpsbabel.org/htmldoc-development/fmt_pathaway.html#fmt_pathaway_o_dbname'
6333          }
6334        },
6335        'desc'  => 'PathAway Database for Palm/OS',
6336        'modes' => 'rwrwrw',
6337        'ext'   => 'pdb',
6338        'doclink' =>
6339         'http://www.gpsbabel.org/htmldoc-development/fmt_pathaway.html'
6340      },
6341      'gdb' => {
6342        'nmodes'  => 63,
6343        'parent'  => 'gdb',
6344        'options' => {
6345          'via' => {
6346            'min' => '',
6347            'desc' =>
6348             'Drop route points that do not have an equivalent waypoint (hidden points)',
6349            'max'     => '',
6350            'default' => '',
6351            'type'    => 'boolean',
6352            'doclink' =>
6353             'http://www.gpsbabel.org/htmldoc-development/fmt_gdb.html#fmt_gdb_o_via'
6354          },
6355          'cat' => {
6356            'min'     => '1',
6357            'desc'    => 'Default category on output (1..16)',
6358            'max'     => '16',
6359            'default' => '',
6360            'type'    => 'integer',
6361            'doclink' =>
6362             'http://www.gpsbabel.org/htmldoc-development/fmt_gdb.html#fmt_gdb_o_cat'
6363          },
6364          'roadbook' => {
6365            'min' => '',
6366            'desc' =>
6367             'Include major turn points (with description) from calculated route',
6368            'max'     => '',
6369            'default' => '',
6370            'type'    => 'boolean',
6371            'doclink' =>
6372             'http://www.gpsbabel.org/htmldoc-development/fmt_gdb.html#fmt_gdb_o_roadbook'
6373          },
6374          'ver' => {
6375            'min'     => '1',
6376            'desc'    => 'Version of gdb file to generate (1..3)',
6377            'max'     => '3',
6378            'default' => '2',
6379            'type'    => 'integer',
6380            'doclink' =>
6381             'http://www.gpsbabel.org/htmldoc-development/fmt_gdb.html#fmt_gdb_o_ver'
6382          }
6383        },
6384        'desc'  => 'Garmin MapSource - gdb',
6385        'modes' => 'rwrwrw',
6386        'ext'   => 'gdb',
6387        'doclink' =>
6388         'http://www.gpsbabel.org/htmldoc-development/fmt_gdb.html'
6389      },
6390      'wbt' => {
6391        'options' => {
6392          'erase' => {
6393            'min'     => '',
6394            'desc'    => 'Erase device data after download',
6395            'max'     => '',
6396            'default' => '',
6397            'type'    => 'boolean',
6398            'doclink' =>
6399             'http://www.gpsbabel.org/htmldoc-development/fmt_wbt.html#fmt_wbt_o_erase'
6400          }
6401        }
6402      },
6403      'xol' => {
6404        'nmodes' => 60,
6405        'parent' => 'xol',
6406        'desc'   => 'Swiss Map # (.xol) format',
6407        'modes'  => 'rwrw--',
6408        'ext'    => 'xol',
6409        'doclink' =>
6410         'http://www.gpsbabel.org/htmldoc-development/fmt_xol.html'
6411      },
6412      'gpsutil' => {
6413        'nmodes' => 48,
6414        'parent' => 'gpsutil',
6415        'desc'   => 'gpsutil',
6416        'modes'  => 'rw----',
6417        'doclink' =>
6418         'http://www.gpsbabel.org/htmldoc-development/fmt_gpsutil.html'
6419      },
6420      'vitosmt' => {
6421        'nmodes' => 63,
6422        'parent' => 'vitosmt',
6423        'desc'   => 'Vito Navigator II tracks',
6424        'modes'  => 'rwrwrw',
6425        'ext'    => 'smt',
6426        'doclink' =>
6427         'http://www.gpsbabel.org/htmldoc-development/fmt_vitosmt.html'
6428      },
6429      'ggv_log' => {
6430        'nmodes' => 12,
6431        'parent' => 'ggv_log',
6432        'desc'   => 'Geogrid Viewer tracklogs (.log)',
6433        'modes'  => '--rw--',
6434        'ext'    => 'log',
6435        'doclink' =>
6436         'http://www.gpsbabel.org/htmldoc-development/fmt_ggv_log.html'
6437      },
6438      'tiger' => {
6439        'nmodes'  => 48,
6440        'parent'  => 'tiger',
6441        'options' => {
6442          'oldthresh' => {
6443            'min'     => '',
6444            'desc'    => 'Days after which points are considered old',
6445            'max'     => '',
6446            'default' => '14',
6447            'type'    => 'integer',
6448            'doclink' =>
6449             'http://www.gpsbabel.org/htmldoc-development/fmt_tiger.html#fmt_tiger_o_oldthresh'
6450          },
6451          'snlen' => {
6452            'min'     => '1',
6453            'desc'    => 'Max shortname length when used with -s',
6454            'max'     => '',
6455            'default' => '10',
6456            'type'    => 'integer',
6457            'doclink' =>
6458             'http://www.gpsbabel.org/htmldoc-development/fmt_tiger.html#fmt_tiger_o_snlen'
6459          },
6460          'ypixels' => {
6461            'min'     => '',
6462            'desc'    => 'Height in pixels of map',
6463            'max'     => '',
6464            'default' => '768',
6465            'type'    => 'integer',
6466            'doclink' =>
6467             'http://www.gpsbabel.org/htmldoc-development/fmt_tiger.html#fmt_tiger_o_ypixels'
6468          },
6469          'xpixels' => {
6470            'min'     => '',
6471            'desc'    => 'Width in pixels of map',
6472            'max'     => '',
6473            'default' => '768',
6474            'type'    => 'integer',
6475            'doclink' =>
6476             'http://www.gpsbabel.org/htmldoc-development/fmt_tiger.html#fmt_tiger_o_xpixels'
6477          },
6478          'newmarker' => {
6479            'min'     => '',
6480            'desc'    => 'Marker type for new points',
6481            'max'     => '',
6482            'default' => 'greenpin',
6483            'type'    => 'string',
6484            'doclink' =>
6485             'http://www.gpsbabel.org/htmldoc-development/fmt_tiger.html#fmt_tiger_o_newmarker'
6486          },
6487          'iconismarker' => {
6488            'min'     => '',
6489            'desc'    => 'The icon description is already the marker',
6490            'max'     => '',
6491            'default' => '',
6492            'type'    => 'boolean',
6493            'doclink' =>
6494             'http://www.gpsbabel.org/htmldoc-development/fmt_tiger.html#fmt_tiger_o_iconismarker'
6495          },
6496          'oldmarker' => {
6497            'min'     => '',
6498            'desc'    => 'Marker type for old points',
6499            'max'     => '',
6500            'default' => 'redpin',
6501            'type'    => 'string',
6502            'doclink' =>
6503             'http://www.gpsbabel.org/htmldoc-development/fmt_tiger.html#fmt_tiger_o_oldmarker'
6504          },
6505          'genurl' => {
6506            'min'     => '',
6507            'desc'    => 'Generate file with lat/lon for centering map',
6508            'max'     => '',
6509            'default' => '',
6510            'type'    => 'outfile',
6511            'doclink' =>
6512             'http://www.gpsbabel.org/htmldoc-development/fmt_tiger.html#fmt_tiger_o_genurl'
6513          },
6514          'suppresswhite' => {
6515            'min'     => '',
6516            'desc'    => 'Suppress whitespace in generated shortnames',
6517            'max'     => '',
6518            'default' => '',
6519            'type'    => 'boolean',
6520            'doclink' =>
6521             'http://www.gpsbabel.org/htmldoc-development/fmt_tiger.html#fmt_tiger_o_suppresswhite'
6522          },
6523          'unfoundmarker' => {
6524            'min'     => '',
6525            'desc'    => 'Marker type for unfound points',
6526            'max'     => '',
6527            'default' => 'bluepin',
6528            'type'    => 'string',
6529            'doclink' =>
6530             'http://www.gpsbabel.org/htmldoc-development/fmt_tiger.html#fmt_tiger_o_unfoundmarker'
6531          },
6532          'nolabels' => {
6533            'min'     => '',
6534            'desc'    => 'Suppress labels on generated pins',
6535            'max'     => '',
6536            'default' => '',
6537            'type'    => 'boolean',
6538            'doclink' =>
6539             'http://www.gpsbabel.org/htmldoc-development/fmt_tiger.html#fmt_tiger_o_nolabels'
6540          },
6541          'margin' => {
6542            'min'     => '',
6543            'desc'    => 'Margin for map.  Degrees or percentage',
6544            'max'     => '',
6545            'default' => '15%',
6546            'type'    => 'float',
6547            'doclink' =>
6548             'http://www.gpsbabel.org/htmldoc-development/fmt_tiger.html#fmt_tiger_o_margin'
6549          }
6550        },
6551        'desc'  => 'U.S. Census Bureau Tiger Mapping Service',
6552        'modes' => 'rw----',
6553        'doclink' =>
6554         'http://www.gpsbabel.org/htmldoc-development/fmt_tiger.html'
6555      },
6556      'alanwpr' => {
6557        'nmodes' => 51,
6558        'parent' => 'alanwpr',
6559        'desc'   => 'Alan Map500 waypoints and routes (.wpr)',
6560        'modes'  => 'rw--rw',
6561        'ext'    => 'wpr',
6562        'doclink' =>
6563         'http://www.gpsbabel.org/htmldoc-development/fmt_alanwpr.html'
6564      },
6565      'gpsman' => {
6566        'nmodes'  => 48,
6567        'parent'  => 'xcsv',
6568        'options' => {
6569          'snunique' => {
6570            'min'     => '',
6571            'desc'    => 'Make synth. shortnames unique',
6572            'max'     => '',
6573            'default' => '',
6574            'type'    => 'boolean',
6575            'doclink' =>
6576             'http://www.gpsbabel.org/htmldoc-development/fmt_gpsman.html#fmt_gpsman_o_snunique'
6577          },
6578          'snwhite' => {
6579            'min'     => '',
6580            'desc'    => 'Allow whitespace synth. shortnames',
6581            'max'     => '',
6582            'default' => '',
6583            'type'    => 'boolean',
6584            'doclink' =>
6585             'http://www.gpsbabel.org/htmldoc-development/fmt_gpsman.html#fmt_gpsman_o_snwhite'
6586          },
6587          'urlbase' => {
6588            'min'     => '',
6589            'desc'    => 'Basename prepended to URL on output',
6590            'max'     => '',
6591            'default' => '',
6592            'type'    => 'string',
6593            'doclink' =>
6594             'http://www.gpsbabel.org/htmldoc-development/fmt_gpsman.html#fmt_gpsman_o_urlbase'
6595          },
6596          'snupper' => {
6597            'min'     => '',
6598            'desc'    => 'UPPERCASE synth. shortnames',
6599            'max'     => '',
6600            'default' => '',
6601            'type'    => 'boolean',
6602            'doclink' =>
6603             'http://www.gpsbabel.org/htmldoc-development/fmt_gpsman.html#fmt_gpsman_o_snupper'
6604          },
6605          'datum' => {
6606            'min'     => '',
6607            'desc'    => 'GPS datum (def. WGS 84)',
6608            'max'     => '',
6609            'default' => 'WGS 84',
6610            'type'    => 'string',
6611            'doclink' =>
6612             'http://www.gpsbabel.org/htmldoc-development/fmt_gpsman.html#fmt_gpsman_o_datum'
6613          },
6614          'snlen' => {
6615            'min'     => '1',
6616            'desc'    => 'Max synthesized shortname length',
6617            'max'     => '',
6618            'default' => '',
6619            'type'    => 'integer',
6620            'doclink' =>
6621             'http://www.gpsbabel.org/htmldoc-development/fmt_gpsman.html#fmt_gpsman_o_snlen'
6622          },
6623          'prefer_shortnames' => {
6624            'min'     => '',
6625            'desc'    => 'Use shortname instead of description',
6626            'max'     => '',
6627            'default' => '',
6628            'type'    => 'boolean',
6629            'doclink' =>
6630             'http://www.gpsbabel.org/htmldoc-development/fmt_gpsman.html#fmt_gpsman_o_prefer_shortnames'
6631          }
6632        },
6633        'desc'  => 'GPSman',
6634        'modes' => 'rw----',
6635        'doclink' =>
6636         'http://www.gpsbabel.org/htmldoc-development/fmt_gpsman.html'
6637      },
6638      'gpl' => {
6639        'nmodes' => 12,
6640        'parent' => 'gpl',
6641        'desc'   => 'DeLorme GPL',
6642        'modes'  => '--rw--',
6643        'ext'    => 'gpl',
6644        'doclink' =>
6645         'http://www.gpsbabel.org/htmldoc-development/fmt_gpl.html'
6646      },
6647      'vcard' => {
6648        'nmodes'  => 16,
6649        'parent'  => 'vcard',
6650        'options' => {
6651          'encrypt' => {
6652            'min'     => '',
6653            'desc'    => 'Encrypt hints using ROT13',
6654            'max'     => '',
6655            'default' => '',
6656            'type'    => 'boolean',
6657            'doclink' =>
6658             'http://www.gpsbabel.org/htmldoc-development/fmt_vcard.html#fmt_vcard_o_encrypt'
6659          }
6660        },
6661        'desc'  => 'Vcard Output (for iPod)',
6662        'modes' => '-w----',
6663        'ext'   => 'vcf',
6664        'doclink' =>
6665         'http://www.gpsbabel.org/htmldoc-development/fmt_vcard.html'
6666      },
6667      'tef' => {
6668        'nmodes'  => 2,
6669        'parent'  => 'tef',
6670        'options' => {
6671          'routevia' => {
6672            'min'     => '',
6673            'desc'    => 'Include only via stations in route',
6674            'max'     => '',
6675            'default' => '',
6676            'type'    => 'boolean',
6677            'doclink' =>
6678             'http://www.gpsbabel.org/htmldoc-development/fmt_tef.html#fmt_tef_o_routevia'
6679          }
6680        },
6681        'desc'  => 'Map&Guide \'TourExchangeFormat\' XML',
6682        'modes' => '----r-',
6683        'ext'   => 'xml',
6684        'doclink' =>
6685         'http://www.gpsbabel.org/htmldoc-development/fmt_tef.html'
6686      },
6687      'arc' => {
6688        'nmodes'  => 48,
6689        'parent'  => 'xcsv',
6690        'options' => {
6691          'snunique' => {
6692            'min'     => '',
6693            'desc'    => 'Make synth. shortnames unique',
6694            'max'     => '',
6695            'default' => '',
6696            'type'    => 'boolean',
6697            'doclink' =>
6698             'http://www.gpsbabel.org/htmldoc-development/fmt_arc.html#fmt_arc_o_snunique'
6699          },
6700          'snwhite' => {
6701            'min'     => '',
6702            'desc'    => 'Allow whitespace synth. shortnames',
6703            'max'     => '',
6704            'default' => '',
6705            'type'    => 'boolean',
6706            'doclink' =>
6707             'http://www.gpsbabel.org/htmldoc-development/fmt_arc.html#fmt_arc_o_snwhite'
6708          },
6709          'urlbase' => {
6710            'min'     => '',
6711            'desc'    => 'Basename prepended to URL on output',
6712            'max'     => '',
6713            'default' => '',
6714            'type'    => 'string',
6715            'doclink' =>
6716             'http://www.gpsbabel.org/htmldoc-development/fmt_arc.html#fmt_arc_o_urlbase'
6717          },
6718          'snupper' => {
6719            'min'     => '',
6720            'desc'    => 'UPPERCASE synth. shortnames',
6721            'max'     => '',
6722            'default' => '',
6723            'type'    => 'boolean',
6724            'doclink' =>
6725             'http://www.gpsbabel.org/htmldoc-development/fmt_arc.html#fmt_arc_o_snupper'
6726          },
6727          'datum' => {
6728            'min'     => '',
6729            'desc'    => 'GPS datum (def. WGS 84)',
6730            'max'     => '',
6731            'default' => 'WGS 84',
6732            'type'    => 'string',
6733            'doclink' =>
6734             'http://www.gpsbabel.org/htmldoc-development/fmt_arc.html#fmt_arc_o_datum'
6735          },
6736          'snlen' => {
6737            'min'     => '1',
6738            'desc'    => 'Max synthesized shortname length',
6739            'max'     => '',
6740            'default' => '',
6741            'type'    => 'integer',
6742            'doclink' =>
6743             'http://www.gpsbabel.org/htmldoc-development/fmt_arc.html#fmt_arc_o_snlen'
6744          },
6745          'prefer_shortnames' => {
6746            'min'     => '',
6747            'desc'    => 'Use shortname instead of description',
6748            'max'     => '',
6749            'default' => '',
6750            'type'    => 'boolean',
6751            'doclink' =>
6752             'http://www.gpsbabel.org/htmldoc-development/fmt_arc.html#fmt_arc_o_prefer_shortnames'
6753          }
6754        },
6755        'desc'  => 'GPSBabel arc filter file',
6756        'modes' => 'rw----',
6757        'ext'   => 'txt',
6758        'doclink' =>
6759         'http://www.gpsbabel.org/htmldoc-development/fmt_arc.html'
6760      },
6761      'kwf2' => {
6762        'nmodes'  => 48,
6763        'parent'  => 'xcsv',
6764        'options' => {
6765          'snunique' => {
6766            'min'     => '',
6767            'desc'    => 'Make synth. shortnames unique',
6768            'max'     => '',
6769            'default' => '',
6770            'type'    => 'boolean',
6771            'doclink' =>
6772             'http://www.gpsbabel.org/htmldoc-development/fmt_kwf2.html#fmt_kwf2_o_snunique'
6773          },
6774          'snwhite' => {
6775            'min'     => '',
6776            'desc'    => 'Allow whitespace synth. shortnames',
6777            'max'     => '',
6778            'default' => '',
6779            'type'    => 'boolean',
6780            'doclink' =>
6781             'http://www.gpsbabel.org/htmldoc-development/fmt_kwf2.html#fmt_kwf2_o_snwhite'
6782          },
6783          'urlbase' => {
6784            'min'     => '',
6785            'desc'    => 'Basename prepended to URL on output',
6786            'max'     => '',
6787            'default' => '',
6788            'type'    => 'string',
6789            'doclink' =>
6790             'http://www.gpsbabel.org/htmldoc-development/fmt_kwf2.html#fmt_kwf2_o_urlbase'
6791          },
6792          'snupper' => {
6793            'min'     => '',
6794            'desc'    => 'UPPERCASE synth. shortnames',
6795            'max'     => '',
6796            'default' => '',
6797            'type'    => 'boolean',
6798            'doclink' =>
6799             'http://www.gpsbabel.org/htmldoc-development/fmt_kwf2.html#fmt_kwf2_o_snupper'
6800          },
6801          'datum' => {
6802            'min'     => '',
6803            'desc'    => 'GPS datum (def. WGS 84)',
6804            'max'     => '',
6805            'default' => 'WGS 84',
6806            'type'    => 'string',
6807            'doclink' =>
6808             'http://www.gpsbabel.org/htmldoc-development/fmt_kwf2.html#fmt_kwf2_o_datum'
6809          },
6810          'snlen' => {
6811            'min'     => '1',
6812            'desc'    => 'Max synthesized shortname length',
6813            'max'     => '',
6814            'default' => '',
6815            'type'    => 'integer',
6816            'doclink' =>
6817             'http://www.gpsbabel.org/htmldoc-development/fmt_kwf2.html#fmt_kwf2_o_snlen'
6818          },
6819          'prefer_shortnames' => {
6820            'min'     => '',
6821            'desc'    => 'Use shortname instead of description',
6822            'max'     => '',
6823            'default' => '',
6824            'type'    => 'boolean',
6825            'doclink' =>
6826             'http://www.gpsbabel.org/htmldoc-development/fmt_kwf2.html#fmt_kwf2_o_prefer_shortnames'
6827          }
6828        },
6829        'desc'  => 'Kartex 5 Waypoint File',
6830        'modes' => 'rw----',
6831        'ext'   => 'kwf',
6832        'doclink' =>
6833         'http://www.gpsbabel.org/htmldoc-development/fmt_kwf2.html'
6834      },
6835      'cup' => {
6836        'nmodes'  => 48,
6837        'parent'  => 'xcsv',
6838        'options' => {
6839          'snunique' => {
6840            'min'     => '',
6841            'desc'    => 'Make synth. shortnames unique',
6842            'max'     => '',
6843            'default' => '',
6844            'type'    => 'boolean',
6845            'doclink' =>
6846             'http://www.gpsbabel.org/htmldoc-development/fmt_cup.html#fmt_cup_o_snunique'
6847          },
6848          'snwhite' => {
6849            'min'     => '',
6850            'desc'    => 'Allow whitespace synth. shortnames',
6851            'max'     => '',
6852            'default' => '',
6853            'type'    => 'boolean',
6854            'doclink' =>
6855             'http://www.gpsbabel.org/htmldoc-development/fmt_cup.html#fmt_cup_o_snwhite'
6856          },
6857          'urlbase' => {
6858            'min'     => '',
6859            'desc'    => 'Basename prepended to URL on output',
6860            'max'     => '',
6861            'default' => '',
6862            'type'    => 'string',
6863            'doclink' =>
6864             'http://www.gpsbabel.org/htmldoc-development/fmt_cup.html#fmt_cup_o_urlbase'
6865          },
6866          'snupper' => {
6867            'min'     => '',
6868            'desc'    => 'UPPERCASE synth. shortnames',
6869            'max'     => '',
6870            'default' => '',
6871            'type'    => 'boolean',
6872            'doclink' =>
6873             'http://www.gpsbabel.org/htmldoc-development/fmt_cup.html#fmt_cup_o_snupper'
6874          },
6875          'datum' => {
6876            'min'     => '',
6877            'desc'    => 'GPS datum (def. WGS 84)',
6878            'max'     => '',
6879            'default' => 'WGS 84',
6880            'type'    => 'string',
6881            'doclink' =>
6882             'http://www.gpsbabel.org/htmldoc-development/fmt_cup.html#fmt_cup_o_datum'
6883          },
6884          'snlen' => {
6885            'min'     => '1',
6886            'desc'    => 'Max synthesized shortname length',
6887            'max'     => '',
6888            'default' => '',
6889            'type'    => 'integer',
6890            'doclink' =>
6891             'http://www.gpsbabel.org/htmldoc-development/fmt_cup.html#fmt_cup_o_snlen'
6892          },
6893          'prefer_shortnames' => {
6894            'min'     => '',
6895            'desc'    => 'Use shortname instead of description',
6896            'max'     => '',
6897            'default' => '',
6898            'type'    => 'boolean',
6899            'doclink' =>
6900             'http://www.gpsbabel.org/htmldoc-development/fmt_cup.html#fmt_cup_o_prefer_shortnames'
6901          }
6902        },
6903        'desc'  => 'See You flight analysis data',
6904        'modes' => 'rw----',
6905        'ext'   => 'cup',
6906        'doclink' =>
6907         'http://www.gpsbabel.org/htmldoc-development/fmt_cup.html'
6908      },
6909      'quovadis' => {
6910        'nmodes'  => 48,
6911        'parent'  => 'quovadis',
6912        'options' => {
6913          'dbname' => {
6914            'min'     => '',
6915            'desc'    => 'Database name',
6916            'max'     => '',
6917            'default' => '',
6918            'type'    => 'string',
6919            'doclink' =>
6920             'http://www.gpsbabel.org/htmldoc-development/fmt_quovadis.html#fmt_quovadis_o_dbname'
6921          }
6922        },
6923        'desc'  => 'Quovadis',
6924        'modes' => 'rw----',
6925        'ext'   => 'pdb',
6926        'doclink' =>
6927         'http://www.gpsbabel.org/htmldoc-development/fmt_quovadis.html'
6928      },
6929      's_and_t' => {
6930        'nmodes'  => 48,
6931        'parent'  => 'xcsv',
6932        'options' => {
6933          'snunique' => {
6934            'min'     => '',
6935            'desc'    => 'Make synth. shortnames unique',
6936            'max'     => '',
6937            'default' => '',
6938            'type'    => 'boolean',
6939            'doclink' =>
6940             'http://www.gpsbabel.org/htmldoc-development/fmt_s_and_t.html#fmt_s_and_t_o_snunique'
6941          },
6942          'snwhite' => {
6943            'min'     => '',
6944            'desc'    => 'Allow whitespace synth. shortnames',
6945            'max'     => '',
6946            'default' => '',
6947            'type'    => 'boolean',
6948            'doclink' =>
6949             'http://www.gpsbabel.org/htmldoc-development/fmt_s_and_t.html#fmt_s_and_t_o_snwhite'
6950          },
6951          'urlbase' => {
6952            'min'     => '',
6953            'desc'    => 'Basename prepended to URL on output',
6954            'max'     => '',
6955            'default' => '',
6956            'type'    => 'string',
6957            'doclink' =>
6958             'http://www.gpsbabel.org/htmldoc-development/fmt_s_and_t.html#fmt_s_and_t_o_urlbase'
6959          },
6960          'snupper' => {
6961            'min'     => '',
6962            'desc'    => 'UPPERCASE synth. shortnames',
6963            'max'     => '',
6964            'default' => '',
6965            'type'    => 'boolean',
6966            'doclink' =>
6967             'http://www.gpsbabel.org/htmldoc-development/fmt_s_and_t.html#fmt_s_and_t_o_snupper'
6968          },
6969          'datum' => {
6970            'min'     => '',
6971            'desc'    => 'GPS datum (def. WGS 84)',
6972            'max'     => '',
6973            'default' => 'WGS 84',
6974            'type'    => 'string',
6975            'doclink' =>
6976             'http://www.gpsbabel.org/htmldoc-development/fmt_s_and_t.html#fmt_s_and_t_o_datum'
6977          },
6978          'snlen' => {
6979            'min'     => '1',
6980            'desc'    => 'Max synthesized shortname length',
6981            'max'     => '',
6982            'default' => '',
6983            'type'    => 'integer',
6984            'doclink' =>
6985             'http://www.gpsbabel.org/htmldoc-development/fmt_s_and_t.html#fmt_s_and_t_o_snlen'
6986          },
6987          'prefer_shortnames' => {
6988            'min'     => '',
6989            'desc'    => 'Use shortname instead of description',
6990            'max'     => '',
6991            'default' => '',
6992            'type'    => 'boolean',
6993            'doclink' =>
6994             'http://www.gpsbabel.org/htmldoc-development/fmt_s_and_t.html#fmt_s_and_t_o_prefer_shortnames'
6995          }
6996        },
6997        'desc'  => 'Microsoft Streets and Trips 2002-2006',
6998        'modes' => 'rw----',
6999        'ext'   => 'txt',
7000        'doclink' =>
7001         'http://www.gpsbabel.org/htmldoc-development/fmt_s_and_t.html'
7002      },
7003      'tpo2' => {
7004        'nmodes' => 8,
7005        'parent' => 'tpo2',
7006        'desc'   => 'National Geographic Topo 2.x .tpo',
7007        'modes'  => '--r---',
7008        'ext'    => 'tpo',
7009        'doclink' =>
7010         'http://www.gpsbabel.org/htmldoc-development/fmt_tpo2.html'
7011      },
7012      'cst' => {
7013        'nmodes' => 42,
7014        'parent' => 'cst',
7015        'desc'   => 'CarteSurTable data file',
7016        'modes'  => 'r-r-r-',
7017        'ext'    => 'cst',
7018        'doclink' =>
7019         'http://www.gpsbabel.org/htmldoc-development/fmt_cst.html'
7020      },
7021      'stmwpp' => {
7022        'nmodes'  => 63,
7023        'parent'  => 'stmwpp',
7024        'options' => {
7025          'index' => {
7026            'min' => '1',
7027            'desc' =>
7028             'Index of route/track to write (if more the one in source)',
7029            'max'     => '',
7030            'default' => '',
7031            'type'    => 'integer',
7032            'doclink' =>
7033             'http://www.gpsbabel.org/htmldoc-development/fmt_stmwpp.html#fmt_stmwpp_o_index'
7034          }
7035        },
7036        'desc'  => 'Suunto Trek Manager (STM) WaypointPlus files',
7037        'modes' => 'rwrwrw',
7038        'ext'   => 'txt',
7039        'doclink' =>
7040         'http://www.gpsbabel.org/htmldoc-development/fmt_stmwpp.html'
7041      },
7042      'ignrando' => {
7043        'nmodes'  => 12,
7044        'parent'  => 'ignrando',
7045        'options' => {
7046          'index' => {
7047            'min' => '1',
7048            'desc' =>
7049             'Index of track to write (if more the one in source)',
7050            'max'     => '',
7051            'default' => '',
7052            'type'    => 'integer',
7053            'doclink' =>
7054             'http://www.gpsbabel.org/htmldoc-development/fmt_ignrando.html#fmt_ignrando_o_index'
7055          }
7056        },
7057        'desc'  => 'IGN Rando track files',
7058        'modes' => '--rw--',
7059        'ext'   => 'rdn',
7060        'doclink' =>
7061         'http://www.gpsbabel.org/htmldoc-development/fmt_ignrando.html'
7062      },
7063      'navicache' => {
7064        'nmodes'  => 32,
7065        'parent'  => 'navicache',
7066        'options' => {
7067          'noretired' => {
7068            'min'     => '',
7069            'desc'    => 'Suppress retired geocaches',
7070            'max'     => '',
7071            'default' => '',
7072            'type'    => 'boolean',
7073            'doclink' =>
7074             'http://www.gpsbabel.org/htmldoc-development/fmt_navicache.html#fmt_navicache_o_noretired'
7075          }
7076        },
7077        'desc'  => 'Navicache.com XML',
7078        'modes' => 'r-----',
7079        'doclink' =>
7080         'http://www.gpsbabel.org/htmldoc-development/fmt_navicache.html'
7081      },
7082      'psitrex' => {
7083        'nmodes' => 63,
7084        'parent' => 'psitrex',
7085        'desc'   => 'KuDaTa PsiTrex text',
7086        'modes'  => 'rwrwrw',
7087        'doclink' =>
7088         'http://www.gpsbabel.org/htmldoc-development/fmt_psitrex.html'
7089      },
7090      'unicsv' => {
7091        'nmodes'  => 63,
7092        'parent'  => 'unicsv',
7093        'options' => {
7094          'grid' => {
7095            'min'     => '',
7096            'desc'    => 'Write position using this grid.',
7097            'max'     => '',
7098            'default' => '',
7099            'type'    => 'string',
7100            'doclink' =>
7101             'http://www.gpsbabel.org/htmldoc-development/fmt_unicsv.html#fmt_unicsv_o_grid'
7102          },
7103          'utc' => {
7104            'min'     => '-23',
7105            'desc'    => 'Write timestamps with offset x to UTC time',
7106            'max'     => '+23',
7107            'default' => '',
7108            'type'    => 'integer',
7109            'doclink' =>
7110             'http://www.gpsbabel.org/htmldoc-development/fmt_unicsv.html#fmt_unicsv_o_utc'
7111          },
7112          'datum' => {
7113            'min'     => '',
7114            'desc'    => 'GPS datum (def. WGS 84)',
7115            'max'     => '',
7116            'default' => 'WGS 84',
7117            'type'    => 'string',
7118            'doclink' =>
7119             'http://www.gpsbabel.org/htmldoc-development/fmt_unicsv.html#fmt_unicsv_o_datum'
7120          }
7121        },
7122        'desc'  => 'Universal csv with field structure in first line',
7123        'modes' => 'rwrwrw',
7124        'doclink' =>
7125         'http://www.gpsbabel.org/htmldoc-development/fmt_unicsv.html'
7126      },
7127      'tmpro' => {
7128        'nmodes' => 48,
7129        'parent' => 'tmpro',
7130        'desc'   => 'TopoMapPro Places File',
7131        'modes'  => 'rw----',
7132        'ext'    => 'tmpro',
7133        'doclink' =>
7134         'http://www.gpsbabel.org/htmldoc-development/fmt_tmpro.html'
7135      },
7136      'shape' => {
7137        'options' => {
7138          'url' => {
7139            'min'     => '',
7140            'desc'    => 'Index of URL field in .dbf',
7141            'max'     => '',
7142            'default' => '',
7143            'type'    => 'integer',
7144            'doclink' =>
7145             'http://www.gpsbabel.org/htmldoc-development/fmt_shape.html#fmt_shape_o_url'
7146          },
7147          'name' => {
7148            'min'     => '',
7149            'desc'    => 'Index of name field in .dbf',
7150            'max'     => '',
7151            'default' => '',
7152            'type'    => 'string',
7153            'doclink' =>
7154             'http://www.gpsbabel.org/htmldoc-development/fmt_shape.html#fmt_shape_o_name'
7155          }
7156        }
7157      },
7158      'lmx' => {
7159        'nmodes' => 48,
7160        'parent' => 'lmx',
7161        'desc'   => 'Nokia Landmark Exchange',
7162        'modes'  => 'rw----',
7163        'doclink' =>
7164         'http://www.gpsbabel.org/htmldoc-development/fmt_lmx.html'
7165      },
7166      'saplus' => {
7167        'nmodes'  => 48,
7168        'parent'  => 'xcsv',
7169        'options' => {
7170          'snunique' => {
7171            'min'     => '',
7172            'desc'    => 'Make synth. shortnames unique',
7173            'max'     => '',
7174            'default' => '',
7175            'type'    => 'boolean',
7176            'doclink' =>
7177             'http://www.gpsbabel.org/htmldoc-development/fmt_saplus.html#fmt_saplus_o_snunique'
7178          },
7179          'snwhite' => {
7180            'min'     => '',
7181            'desc'    => 'Allow whitespace synth. shortnames',
7182            'max'     => '',
7183            'default' => '',
7184            'type'    => 'boolean',
7185            'doclink' =>
7186             'http://www.gpsbabel.org/htmldoc-development/fmt_saplus.html#fmt_saplus_o_snwhite'
7187          },
7188          'urlbase' => {
7189            'min'     => '',
7190            'desc'    => 'Basename prepended to URL on output',
7191            'max'     => '',
7192            'default' => '',
7193            'type'    => 'string',
7194            'doclink' =>
7195             'http://www.gpsbabel.org/htmldoc-development/fmt_saplus.html#fmt_saplus_o_urlbase'
7196          },
7197          'snupper' => {
7198            'min'     => '',
7199            'desc'    => 'UPPERCASE synth. shortnames',
7200            'max'     => '',
7201            'default' => '',
7202            'type'    => 'boolean',
7203            'doclink' =>
7204             'http://www.gpsbabel.org/htmldoc-development/fmt_saplus.html#fmt_saplus_o_snupper'
7205          },
7206          'datum' => {
7207            'min'     => '',
7208            'desc'    => 'GPS datum (def. WGS 84)',
7209            'max'     => '',
7210            'default' => 'WGS 84',
7211            'type'    => 'string',
7212            'doclink' =>
7213             'http://www.gpsbabel.org/htmldoc-development/fmt_saplus.html#fmt_saplus_o_datum'
7214          },
7215          'snlen' => {
7216            'min'     => '1',
7217            'desc'    => 'Max synthesized shortname length',
7218            'max'     => '',
7219            'default' => '',
7220            'type'    => 'integer',
7221            'doclink' =>
7222             'http://www.gpsbabel.org/htmldoc-development/fmt_saplus.html#fmt_saplus_o_snlen'
7223          },
7224          'prefer_shortnames' => {
7225            'min'     => '',
7226            'desc'    => 'Use shortname instead of description',
7227            'max'     => '',
7228            'default' => '',
7229            'type'    => 'boolean',
7230            'doclink' =>
7231             'http://www.gpsbabel.org/htmldoc-development/fmt_saplus.html#fmt_saplus_o_prefer_shortnames'
7232          }
7233        },
7234        'desc'  => 'DeLorme Street Atlas Plus',
7235        'modes' => 'rw----',
7236        'doclink' =>
7237         'http://www.gpsbabel.org/htmldoc-development/fmt_saplus.html'
7238      },
7239      'dna' => {
7240        'nmodes'  => 48,
7241        'parent'  => 'xcsv',
7242        'options' => {
7243          'snunique' => {
7244            'min'     => '',
7245            'desc'    => 'Make synth. shortnames unique',
7246            'max'     => '',
7247            'default' => '',
7248            'type'    => 'boolean',
7249            'doclink' =>
7250             'http://www.gpsbabel.org/htmldoc-development/fmt_dna.html#fmt_dna_o_snunique'
7251          },
7252          'snwhite' => {
7253            'min'     => '',
7254            'desc'    => 'Allow whitespace synth. shortnames',
7255            'max'     => '',
7256            'default' => '',
7257            'type'    => 'boolean',
7258            'doclink' =>
7259             'http://www.gpsbabel.org/htmldoc-development/fmt_dna.html#fmt_dna_o_snwhite'
7260          },
7261          'urlbase' => {
7262            'min'     => '',
7263            'desc'    => 'Basename prepended to URL on output',
7264            'max'     => '',
7265            'default' => '',
7266            'type'    => 'string',
7267            'doclink' =>
7268             'http://www.gpsbabel.org/htmldoc-development/fmt_dna.html#fmt_dna_o_urlbase'
7269          },
7270          'snupper' => {
7271            'min'     => '',
7272            'desc'    => 'UPPERCASE synth. shortnames',
7273            'max'     => '',
7274            'default' => '',
7275            'type'    => 'boolean',
7276            'doclink' =>
7277             'http://www.gpsbabel.org/htmldoc-development/fmt_dna.html#fmt_dna_o_snupper'
7278          },
7279          'datum' => {
7280            'min'     => '',
7281            'desc'    => 'GPS datum (def. WGS 84)',
7282            'max'     => '',
7283            'default' => 'WGS 84',
7284            'type'    => 'string',
7285            'doclink' =>
7286             'http://www.gpsbabel.org/htmldoc-development/fmt_dna.html#fmt_dna_o_datum'
7287          },
7288          'snlen' => {
7289            'min'     => '1',
7290            'desc'    => 'Max synthesized shortname length',
7291            'max'     => '',
7292            'default' => '',
7293            'type'    => 'integer',
7294            'doclink' =>
7295             'http://www.gpsbabel.org/htmldoc-development/fmt_dna.html#fmt_dna_o_snlen'
7296          },
7297          'prefer_shortnames' => {
7298            'min'     => '',
7299            'desc'    => 'Use shortname instead of description',
7300            'max'     => '',
7301            'default' => '',
7302            'type'    => 'boolean',
7303            'doclink' =>
7304             'http://www.gpsbabel.org/htmldoc-development/fmt_dna.html#fmt_dna_o_prefer_shortnames'
7305          }
7306        },
7307        'desc'  => 'Navitrak DNA marker format',
7308        'modes' => 'rw----',
7309        'ext'   => 'dna',
7310        'doclink' =>
7311         'http://www.gpsbabel.org/htmldoc-development/fmt_dna.html'
7312      },
7313      'gtm' => {
7314        'nmodes' => 63,
7315        'parent' => 'gtm',
7316        'desc'   => 'GPS TrackMaker',
7317        'modes'  => 'rwrwrw',
7318        'ext'    => 'gtm',
7319        'doclink' =>
7320         'http://www.gpsbabel.org/htmldoc-development/fmt_gtm.html'
7321      },
7322      'compegps' => {
7323        'nmodes'  => 63,
7324        'parent'  => 'compegps',
7325        'options' => {
7326          'index' => {
7327            'min' => '1',
7328            'desc' =>
7329             'Index of route/track to write (if more the one in source)',
7330            'max'     => '',
7331            'default' => '',
7332            'type'    => 'integer',
7333            'doclink' =>
7334             'http://www.gpsbabel.org/htmldoc-development/fmt_compegps.html#fmt_compegps_o_index'
7335          },
7336          'radius' => {
7337            'min' => '',
7338            'desc' =>
7339             'Give points (waypoints/route points) a default radius (proximity)',
7340            'max'     => '',
7341            'default' => '',
7342            'type'    => 'float',
7343            'doclink' =>
7344             'http://www.gpsbabel.org/htmldoc-development/fmt_compegps.html#fmt_compegps_o_radius'
7345          },
7346          'snlen' => {
7347            'min'     => '1',
7348            'desc'    => 'Length of generated shortnames (default 16)',
7349            'max'     => '',
7350            'default' => '16',
7351            'type'    => 'integer',
7352            'doclink' =>
7353             'http://www.gpsbabel.org/htmldoc-development/fmt_compegps.html#fmt_compegps_o_snlen'
7354          },
7355          'deficon' => {
7356            'min'     => '',
7357            'desc'    => 'Default icon name',
7358            'max'     => '',
7359            'default' => '',
7360            'type'    => 'string',
7361            'doclink' =>
7362             'http://www.gpsbabel.org/htmldoc-development/fmt_compegps.html#fmt_compegps_o_deficon'
7363          }
7364        },
7365        'desc'  => 'CompeGPS data files (.wpt/.trk/.rte)',
7366        'modes' => 'rwrwrw',
7367        'doclink' =>
7368         'http://www.gpsbabel.org/htmldoc-development/fmt_compegps.html'
7369      },
7370      'copilot' => {
7371        'nmodes' => 48,
7372        'parent' => 'copilot',
7373        'desc'   => 'CoPilot Flight Planner for Palm/OS',
7374        'modes'  => 'rw----',
7375        'ext'    => 'pdb',
7376        'doclink' =>
7377         'http://www.gpsbabel.org/htmldoc-development/fmt_copilot.html'
7378      },
7379      'nmea' => {
7380        'nmodes'  => 60,
7381        'parent'  => 'nmea',
7382        'options' => {
7383          'gpvtg' => {
7384            'min'     => '',
7385            'desc'    => 'Read/write GPVTG sentences',
7386            'max'     => '',
7387            'default' => '1',
7388            'type'    => 'boolean',
7389            'doclink' =>
7390             'http://www.gpsbabel.org/htmldoc-development/fmt_nmea.html#fmt_nmea_o_gpvtg'
7391          },
7392          'baud' => {
7393            'min' => '',
7394            'desc' =>
7395             'Speed in bits per second of serial port (baud=4800)',
7396            'max'     => '',
7397            'default' => '',
7398            'type'    => 'integer',
7399            'doclink' =>
7400             'http://www.gpsbabel.org/htmldoc-development/fmt_nmea.html#fmt_nmea_o_baud'
7401          },
7402          'date' => {
7403            'min' => '',
7404            'desc' =>
7405             'Complete date-free tracks with given date (YYYYMMDD).',
7406            'max'     => '',
7407            'default' => '',
7408            'type'    => 'integer',
7409            'doclink' =>
7410             'http://www.gpsbabel.org/htmldoc-development/fmt_nmea.html#fmt_nmea_o_date'
7411          },
7412          'snlen' => {
7413            'min'     => '1',
7414            'desc'    => 'Max length of waypoint name to write',
7415            'max'     => '64',
7416            'default' => '6',
7417            'type'    => 'integer',
7418            'doclink' =>
7419             'http://www.gpsbabel.org/htmldoc-development/fmt_nmea.html#fmt_nmea_o_snlen'
7420          },
7421          'get_posn' => {
7422            'min'     => '',
7423            'desc'    => 'Return current position as a waypoint',
7424            'max'     => '',
7425            'default' => '',
7426            'type'    => 'boolean',
7427            'doclink' =>
7428             'http://www.gpsbabel.org/htmldoc-development/fmt_nmea.html#fmt_nmea_o_get_posn'
7429          },
7430          'append_positioning' => {
7431            'min' => '',
7432            'desc' =>
7433             'Append realtime positioning data to the output file instead of truncating',
7434            'max'     => '',
7435            'default' => '',
7436            'type'    => 'boolean',
7437            'doclink' =>
7438             'http://www.gpsbabel.org/htmldoc-development/fmt_nmea.html#fmt_nmea_o_append_positioning'
7439          },
7440          'pause' => {
7441            'min' => '',
7442            'desc' =>
7443             'Decimal seconds to pause between groups of strings',
7444            'max'     => '',
7445            'default' => '',
7446            'type'    => 'integer',
7447            'doclink' =>
7448             'http://www.gpsbabel.org/htmldoc-development/fmt_nmea.html#fmt_nmea_o_pause'
7449          },
7450          'gpgga' => {
7451            'min'     => '',
7452            'desc'    => 'Read/write GPGGA sentences',
7453            'max'     => '',
7454            'default' => '1',
7455            'type'    => 'boolean',
7456            'doclink' =>
7457             'http://www.gpsbabel.org/htmldoc-development/fmt_nmea.html#fmt_nmea_o_gpgga'
7458          },
7459          'gpgsa' => {
7460            'min'     => '',
7461            'desc'    => 'Read/write GPGSA sentences',
7462            'max'     => '',
7463            'default' => '1',
7464            'type'    => 'boolean',
7465            'doclink' =>
7466             'http://www.gpsbabel.org/htmldoc-development/fmt_nmea.html#fmt_nmea_o_gpgsa'
7467          },
7468          'gprmc' => {
7469            'min'     => '',
7470            'desc'    => 'Read/write GPRMC sentences',
7471            'max'     => '',
7472            'default' => '1',
7473            'type'    => 'boolean',
7474            'doclink' =>
7475             'http://www.gpsbabel.org/htmldoc-development/fmt_nmea.html#fmt_nmea_o_gprmc'
7476          }
7477        },
7478        'desc'  => 'NMEA 0183 sentences',
7479        'modes' => 'rwrw--',
7480        'doclink' =>
7481         'http://www.gpsbabel.org/htmldoc-development/fmt_nmea.html'
7482      },
7483      'mapsource' => {
7484        'nmodes'  => 63,
7485        'parent'  => 'mapsource',
7486        'options' => {
7487          'snwhite' => {
7488            'min'     => '',
7489            'desc'    => 'Allow whitespace synth. shortnames',
7490            'max'     => '',
7491            'default' => '',
7492            'type'    => 'boolean',
7493            'doclink' =>
7494             'http://www.gpsbabel.org/htmldoc-development/fmt_mapsource.html#fmt_mapsource_o_snwhite'
7495          },
7496          'mpsverout' => {
7497            'min'  => '',
7498            'desc' => 'Version of mapsource file to generate (3,4,5)',
7499            'max'  => '',
7500            'default' => '',
7501            'type'    => 'integer',
7502            'doclink' =>
7503             'http://www.gpsbabel.org/htmldoc-development/fmt_mapsource.html#fmt_mapsource_o_mpsverout'
7504          },
7505          'mpsusedepth' => {
7506            'min'  => '',
7507            'desc' => 'Use depth values on output (default is ignore)',
7508            'max'  => '',
7509            'default' => '',
7510            'type'    => 'boolean',
7511            'doclink' =>
7512             'http://www.gpsbabel.org/htmldoc-development/fmt_mapsource.html#fmt_mapsource_o_mpsusedepth'
7513          },
7514          'mpsuseprox' => {
7515            'min' => '',
7516            'desc' =>
7517             'Use proximity values on output (default is ignore)',
7518            'max'     => '',
7519            'default' => '',
7520            'type'    => 'boolean',
7521            'doclink' =>
7522             'http://www.gpsbabel.org/htmldoc-development/fmt_mapsource.html#fmt_mapsource_o_mpsuseprox'
7523          },
7524          'snlen' => {
7525            'min'     => '1',
7526            'desc'    => 'Length of generated shortnames',
7527            'max'     => '',
7528            'default' => '10',
7529            'type'    => 'integer',
7530            'doclink' =>
7531             'http://www.gpsbabel.org/htmldoc-development/fmt_mapsource.html#fmt_mapsource_o_snlen'
7532          },
7533          'mpsmergeout' => {
7534            'min'     => '',
7535            'desc'    => 'Merge output with existing file',
7536            'max'     => '',
7537            'default' => '',
7538            'type'    => 'boolean',
7539            'doclink' =>
7540             'http://www.gpsbabel.org/htmldoc-development/fmt_mapsource.html#fmt_mapsource_o_mpsmergeout'
7541          }
7542        },
7543        'desc'  => 'Garmin MapSource - mps',
7544        'modes' => 'rwrwrw',
7545        'ext'   => 'mps',
7546        'doclink' =>
7547         'http://www.gpsbabel.org/htmldoc-development/fmt_mapsource.html'
7548      },
7549      'axim_gpb' => {
7550        'nmodes' => 8,
7551        'parent' => 'axim_gpb',
7552        'desc'   => 'Dell Axim Navigation System (.gpb) file format',
7553        'modes'  => '--r---',
7554        'ext'    => 'gpb',
7555        'doclink' =>
7556         'http://www.gpsbabel.org/htmldoc-development/fmt_axim_gpb.html'
7557      },
7558      'gpsdrivetrack' => {
7559        'nmodes'  => 48,
7560        'parent'  => 'xcsv',
7561        'options' => {
7562          'snunique' => {
7563            'min'     => '',
7564            'desc'    => 'Make synth. shortnames unique',
7565            'max'     => '',
7566            'default' => '',
7567            'type'    => 'boolean',
7568            'doclink' =>
7569             'http://www.gpsbabel.org/htmldoc-development/fmt_gpsdrivetrack.html#fmt_gpsdrivetrack_o_snunique'
7570          },
7571          'snwhite' => {
7572            'min'     => '',
7573            'desc'    => 'Allow whitespace synth. shortnames',
7574            'max'     => '',
7575            'default' => '',
7576            'type'    => 'boolean',
7577            'doclink' =>
7578             'http://www.gpsbabel.org/htmldoc-development/fmt_gpsdrivetrack.html#fmt_gpsdrivetrack_o_snwhite'
7579          },
7580          'urlbase' => {
7581            'min'     => '',
7582            'desc'    => 'Basename prepended to URL on output',
7583            'max'     => '',
7584            'default' => '',
7585            'type'    => 'string',
7586            'doclink' =>
7587             'http://www.gpsbabel.org/htmldoc-development/fmt_gpsdrivetrack.html#fmt_gpsdrivetrack_o_urlbase'
7588          },
7589          'snupper' => {
7590            'min'     => '',
7591            'desc'    => 'UPPERCASE synth. shortnames',
7592            'max'     => '',
7593            'default' => '',
7594            'type'    => 'boolean',
7595            'doclink' =>
7596             'http://www.gpsbabel.org/htmldoc-development/fmt_gpsdrivetrack.html#fmt_gpsdrivetrack_o_snupper'
7597          },
7598          'datum' => {
7599            'min'     => '',
7600            'desc'    => 'GPS datum (def. WGS 84)',
7601            'max'     => '',
7602            'default' => 'WGS 84',
7603            'type'    => 'string',
7604            'doclink' =>
7605             'http://www.gpsbabel.org/htmldoc-development/fmt_gpsdrivetrack.html#fmt_gpsdrivetrack_o_datum'
7606          },
7607          'snlen' => {
7608            'min'     => '1',
7609            'desc'    => 'Max synthesized shortname length',
7610            'max'     => '',
7611            'default' => '',
7612            'type'    => 'integer',
7613            'doclink' =>
7614             'http://www.gpsbabel.org/htmldoc-development/fmt_gpsdrivetrack.html#fmt_gpsdrivetrack_o_snlen'
7615          },
7616          'prefer_shortnames' => {
7617            'min'     => '',
7618            'desc'    => 'Use shortname instead of description',
7619            'max'     => '',
7620            'default' => '',
7621            'type'    => 'boolean',
7622            'doclink' =>
7623             'http://www.gpsbabel.org/htmldoc-development/fmt_gpsdrivetrack.html#fmt_gpsdrivetrack_o_prefer_shortnames'
7624          }
7625        },
7626        'desc'  => 'GpsDrive Format for Tracks',
7627        'modes' => 'rw----',
7628        'doclink' =>
7629         'http://www.gpsbabel.org/htmldoc-development/fmt_gpsdrivetrack.html'
7630      },
7631      'hiketech' => {
7632        'nmodes' => 60,
7633        'parent' => 'hiketech',
7634        'desc'   => 'HikeTech',
7635        'modes'  => 'rwrw--',
7636        'ext'    => 'gps',
7637        'doclink' =>
7638         'http://www.gpsbabel.org/htmldoc-development/fmt_hiketech.html'
7639      },
7640      'random' => {
7641        'options' => {
7642          'points' => {
7643            'min'     => '1',
7644            'desc'    => 'Generate # points',
7645            'max'     => '',
7646            'default' => '',
7647            'type'    => 'integer',
7648            'doclink' =>
7649             'http://www.gpsbabel.org/htmldoc-development/fmt_random.html#fmt_random_o_points'
7650          },
7651          'seed' => {
7652            'min'  => '1',
7653            'desc' => 'Starting seed of the internal number generator',
7654            'max'  => '',
7655            'default' => '',
7656            'type'    => 'integer',
7657            'doclink' =>
7658             'http://www.gpsbabel.org/htmldoc-development/fmt_random.html#fmt_random_o_seed'
7659          }
7660        }
7661      },
7662      'kompass_tk' => {
7663        'nmodes'  => 12,
7664        'parent'  => 'xcsv',
7665        'options' => {
7666          'snunique' => {
7667            'min'     => '',
7668            'desc'    => 'Make synth. shortnames unique',
7669            'max'     => '',
7670            'default' => '',
7671            'type'    => 'boolean',
7672            'doclink' =>
7673             'http://www.gpsbabel.org/htmldoc-development/fmt_kompass_tk.html#fmt_kompass_tk_o_snunique'
7674          },
7675          'snwhite' => {
7676            'min'     => '',
7677            'desc'    => 'Allow whitespace synth. shortnames',
7678            'max'     => '',
7679            'default' => '',
7680            'type'    => 'boolean',
7681            'doclink' =>
7682             'http://www.gpsbabel.org/htmldoc-development/fmt_kompass_tk.html#fmt_kompass_tk_o_snwhite'
7683          },
7684          'urlbase' => {
7685            'min'     => '',
7686            'desc'    => 'Basename prepended to URL on output',
7687            'max'     => '',
7688            'default' => '',
7689            'type'    => 'string',
7690            'doclink' =>
7691             'http://www.gpsbabel.org/htmldoc-development/fmt_kompass_tk.html#fmt_kompass_tk_o_urlbase'
7692          },
7693          'snupper' => {
7694            'min'     => '',
7695            'desc'    => 'UPPERCASE synth. shortnames',
7696            'max'     => '',
7697            'default' => '',
7698            'type'    => 'boolean',
7699            'doclink' =>
7700             'http://www.gpsbabel.org/htmldoc-development/fmt_kompass_tk.html#fmt_kompass_tk_o_snupper'
7701          },
7702          'datum' => {
7703            'min'     => '',
7704            'desc'    => 'GPS datum (def. WGS 84)',
7705            'max'     => '',
7706            'default' => 'WGS 84',
7707            'type'    => 'string',
7708            'doclink' =>
7709             'http://www.gpsbabel.org/htmldoc-development/fmt_kompass_tk.html#fmt_kompass_tk_o_datum'
7710          },
7711          'snlen' => {
7712            'min'     => '1',
7713            'desc'    => 'Max synthesized shortname length',
7714            'max'     => '',
7715            'default' => '',
7716            'type'    => 'integer',
7717            'doclink' =>
7718             'http://www.gpsbabel.org/htmldoc-development/fmt_kompass_tk.html#fmt_kompass_tk_o_snlen'
7719          },
7720          'prefer_shortnames' => {
7721            'min'     => '',
7722            'desc'    => 'Use shortname instead of description',
7723            'max'     => '',
7724            'default' => '',
7725            'type'    => 'boolean',
7726            'doclink' =>
7727             'http://www.gpsbabel.org/htmldoc-development/fmt_kompass_tk.html#fmt_kompass_tk_o_prefer_shortnames'
7728          }
7729        },
7730        'desc'  => 'Kompass (DAV) Track (.tk)',
7731        'modes' => '--rw--',
7732        'ext'   => 'wp',
7733        'doclink' =>
7734         'http://www.gpsbabel.org/htmldoc-development/fmt_kompass_tk.html'
7735      },
7736      'dg-100' => {
7737        'options' => {
7738          'erase' => {
7739            'min'     => '',
7740            'desc'    => 'Erase device data after download',
7741            'max'     => '',
7742            'default' => '',
7743            'type'    => 'boolean',
7744            'doclink' =>
7745             'http://www.gpsbabel.org/htmldoc-development/fmt_dg-100.html#fmt_dg-100_o_erase'
7746          }
7747        }
7748      },
7749      'psp' => {
7750        'nmodes' => 48,
7751        'parent' => 'psp',
7752        'desc'   => 'MS PocketStreets 2002 Pushpin',
7753        'modes'  => 'rw----',
7754        'ext'    => 'psp',
7755        'doclink' =>
7756         'http://www.gpsbabel.org/htmldoc-development/fmt_psp.html'
7757      },
7758      'sportsim' => {
7759        'nmodes'  => 48,
7760        'parent'  => 'xcsv',
7761        'options' => {
7762          'snunique' => {
7763            'min'     => '',
7764            'desc'    => 'Make synth. shortnames unique',
7765            'max'     => '',
7766            'default' => '',
7767            'type'    => 'boolean',
7768            'doclink' =>
7769             'http://www.gpsbabel.org/htmldoc-development/fmt_sportsim.html#fmt_sportsim_o_snunique'
7770          },
7771          'snwhite' => {
7772            'min'     => '',
7773            'desc'    => 'Allow whitespace synth. shortnames',
7774            'max'     => '',
7775            'default' => '',
7776            'type'    => 'boolean',
7777            'doclink' =>
7778             'http://www.gpsbabel.org/htmldoc-development/fmt_sportsim.html#fmt_sportsim_o_snwhite'
7779          },
7780          'urlbase' => {
7781            'min'     => '',
7782            'desc'    => 'Basename prepended to URL on output',
7783            'max'     => '',
7784            'default' => '',
7785            'type'    => 'string',
7786            'doclink' =>
7787             'http://www.gpsbabel.org/htmldoc-development/fmt_sportsim.html#fmt_sportsim_o_urlbase'
7788          },
7789          'snupper' => {
7790            'min'     => '',
7791            'desc'    => 'UPPERCASE synth. shortnames',
7792            'max'     => '',
7793            'default' => '',
7794            'type'    => 'boolean',
7795            'doclink' =>
7796             'http://www.gpsbabel.org/htmldoc-development/fmt_sportsim.html#fmt_sportsim_o_snupper'
7797          },
7798          'datum' => {
7799            'min'     => '',
7800            'desc'    => 'GPS datum (def. WGS 84)',
7801            'max'     => '',
7802            'default' => 'WGS 84',
7803            'type'    => 'string',
7804            'doclink' =>
7805             'http://www.gpsbabel.org/htmldoc-development/fmt_sportsim.html#fmt_sportsim_o_datum'
7806          },
7807          'snlen' => {
7808            'min'     => '1',
7809            'desc'    => 'Max synthesized shortname length',
7810            'max'     => '',
7811            'default' => '',
7812            'type'    => 'integer',
7813            'doclink' =>
7814             'http://www.gpsbabel.org/htmldoc-development/fmt_sportsim.html#fmt_sportsim_o_snlen'
7815          },
7816          'prefer_shortnames' => {
7817            'min'     => '',
7818            'desc'    => 'Use shortname instead of description',
7819            'max'     => '',
7820            'default' => '',
7821            'type'    => 'boolean',
7822            'doclink' =>
7823             'http://www.gpsbabel.org/htmldoc-development/fmt_sportsim.html#fmt_sportsim_o_prefer_shortnames'
7824          }
7825        },
7826        'desc'  => 'Sportsim track files (part of zipped .ssz files)',
7827        'modes' => 'rw----',
7828        'ext'   => 'txt',
7829        'doclink' =>
7830         'http://www.gpsbabel.org/htmldoc-development/fmt_sportsim.html'
7831      },
7832      'ozi' => {
7833        'nmodes'  => 63,
7834        'parent'  => 'ozi',
7835        'options' => {
7836          'snunique' => {
7837            'min'     => '',
7838            'desc'    => 'Make synth. shortnames unique',
7839            'max'     => '',
7840            'default' => '',
7841            'type'    => 'boolean',
7842            'doclink' =>
7843             'http://www.gpsbabel.org/htmldoc-development/fmt_ozi.html#fmt_ozi_o_snunique'
7844          },
7845          'snwhite' => {
7846            'min'     => '',
7847            'desc'    => 'Allow whitespace synth. shortnames',
7848            'max'     => '',
7849            'default' => '',
7850            'type'    => 'boolean',
7851            'doclink' =>
7852             'http://www.gpsbabel.org/htmldoc-development/fmt_ozi.html#fmt_ozi_o_snwhite'
7853          },
7854          'snupper' => {
7855            'min'     => '',
7856            'desc'    => 'UPPERCASE synth. shortnames',
7857            'max'     => '',
7858            'default' => '',
7859            'type'    => 'boolean',
7860            'doclink' =>
7861             'http://www.gpsbabel.org/htmldoc-development/fmt_ozi.html#fmt_ozi_o_snupper'
7862          },
7863          'snlen' => {
7864            'min'     => '1',
7865            'desc'    => 'Max synthesized shortname length',
7866            'max'     => '',
7867            'default' => '32',
7868            'type'    => 'integer',
7869            'doclink' =>
7870             'http://www.gpsbabel.org/htmldoc-development/fmt_ozi.html#fmt_ozi_o_snlen'
7871          },
7872          'pack' => {
7873            'min'     => '',
7874            'desc'    => 'Write all tracks into one file',
7875            'max'     => '',
7876            'default' => '',
7877            'type'    => 'boolean',
7878            'doclink' =>
7879             'http://www.gpsbabel.org/htmldoc-development/fmt_ozi.html#fmt_ozi_o_pack'
7880          },
7881          'wptbgcolor' => {
7882            'min'     => '',
7883            'desc'    => 'Waypoint background color',
7884            'max'     => '',
7885            'default' => 'yellow',
7886            'type'    => 'string',
7887            'doclink' =>
7888             'http://www.gpsbabel.org/htmldoc-development/fmt_ozi.html#fmt_ozi_o_wptbgcolor'
7889          },
7890          'wptfgcolor' => {
7891            'min'     => '',
7892            'desc'    => 'Waypoint foreground color',
7893            'max'     => '',
7894            'default' => 'black',
7895            'type'    => 'string',
7896            'doclink' =>
7897             'http://www.gpsbabel.org/htmldoc-development/fmt_ozi.html#fmt_ozi_o_wptfgcolor'
7898          }
7899        },
7900        'desc'  => 'OziExplorer',
7901        'modes' => 'rwrwrw',
7902        'doclink' =>
7903         'http://www.gpsbabel.org/htmldoc-development/fmt_ozi.html'
7904      },
7905      'tabsep' => {
7906        'options' => {
7907          'snunique' => {
7908            'min'     => '',
7909            'desc'    => 'Make synth. shortnames unique',
7910            'max'     => '',
7911            'default' => '',
7912            'type'    => 'boolean',
7913            'doclink' =>
7914             'http://www.gpsbabel.org/htmldoc-development/fmt_tabsep.html#fmt_tabsep_o_snunique'
7915          },
7916          'snwhite' => {
7917            'min'     => '',
7918            'desc'    => 'Allow whitespace synth. shortnames',
7919            'max'     => '',
7920            'default' => '',
7921            'type'    => 'boolean',
7922            'doclink' =>
7923             'http://www.gpsbabel.org/htmldoc-development/fmt_tabsep.html#fmt_tabsep_o_snwhite'
7924          },
7925          'urlbase' => {
7926            'min'     => '',
7927            'desc'    => 'Basename prepended to URL on output',
7928            'max'     => '',
7929            'default' => '',
7930            'type'    => 'string',
7931            'doclink' =>
7932             'http://www.gpsbabel.org/htmldoc-development/fmt_tabsep.html#fmt_tabsep_o_urlbase'
7933          },
7934          'snupper' => {
7935            'min'     => '',
7936            'desc'    => 'UPPERCASE synth. shortnames',
7937            'max'     => '',
7938            'default' => '',
7939            'type'    => 'boolean',
7940            'doclink' =>
7941             'http://www.gpsbabel.org/htmldoc-development/fmt_tabsep.html#fmt_tabsep_o_snupper'
7942          },
7943          'datum' => {
7944            'min'     => '',
7945            'desc'    => 'GPS datum (def. WGS 84)',
7946            'max'     => '',
7947            'default' => 'WGS 84',
7948            'type'    => 'string',
7949            'doclink' =>
7950             'http://www.gpsbabel.org/htmldoc-development/fmt_tabsep.html#fmt_tabsep_o_datum'
7951          },
7952          'snlen' => {
7953            'min'     => '1',
7954            'desc'    => 'Max synthesized shortname length',
7955            'max'     => '',
7956            'default' => '',
7957            'type'    => 'integer',
7958            'doclink' =>
7959             'http://www.gpsbabel.org/htmldoc-development/fmt_tabsep.html#fmt_tabsep_o_snlen'
7960          },
7961          'prefer_shortnames' => {
7962            'min'     => '',
7963            'desc'    => 'Use shortname instead of description',
7964            'max'     => '',
7965            'default' => '',
7966            'type'    => 'boolean',
7967            'doclink' =>
7968             'http://www.gpsbabel.org/htmldoc-development/fmt_tabsep.html#fmt_tabsep_o_prefer_shortnames'
7969          }
7970        }
7971      },
7972      'coastexp' => {
7973        'nmodes' => 51,
7974        'parent' => 'coastexp',
7975        'desc'   => 'CoastalExplorer XML',
7976        'modes'  => 'rw--rw',
7977        'doclink' =>
7978         'http://www.gpsbabel.org/htmldoc-development/fmt_coastexp.html'
7979      },
7980      'palmdoc' => {
7981        'nmodes'  => 16,
7982        'parent'  => 'palmdoc',
7983        'options' => {
7984          'encrypt' => {
7985            'min'     => '',
7986            'desc'    => 'Encrypt hints with ROT13',
7987            'max'     => '',
7988            'default' => '',
7989            'type'    => 'boolean',
7990            'doclink' =>
7991             'http://www.gpsbabel.org/htmldoc-development/fmt_palmdoc.html#fmt_palmdoc_o_encrypt'
7992          },
7993          'nosep' => {
7994            'min'     => '',
7995            'desc'    => 'No separator lines between waypoints',
7996            'max'     => '',
7997            'default' => '',
7998            'type'    => 'boolean',
7999            'doclink' =>
8000             'http://www.gpsbabel.org/htmldoc-development/fmt_palmdoc.html#fmt_palmdoc_o_nosep'
8001          },
8002          'bookmarks_short' => {
8003            'min'     => '',
8004            'desc'    => 'Include short name in bookmarks',
8005            'max'     => '',
8006            'default' => '',
8007            'type'    => 'boolean',
8008            'doclink' =>
8009             'http://www.gpsbabel.org/htmldoc-development/fmt_palmdoc.html#fmt_palmdoc_o_bookmarks_short'
8010          },
8011          'logs' => {
8012            'min'     => '',
8013            'desc'    => 'Include groundspeak logs if present',
8014            'max'     => '',
8015            'default' => '',
8016            'type'    => 'boolean',
8017            'doclink' =>
8018             'http://www.gpsbabel.org/htmldoc-development/fmt_palmdoc.html#fmt_palmdoc_o_logs'
8019          },
8020          'dbname' => {
8021            'min'     => '',
8022            'desc'    => 'Database name',
8023            'max'     => '',
8024            'default' => '',
8025            'type'    => 'string',
8026            'doclink' =>
8027             'http://www.gpsbabel.org/htmldoc-development/fmt_palmdoc.html#fmt_palmdoc_o_dbname'
8028          }
8029        },
8030        'desc'  => 'PalmDoc Output',
8031        'modes' => '-w----',
8032        'ext'   => 'pdb',
8033        'doclink' =>
8034         'http://www.gpsbabel.org/htmldoc-development/fmt_palmdoc.html'
8035      },
8036      'xcsv' => {
8037        'options' => {
8038          'snunique' => {
8039            'min'     => '',
8040            'desc'    => 'Make synth. shortnames unique',
8041            'max'     => '',
8042            'default' => '',
8043            'type'    => 'boolean',
8044            'doclink' =>
8045             'http://www.gpsbabel.org/htmldoc-development/fmt_xcsv.html#fmt_xcsv_o_snunique'
8046          },
8047          'urlbase' => {
8048            'min'     => '',
8049            'desc'    => 'Basename prepended to URL on output',
8050            'max'     => '',
8051            'default' => '',
8052            'type'    => 'string',
8053            'doclink' =>
8054             'http://www.gpsbabel.org/htmldoc-development/fmt_xcsv.html#fmt_xcsv_o_urlbase'
8055          },
8056          'style' => {
8057            'min'     => '',
8058            'desc'    => 'Full path to XCSV style file',
8059            'max'     => '',
8060            'default' => '',
8061            'type'    => 'file',
8062            'doclink' =>
8063             'http://www.gpsbabel.org/htmldoc-development/fmt_xcsv.html#fmt_xcsv_o_style'
8064          },
8065          'snlen' => {
8066            'min'     => '1',
8067            'desc'    => 'Max synthesized shortname length',
8068            'max'     => '',
8069            'default' => '',
8070            'type'    => 'integer',
8071            'doclink' =>
8072             'http://www.gpsbabel.org/htmldoc-development/fmt_xcsv.html#fmt_xcsv_o_snlen'
8073          },
8074          'prefer_shortnames' => {
8075            'min'     => '',
8076            'desc'    => 'Use shortname instead of description',
8077            'max'     => '',
8078            'default' => '',
8079            'type'    => 'boolean',
8080            'doclink' =>
8081             'http://www.gpsbabel.org/htmldoc-development/fmt_xcsv.html#fmt_xcsv_o_prefer_shortnames'
8082          },
8083          'snwhite' => {
8084            'min'     => '',
8085            'desc'    => 'Allow whitespace synth. shortnames',
8086            'max'     => '',
8087            'default' => '',
8088            'type'    => 'boolean',
8089            'doclink' =>
8090             'http://www.gpsbabel.org/htmldoc-development/fmt_xcsv.html#fmt_xcsv_o_snwhite'
8091          },
8092          'snupper' => {
8093            'min'     => '',
8094            'desc'    => 'UPPERCASE synth. shortnames',
8095            'max'     => '',
8096            'default' => '',
8097            'type'    => 'boolean',
8098            'doclink' =>
8099             'http://www.gpsbabel.org/htmldoc-development/fmt_xcsv.html#fmt_xcsv_o_snupper'
8100          },
8101          'datum' => {
8102            'min'     => '',
8103            'desc'    => 'GPS datum (def. WGS 84)',
8104            'max'     => '',
8105            'default' => 'WGS 84',
8106            'type'    => 'string',
8107            'doclink' =>
8108             'http://www.gpsbabel.org/htmldoc-development/fmt_xcsv.html#fmt_xcsv_o_datum'
8109          }
8110        }
8111      },
8112      'mapsend' => {
8113        'nmodes'  => 63,
8114        'parent'  => 'mapsend',
8115        'options' => {
8116          'trkver' => {
8117            'min'     => '3',
8118            'desc'    => 'MapSend version TRK file to generate (3,4)',
8119            'max'     => '4',
8120            'default' => '4',
8121            'type'    => 'integer',
8122            'doclink' =>
8123             'http://www.gpsbabel.org/htmldoc-development/fmt_mapsend.html#fmt_mapsend_o_trkver'
8124          }
8125        },
8126        'desc'  => 'Magellan Mapsend',
8127        'modes' => 'rwrwrw',
8128        'doclink' =>
8129         'http://www.gpsbabel.org/htmldoc-development/fmt_mapsend.html'
8130      },
8131      'garmin301' => {
8132        'nmodes'  => 48,
8133        'parent'  => 'xcsv',
8134        'options' => {
8135          'snunique' => {
8136            'min'     => '',
8137            'desc'    => 'Make synth. shortnames unique',
8138            'max'     => '',
8139            'default' => '',
8140            'type'    => 'boolean',
8141            'doclink' =>
8142             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin301.html#fmt_garmin301_o_snunique'
8143          },
8144          'snwhite' => {
8145            'min'     => '',
8146            'desc'    => 'Allow whitespace synth. shortnames',
8147            'max'     => '',
8148            'default' => '',
8149            'type'    => 'boolean',
8150            'doclink' =>
8151             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin301.html#fmt_garmin301_o_snwhite'
8152          },
8153          'urlbase' => {
8154            'min'     => '',
8155            'desc'    => 'Basename prepended to URL on output',
8156            'max'     => '',
8157            'default' => '',
8158            'type'    => 'string',
8159            'doclink' =>
8160             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin301.html#fmt_garmin301_o_urlbase'
8161          },
8162          'snupper' => {
8163            'min'     => '',
8164            'desc'    => 'UPPERCASE synth. shortnames',
8165            'max'     => '',
8166            'default' => '',
8167            'type'    => 'boolean',
8168            'doclink' =>
8169             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin301.html#fmt_garmin301_o_snupper'
8170          },
8171          'datum' => {
8172            'min'     => '',
8173            'desc'    => 'GPS datum (def. WGS 84)',
8174            'max'     => '',
8175            'default' => 'WGS 84',
8176            'type'    => 'string',
8177            'doclink' =>
8178             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin301.html#fmt_garmin301_o_datum'
8179          },
8180          'snlen' => {
8181            'min'     => '1',
8182            'desc'    => 'Max synthesized shortname length',
8183            'max'     => '',
8184            'default' => '',
8185            'type'    => 'integer',
8186            'doclink' =>
8187             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin301.html#fmt_garmin301_o_snlen'
8188          },
8189          'prefer_shortnames' => {
8190            'min'     => '',
8191            'desc'    => 'Use shortname instead of description',
8192            'max'     => '',
8193            'default' => '',
8194            'type'    => 'boolean',
8195            'doclink' =>
8196             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin301.html#fmt_garmin301_o_prefer_shortnames'
8197          }
8198        },
8199        'desc'  => 'Garmin 301 Custom position and heartrate',
8200        'modes' => 'rw----',
8201        'doclink' =>
8202         'http://www.gpsbabel.org/htmldoc-development/fmt_garmin301.html'
8203      },
8204      'nima' => {
8205        'nmodes'  => 48,
8206        'parent'  => 'xcsv',
8207        'options' => {
8208          'snunique' => {
8209            'min'     => '',
8210            'desc'    => 'Make synth. shortnames unique',
8211            'max'     => '',
8212            'default' => '',
8213            'type'    => 'boolean',
8214            'doclink' =>
8215             'http://www.gpsbabel.org/htmldoc-development/fmt_nima.html#fmt_nima_o_snunique'
8216          },
8217          'snwhite' => {
8218            'min'     => '',
8219            'desc'    => 'Allow whitespace synth. shortnames',
8220            'max'     => '',
8221            'default' => '',
8222            'type'    => 'boolean',
8223            'doclink' =>
8224             'http://www.gpsbabel.org/htmldoc-development/fmt_nima.html#fmt_nima_o_snwhite'
8225          },
8226          'urlbase' => {
8227            'min'     => '',
8228            'desc'    => 'Basename prepended to URL on output',
8229            'max'     => '',
8230            'default' => '',
8231            'type'    => 'string',
8232            'doclink' =>
8233             'http://www.gpsbabel.org/htmldoc-development/fmt_nima.html#fmt_nima_o_urlbase'
8234          },
8235          'snupper' => {
8236            'min'     => '',
8237            'desc'    => 'UPPERCASE synth. shortnames',
8238            'max'     => '',
8239            'default' => '',
8240            'type'    => 'boolean',
8241            'doclink' =>
8242             'http://www.gpsbabel.org/htmldoc-development/fmt_nima.html#fmt_nima_o_snupper'
8243          },
8244          'datum' => {
8245            'min'     => '',
8246            'desc'    => 'GPS datum (def. WGS 84)',
8247            'max'     => '',
8248            'default' => 'WGS 84',
8249            'type'    => 'string',
8250            'doclink' =>
8251             'http://www.gpsbabel.org/htmldoc-development/fmt_nima.html#fmt_nima_o_datum'
8252          },
8253          'snlen' => {
8254            'min'     => '1',
8255            'desc'    => 'Max synthesized shortname length',
8256            'max'     => '',
8257            'default' => '',
8258            'type'    => 'integer',
8259            'doclink' =>
8260             'http://www.gpsbabel.org/htmldoc-development/fmt_nima.html#fmt_nima_o_snlen'
8261          },
8262          'prefer_shortnames' => {
8263            'min'     => '',
8264            'desc'    => 'Use shortname instead of description',
8265            'max'     => '',
8266            'default' => '',
8267            'type'    => 'boolean',
8268            'doclink' =>
8269             'http://www.gpsbabel.org/htmldoc-development/fmt_nima.html#fmt_nima_o_prefer_shortnames'
8270          }
8271        },
8272        'desc'  => 'NIMA/GNIS Geographic Names File',
8273        'modes' => 'rw----',
8274        'doclink' =>
8275         'http://www.gpsbabel.org/htmldoc-development/fmt_nima.html'
8276      },
8277      'mag_pdb' => {
8278        'nmodes' => 34,
8279        'parent' => 'mag_pdb',
8280        'desc'   => 'Map&Guide to Palm/OS exported files (.pdb)',
8281        'modes'  => 'r---r-',
8282        'ext'    => 'pdb',
8283        'doclink' =>
8284         'http://www.gpsbabel.org/htmldoc-development/fmt_mag_pdb.html'
8285      },
8286      'garmin_gpi' => {
8287        'nmodes'  => 48,
8288        'parent'  => 'garmin_gpi',
8289        'options' => {
8290          'notes' => {
8291            'min'     => '',
8292            'desc'    => 'Write notes to address field',
8293            'max'     => '',
8294            'default' => '',
8295            'type'    => 'boolean',
8296            'doclink' =>
8297             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin_gpi.html#fmt_garmin_gpi_o_notes'
8298          },
8299          'hide' => {
8300            'min'     => '',
8301            'desc'    => 'Don\'t show gpi bitmap on device',
8302            'max'     => '',
8303            'default' => '',
8304            'type'    => 'boolean',
8305            'doclink' =>
8306             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin_gpi.html#fmt_garmin_gpi_o_hide'
8307          },
8308          'position' => {
8309            'min'     => '',
8310            'desc'    => 'Write position to address field',
8311            'max'     => '',
8312            'default' => '',
8313            'type'    => 'boolean',
8314            'doclink' =>
8315             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin_gpi.html#fmt_garmin_gpi_o_position'
8316          },
8317          'category' => {
8318            'min'     => '',
8319            'desc'    => 'Default category on output',
8320            'max'     => '',
8321            'default' => 'My points',
8322            'type'    => 'string',
8323            'doclink' =>
8324             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin_gpi.html#fmt_garmin_gpi_o_category'
8325          },
8326          'bitmap' => {
8327            'min'     => '',
8328            'desc'    => 'Use specified bitmap on output',
8329            'max'     => '',
8330            'default' => '',
8331            'type'    => 'file',
8332            'doclink' =>
8333             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin_gpi.html#fmt_garmin_gpi_o_bitmap'
8334          },
8335          'descr' => {
8336            'min'     => '',
8337            'desc'    => 'Write description to address field',
8338            'max'     => '',
8339            'default' => '',
8340            'type'    => 'boolean',
8341            'doclink' =>
8342             'http://www.gpsbabel.org/htmldoc-development/fmt_garmin_gpi.html#fmt_garmin_gpi_o_descr'
8343          }
8344        },
8345        'desc'  => 'Garmin Points of Interest (.gpi)',
8346        'modes' => 'rw----',
8347        'ext'   => 'gpi',
8348        'doclink' =>
8349         'http://www.gpsbabel.org/htmldoc-development/fmt_garmin_gpi.html'
8350      },
8351      'gpilots' => {
8352        'nmodes'  => 48,
8353        'parent'  => 'gpilots',
8354        'options' => {
8355          'dbname' => {
8356            'min'     => '',
8357            'desc'    => 'Database name',
8358            'max'     => '',
8359            'default' => '',
8360            'type'    => 'string',
8361            'doclink' =>
8362             'http://www.gpsbabel.org/htmldoc-development/fmt_gpilots.html#fmt_gpilots_o_dbname'
8363          }
8364        },
8365        'desc'  => 'GpilotS',
8366        'modes' => 'rw----',
8367        'ext'   => 'pdb',
8368        'doclink' =>
8369         'http://www.gpsbabel.org/htmldoc-development/fmt_gpilots.html'
8370      }
8371    },
8372    'for_ext' => {
8373      'anr'    => ['saroute'],
8374      'xol'    => ['xol'],
8375      'rwf'    => ['raymarine'],
8376      'tpg'    => ['tpg'],
8377      'mxf'    => ['mxf'],
8378      'bin'    => ['wbt-bin'],
8379      'tk1'    => ['wbt-tk1'],
8380      'sdf'    => ['stmsdf'],
8381      'gpl'    => ['gpl'],
8382      'bcr'    => ['bcr'],
8383      'xml'    => [ 'glogbook', 'google', 'tef', 'wfff' ],
8384      'gpssim' => ['gpssim'],
8385      'trl'   => [ 'alantrl',    'dmtlog' ],
8386      'vtt'   => ['vitovtt'],
8387      'cup'   => ['cup'],
8388      'pcx'   => ['pcx'],
8389      'wpt'   => ['xmap'],
8390      'rte'   => ['nmn4'],
8391      'kml'   => ['kml'],
8392      'cst'   => ['cst'],
8393      'est'   => ['msroute'],
8394      'gs'    => ['maggeo'],
8395      'rdn'   => ['ignrando'],
8396      'gps'   => ['hiketech'],
8397      'loc'   => [ 'easygps',    'geo' ],
8398      'wp'    => [ 'kompass_tk', 'kompass_wp' ],
8399      'tmpro' => ['tmpro'],
8400      'ov2'   => ['tomtom'],
8401      'axe'   => ['msroute'],
8402      'dna'   => ['dna'],
8403      'gpi'   => ['garmin_gpi'],
8404      'gtm'   => ['gtm'],
8405      'gpx'   => ['gpx'],
8406      'an1'   => ['an1'],
8407      'wpo'   => ['holux'],
8408      'txt'   => [
8409        'xmap2006', 'fugawi',       'garmin_txt', 'geonet',
8410        'arc',      'mapconverter', 's_and_t',    'sportsim',
8411        'stmwpp',   'text'
8412      ],
8413      'vcf'  => ['vcard'],
8414      'asc'  => ['tomtom_asc'],
8415      'html' => ['html'],
8416      'itn'  => ['tomtom_itn'],
8417      'dat'  => ['cambridge'],
8418      'gpb'  => ['axim_gpb'],
8419      'log'  => ['ggv_log'],
8420      'kwf'  => ['kwf2'],
8421      'psp'  => ['psp'],
8422      'usr'  => ['lowranceusr'],
8423      'mps'  => ['mapsource'],
8424      'upt'  => ['magellanx'],
8425      'smt'  => ['vitosmt'],
8426      'ktf'  => ['ktf2'],
8427      'g7t'  => ['g7towin'],
8428      'pdb'  => [
8429        'cetus',    'copilot', 'coto',     'gcdb',
8430        'geoniche', 'gpilots', 'gpspilot', 'magnav',
8431        'mag_pdb',  'palmdoc', 'pathaway', 'quovadis'
8432      ],
8433      'wpr' => ['alanwpr'],
8434      'tpo' => [ 'tpo2', 'tpo3' ],
8435      'gdb' => ['gdb']
8436    },
8437    'filters' => {
8438      'transform' => {
8439        'options' => {
8440          'del' => {
8441            'desc' => 'Delete source data after transformation',
8442            'type' => 'boolean',
8443            'doclink' =>
8444             'http://www.gpsbabel.org/htmldoc-development/fmt_transform.html#fmt_transform_o_del',
8445            'valid' => [ 'N', '', '' ]
8446          },
8447          'wpt' => {
8448            'desc' =>
8449             'Transform track(s) or route(s) into waypoint(s) [R/T]',
8450            'type' => 'string',
8451            'doclink' =>
8452             'http://www.gpsbabel.org/htmldoc-development/fmt_transform.html#fmt_transform_o_wpt',
8453            'valid' => [ '', '', '' ]
8454          },
8455          'trk' => {
8456            'desc' =>
8457             'Transform waypoint(s) or route(s) into tracks(s) [W/R]',
8458            'type' => 'string',
8459            'doclink' =>
8460             'http://www.gpsbabel.org/htmldoc-development/fmt_transform.html#fmt_transform_o_trk',
8461            'valid' => [ '', '', '' ]
8462          },
8463          'rte' => {
8464            'desc' =>
8465             'Transform waypoint(s) or track(s) into route(s) [W/T]',
8466            'type' => 'string',
8467            'doclink' =>
8468             'http://www.gpsbabel.org/htmldoc-development/fmt_transform.html#fmt_transform_o_rte',
8469            'valid' => [ '', '', '' ]
8470          }
8471        },
8472        'desc' =>
8473         'Transform waypoints into a route, tracks into routes, ...'
8474      },
8475      'discard' => {
8476        'options' => {
8477          'vdop' => {
8478            'desc' => 'Suppress waypoints with higher vdop',
8479            'type' => 'float',
8480            'doclink' =>
8481             'http://www.gpsbabel.org/htmldoc-development/fmt_discard.html#fmt_discard_o_vdop',
8482            'valid' => [ '-1.0', '', '' ]
8483          },
8484          'hdopandvdop' => {
8485            'desc' => 'Link hdop and vdop supression with AND',
8486            'type' => 'boolean',
8487            'doclink' =>
8488             'http://www.gpsbabel.org/htmldoc-development/fmt_discard.html#fmt_discard_o_hdopandvdop',
8489            'valid' => [ '', '', '' ]
8490          },
8491          'hdop' => {
8492            'desc' => 'Suppress waypoints with higher hdop',
8493            'type' => 'float',
8494            'doclink' =>
8495             'http://www.gpsbabel.org/htmldoc-development/fmt_discard.html#fmt_discard_o_hdop',
8496            'valid' => [ '-1.0', '', '' ]
8497          }
8498        },
8499        'desc' => 'Remove unreliable points with high hdop or vdop'
8500      },
8501      'stack' => {
8502        'options' => {
8503          'discard' => {
8504            'desc' => '(pop) Discard top of stack',
8505            'type' => 'boolean',
8506            'doclink' =>
8507             'http://www.gpsbabel.org/htmldoc-development/fmt_stack.html#fmt_stack_o_discard',
8508            'valid' => [ '', '', '' ]
8509          },
8510          'depth' => {
8511            'desc' => '(swap) Item to use (default=1)',
8512            'type' => 'integer',
8513            'doclink' =>
8514             'http://www.gpsbabel.org/htmldoc-development/fmt_stack.html#fmt_stack_o_depth',
8515            'valid' => [ '', '0', '' ]
8516          },
8517          'append' => {
8518            'desc' => '(pop) Append list',
8519            'type' => 'boolean',
8520            'doclink' =>
8521             'http://www.gpsbabel.org/htmldoc-development/fmt_stack.html#fmt_stack_o_append',
8522            'valid' => [ '', '', '' ]
8523          },
8524          'copy' => {
8525            'desc' => '(push) Copy waypoint list',
8526            'type' => 'boolean',
8527            'doclink' =>
8528             'http://www.gpsbabel.org/htmldoc-development/fmt_stack.html#fmt_stack_o_copy',
8529            'valid' => [ '', '', '' ]
8530          },
8531          'push' => {
8532            'desc' => 'Push waypoint list onto stack',
8533            'type' => 'boolean',
8534            'doclink' =>
8535             'http://www.gpsbabel.org/htmldoc-development/fmt_stack.html#fmt_stack_o_push',
8536            'valid' => [ '', '', '' ]
8537          },
8538          'replace' => {
8539            'desc' => '(pop) Replace list (default)',
8540            'type' => 'boolean',
8541            'doclink' =>
8542             'http://www.gpsbabel.org/htmldoc-development/fmt_stack.html#fmt_stack_o_replace',
8543            'valid' => [ '', '', '' ]
8544          },
8545          'swap' => {
8546            'desc' => 'Swap waypoint list with <depth> item on stack',
8547            'type' => 'boolean',
8548            'doclink' =>
8549             'http://www.gpsbabel.org/htmldoc-development/fmt_stack.html#fmt_stack_o_swap',
8550            'valid' => [ '', '', '' ]
8551          },
8552          'pop' => {
8553            'desc' => 'Pop waypoint list from stack',
8554            'type' => 'boolean',
8555            'doclink' =>
8556             'http://www.gpsbabel.org/htmldoc-development/fmt_stack.html#fmt_stack_o_pop',
8557            'valid' => [ '', '', '' ]
8558          }
8559        },
8560        'desc' => 'Save and restore waypoint lists'
8561      },
8562      'track' => {
8563        'options' => {
8564          'course' => {
8565            'desc' => 'Synthesize course',
8566            'type' => 'boolean',
8567            'doclink' =>
8568             'http://www.gpsbabel.org/htmldoc-development/fmt_track.html#fmt_track_o_course',
8569            'valid' => [ '', '', '' ]
8570          },
8571          'stop' => {
8572            'desc' => 'Use only track points before this timestamp',
8573            'type' => 'integer',
8574            'doclink' =>
8575             'http://www.gpsbabel.org/htmldoc-development/fmt_track.html#fmt_track_o_stop',
8576            'valid' => [ '', '', '' ]
8577          },
8578          'move' => {
8579            'desc' => 'Correct trackpoint timestamps by a delta',
8580            'type' => 'string',
8581            'doclink' =>
8582             'http://www.gpsbabel.org/htmldoc-development/fmt_track.html#fmt_track_o_move',
8583            'valid' => [ '', '', '' ]
8584          },
8585          'fix' => {
8586            'desc' => 'Synthesize GPS fixes (PPS, DGPS, 3D, 2D, NONE)',
8587            'type' => 'string',
8588            'doclink' =>
8589             'http://www.gpsbabel.org/htmldoc-development/fmt_track.html#fmt_track_o_fix',
8590            'valid' => [ '', '', '' ]
8591          },
8592          'name' => {
8593            'desc' =>
8594             'Use only track(s) where title matches given name',
8595            'type' => 'string',
8596            'doclink' =>
8597             'http://www.gpsbabel.org/htmldoc-development/fmt_track.html#fmt_track_o_name',
8598            'valid' => [ '', '', '' ]
8599          },
8600          'merge' => {
8601            'desc' => 'Merge multiple tracks for the same way',
8602            'type' => 'string',
8603            'doclink' =>
8604             'http://www.gpsbabel.org/htmldoc-development/fmt_track.html#fmt_track_o_merge',
8605            'valid' => [ '', '', '' ]
8606          },
8607          'speed' => {
8608            'desc' => 'Synthesize speed',
8609            'type' => 'boolean',
8610            'doclink' =>
8611             'http://www.gpsbabel.org/htmldoc-development/fmt_track.html#fmt_track_o_speed',
8612            'valid' => [ '', '', '' ]
8613          },
8614          'sdistance' => {
8615            'desc' => 'Split by distance',
8616            'type' => 'string',
8617            'doclink' =>
8618             'http://www.gpsbabel.org/htmldoc-development/fmt_track.html#fmt_track_o_sdistance',
8619            'valid' => [ '', '', '' ]
8620          },
8621          'title' => {
8622            'desc' => 'Basic title for new track(s)',
8623            'type' => 'string',
8624            'doclink' =>
8625             'http://www.gpsbabel.org/htmldoc-development/fmt_track.html#fmt_track_o_title',
8626            'valid' => [ '', '', '' ]
8627          },
8628          'pack' => {
8629            'desc' => 'Pack all tracks into one',
8630            'type' => 'boolean',
8631            'doclink' =>
8632             'http://www.gpsbabel.org/htmldoc-development/fmt_track.html#fmt_track_o_pack',
8633            'valid' => [ '', '', '' ]
8634          },
8635          'split' => {
8636            'desc' => 'Split by date or time interval (see README)',
8637            'type' => 'string',
8638            'doclink' =>
8639             'http://www.gpsbabel.org/htmldoc-development/fmt_track.html#fmt_track_o_split',
8640            'valid' => [ '', '', '' ]
8641          },
8642          'start' => {
8643            'desc' => 'Use only track points after this timestamp',
8644            'type' => 'integer',
8645            'doclink' =>
8646             'http://www.gpsbabel.org/htmldoc-development/fmt_track.html#fmt_track_o_start',
8647            'valid' => [ '', '', '' ]
8648          }
8649        },
8650        'desc' => 'Manipulate track lists'
8651      },
8652      'radius' => {
8653        'options' => {
8654          'nosort' => {
8655            'desc' => 'Inhibit sort by distance to center',
8656            'type' => 'boolean',
8657            'doclink' =>
8658             'http://www.gpsbabel.org/htmldoc-development/fmt_radius.html#fmt_radius_o_nosort',
8659            'valid' => [ '', '', '' ]
8660          },
8661          'maxcount' => {
8662            'desc' => 'Output no more than this number of points',
8663            'type' => 'integer',
8664            'doclink' =>
8665             'http://www.gpsbabel.org/htmldoc-development/fmt_radius.html#fmt_radius_o_maxcount',
8666            'valid' => [ '', '1', '' ]
8667          },
8668          'asroute' => {
8669            'desc' => 'Put resulting waypoints in route of this name',
8670            'type' => 'string',
8671            'doclink' =>
8672             'http://www.gpsbabel.org/htmldoc-development/fmt_radius.html#fmt_radius_o_asroute',
8673            'valid' => [ '', '', '' ]
8674          },
8675          'distance' => {
8676            'desc' => 'Maximum distance from center',
8677            'type' => 'float',
8678            'doclink' =>
8679             'http://www.gpsbabel.org/htmldoc-development/fmt_radius.html#fmt_radius_o_distance',
8680            'valid' => [ '', '', '' ]
8681          },
8682          'lat' => {
8683            'desc' => 'Latitude for center point (D.DDDDD)',
8684            'type' => 'float',
8685            'doclink' =>
8686             'http://www.gpsbabel.org/htmldoc-development/fmt_radius.html#fmt_radius_o_lat',
8687            'valid' => [ '', '', '' ]
8688          },
8689          'lon' => {
8690            'desc' => 'Longitude for center point (D.DDDDD)',
8691            'type' => 'float',
8692            'doclink' =>
8693             'http://www.gpsbabel.org/htmldoc-development/fmt_radius.html#fmt_radius_o_lon',
8694            'valid' => [ '', '', '' ]
8695          },
8696          'exclude' => {
8697            'desc' => 'Exclude points close to center',
8698            'type' => 'boolean',
8699            'doclink' =>
8700             'http://www.gpsbabel.org/htmldoc-development/fmt_radius.html#fmt_radius_o_exclude',
8701            'valid' => [ '', '', '' ]
8702          }
8703        },
8704        'desc' => 'Include Only Points Within Radius'
8705      },
8706      'position' => {
8707        'options' => {
8708          'distance' => {
8709            'desc' => 'Maximum positional distance',
8710            'type' => 'float',
8711            'doclink' =>
8712             'http://www.gpsbabel.org/htmldoc-development/fmt_position.html#fmt_position_o_distance',
8713            'valid' => [ '', '', '' ]
8714          },
8715          'all' => {
8716            'desc' => 'Suppress all points close to other points',
8717            'type' => 'boolean',
8718            'doclink' =>
8719             'http://www.gpsbabel.org/htmldoc-development/fmt_position.html#fmt_position_o_all',
8720            'valid' => [ '', '', '' ]
8721          }
8722        },
8723        'desc' => 'Remove Points Within Distance'
8724      },
8725      'reverse'  => { 'desc' => 'Reverse stops within routes' },
8726      'simplify' => {
8727        'options' => {
8728          'length' => {
8729            'desc' => 'Use arclength error',
8730            'type' => 'boolean',
8731            'doclink' =>
8732             'http://www.gpsbabel.org/htmldoc-development/fmt_simplify.html#fmt_simplify_o_length',
8733            'valid' => [ '', '', '' ]
8734          },
8735          'count' => {
8736            'desc' => 'Maximum number of points in route',
8737            'type' => 'integer',
8738            'doclink' =>
8739             'http://www.gpsbabel.org/htmldoc-development/fmt_simplify.html#fmt_simplify_o_count',
8740            'valid' => [ '', '1', '' ]
8741          },
8742          'crosstrack' => {
8743            'desc' => 'Use cross-track error (default)',
8744            'type' => 'boolean',
8745            'doclink' =>
8746             'http://www.gpsbabel.org/htmldoc-development/fmt_simplify.html#fmt_simplify_o_crosstrack',
8747            'valid' => [ '', '', '' ]
8748          },
8749          'error' => {
8750            'desc' => 'Maximum error',
8751            'type' => 'string',
8752            'doclink' =>
8753             'http://www.gpsbabel.org/htmldoc-development/fmt_simplify.html#fmt_simplify_o_error',
8754            'valid' => [ '', '0', '' ]
8755          }
8756        },
8757        'desc' => 'Simplify routes'
8758      },
8759      'sort' => {
8760        'options' => {
8761          'shortname' => {
8762            'desc' => 'Sort by waypoint short name',
8763            'type' => 'boolean',
8764            'doclink' =>
8765             'http://www.gpsbabel.org/htmldoc-development/fmt_sort.html#fmt_sort_o_shortname',
8766            'valid' => [ '', '', '' ]
8767          },
8768          'time' => {
8769            'desc' => 'Sort by time',
8770            'type' => 'boolean',
8771            'doclink' =>
8772             'http://www.gpsbabel.org/htmldoc-development/fmt_sort.html#fmt_sort_o_time',
8773            'valid' => [ '', '', '' ]
8774          },
8775          'gcid' => {
8776            'desc' => 'Sort by numeric geocache ID',
8777            'type' => 'boolean',
8778            'doclink' =>
8779             'http://www.gpsbabel.org/htmldoc-development/fmt_sort.html#fmt_sort_o_gcid',
8780            'valid' => [ '', '', '' ]
8781          },
8782          'description' => {
8783            'desc' => 'Sort by waypoint description',
8784            'type' => 'boolean',
8785            'doclink' =>
8786             'http://www.gpsbabel.org/htmldoc-development/fmt_sort.html#fmt_sort_o_description',
8787            'valid' => [ '', '', '' ]
8788          }
8789        },
8790        'desc' => 'Rearrange waypoints by resorting'
8791      },
8792      'nuketypes' => {
8793        'options' => {
8794          'waypoints' => {
8795            'desc' => 'Remove all waypoints from data stream',
8796            'type' => 'boolean',
8797            'doclink' =>
8798             'http://www.gpsbabel.org/htmldoc-development/fmt_nuketypes.html#fmt_nuketypes_o_waypoints',
8799            'valid' => [ '0', '', '' ]
8800          },
8801          'routes' => {
8802            'desc' => 'Remove all routes from data stream',
8803            'type' => 'boolean',
8804            'doclink' =>
8805             'http://www.gpsbabel.org/htmldoc-development/fmt_nuketypes.html#fmt_nuketypes_o_routes',
8806            'valid' => [ '0', '', '' ]
8807          },
8808          'tracks' => {
8809            'desc' => 'Remove all tracks from data stream',
8810            'type' => 'boolean',
8811            'doclink' =>
8812             'http://www.gpsbabel.org/htmldoc-development/fmt_nuketypes.html#fmt_nuketypes_o_tracks',
8813            'valid' => [ '0', '', '' ]
8814          }
8815        },
8816        'desc' => 'Remove all waypoints, tracks, or routes'
8817      },
8818      'interpolate' => {
8819        'options' => {
8820          'distance' => {
8821            'desc' => 'Distance interval in miles or kilometers',
8822            'type' => 'string',
8823            'doclink' =>
8824             'http://www.gpsbabel.org/htmldoc-development/fmt_interpolate.html#fmt_interpolate_o_distance',
8825            'valid' => [ '', '', '' ]
8826          },
8827          'time' => {
8828            'desc' => 'Time interval in seconds',
8829            'type' => 'integer',
8830            'doclink' =>
8831             'http://www.gpsbabel.org/htmldoc-development/fmt_interpolate.html#fmt_interpolate_o_time',
8832            'valid' => [ '', '0', '' ]
8833          },
8834          'route' => {
8835            'desc' => 'Interpolate routes instead',
8836            'type' => 'boolean',
8837            'doclink' =>
8838             'http://www.gpsbabel.org/htmldoc-development/fmt_interpolate.html#fmt_interpolate_o_route',
8839            'valid' => [ '', '', '' ]
8840          }
8841        },
8842        'desc' => 'Interpolate between trackpoints'
8843      },
8844      'duplicate' => {
8845        'options' => {
8846          'shortname' => {
8847            'desc' => 'Suppress duplicate waypoints based on name',
8848            'type' => 'boolean',
8849            'doclink' =>
8850             'http://www.gpsbabel.org/htmldoc-development/fmt_duplicate.html#fmt_duplicate_o_shortname',
8851            'valid' => [ '', '', '' ]
8852          },
8853          'correct' => {
8854            'desc' => 'Use coords from duplicate points',
8855            'type' => 'boolean',
8856            'doclink' =>
8857             'http://www.gpsbabel.org/htmldoc-development/fmt_duplicate.html#fmt_duplicate_o_correct',
8858            'valid' => [ '', '', '' ]
8859          },
8860          'location' => {
8861            'desc' => 'Suppress duplicate waypoint based on coords',
8862            'type' => 'boolean',
8863            'doclink' =>
8864             'http://www.gpsbabel.org/htmldoc-development/fmt_duplicate.html#fmt_duplicate_o_location',
8865            'valid' => [ '', '', '' ]
8866          },
8867          'all' => {
8868            'desc' => 'Suppress all instances of duplicates',
8869            'type' => 'boolean',
8870            'doclink' =>
8871             'http://www.gpsbabel.org/htmldoc-development/fmt_duplicate.html#fmt_duplicate_o_all',
8872            'valid' => [ '', '', '' ]
8873          }
8874        },
8875        'desc' => 'Remove Duplicates'
8876      },
8877      'polygon' => {
8878        'options' => {
8879          'file' => {
8880            'desc' => 'File containing vertices of polygon',
8881            'type' => 'file',
8882            'doclink' =>
8883             'http://www.gpsbabel.org/htmldoc-development/fmt_polygon.html#fmt_polygon_o_file',
8884            'valid' => [ '', '', '' ]
8885          },
8886          'exclude' => {
8887            'desc' => 'Exclude points inside the polygon',
8888            'type' => 'boolean',
8889            'doclink' =>
8890             'http://www.gpsbabel.org/htmldoc-development/fmt_polygon.html#fmt_polygon_o_exclude',
8891            'valid' => [ '', '', '' ]
8892          }
8893        },
8894        'desc' => 'Include Only Points Inside Polygon'
8895      },
8896      'arc' => {
8897        'options' => {
8898          'distance' => {
8899            'desc' => 'Maximum distance from arc',
8900            'type' => 'float',
8901            'doclink' =>
8902             'http://www.gpsbabel.org/htmldoc-development/fmt_arc.html#fmt_arc_o_distance',
8903            'valid' => [ '', '', '' ]
8904          },
8905          'points' => {
8906            'desc' => 'Use distance from vertices not lines',
8907            'type' => 'boolean',
8908            'doclink' =>
8909             'http://www.gpsbabel.org/htmldoc-development/fmt_arc.html#fmt_arc_o_points',
8910            'valid' => [ '', '', '' ]
8911          },
8912          'file' => {
8913            'desc' => 'File containing vertices of arc',
8914            'type' => 'file',
8915            'doclink' =>
8916             'http://www.gpsbabel.org/htmldoc-development/fmt_arc.html#fmt_arc_o_file',
8917            'valid' => [ '', '', '' ]
8918          },
8919          'exclude' => {
8920            'desc' => 'Exclude points close to the arc',
8921            'type' => 'boolean',
8922            'doclink' =>
8923             'http://www.gpsbabel.org/htmldoc-development/fmt_arc.html#fmt_arc_o_exclude',
8924            'valid' => [ '', '', '' ]
8925          }
8926        },
8927        'desc' => 'Include Only Points Within Distance of Arc'
8928      }
8929    }
8930  };
8931
8932  @tests = (
8933    {
8934      name    => 'Broken gpsbabel',
8935      args    => [ 'bork', 0 ],
8936      version => '0.0.0',
8937      info    => {
8938        formats => {},
8939        for_ext => {},
8940        filters => {},
8941      },
8942    },
8943    {
8944      name    => 'gpsbabel 1.2.5',
8945      args    => [ '1.2.5', 0 ],
8946      version => '1.2.5',
8947      info    => {
8948        formats => {},
8949        for_ext => {},
8950        filters => {},
8951      },
8952      actions => [
8953        {
8954          comment => 'No auto conversion',
8955          method  => 'convert',
8956          args    => [ 'in.kml', 'out.gpx' ],
8957          error   => qr/No format handles/,
8958        },
8959        {
8960          comment => 'Format specified',
8961          method  => 'convert',
8962          args    => [
8963            'in.kml', 'out.gpx',
8964            { in_format => 'kml', out_format => 'gpx' }
8965          ],
8966          expect => [
8967            '-p',  '',   '-r',     '-t', '-w',  '-i',
8968            'kml', '-f', 'in.kml', '-o', 'gpx', '-F',
8969            'out.gpx'
8970          ],
8971        },
8972      ],
8973    },
8974    {
8975      name    => 'gpsbabel 1.3.0',
8976      args    => [ '1.3.0', 0 ],
8977      version => '1.3.0',
8978      info    => $ref_info,
8979      actions => [
8980        {
8981          comment => 'Format guessed',
8982          method  => 'convert',
8983          args    => [ 'in.kml', 'out.gpx', ],
8984          expect  => [
8985            '-p',  '',   '-r',     '-t', '-w',  '-i',
8986            'kml', '-f', 'in.kml', '-o', 'gpx', '-F',
8987            'out.gpx'
8988          ],
8989        },
8990        {
8991          comment => 'Format specified',
8992          method  => 'convert',
8993          args    => [
8994            'in.kml', 'out.gpx',
8995            { in_format => 'kml', out_format => 'gpx' }
8996          ],
8997          expect => [
8998            '-p',  '',   '-r',     '-t', '-w',  '-i',
8999            'kml', '-f', 'in.kml', '-o', 'gpx', '-F',
9000            'out.gpx'
9001          ],
9002        },
9003      ],
9004    },
9005    {
9006      name    => 'gpsbabel 1.3.5',
9007      args    => [ '1.3.5', 0 ],
9008      version => '1.3.5',
9009      info    => $ref_info135,
9010      actions => [
9011        {
9012          comment => 'Format guessed',
9013          method  => 'convert',
9014          args    => [ 'in.kml', 'out.gpx', ],
9015          expect  => [
9016            '-p',  '',   '-r',     '-t', '-w',  '-i',
9017            'kml', '-f', 'in.kml', '-o', 'gpx', '-F',
9018            'out.gpx'
9019          ],
9020        },
9021        {
9022          comment => 'Format specified',
9023          method  => 'convert',
9024          args    => [
9025            'in.kml', 'out.gpx',
9026            { in_format => 'kml', out_format => 'gpx' }
9027          ],
9028          expect => [
9029            '-p',  '',   '-r',     '-t', '-w',  '-i',
9030            'kml', '-f', 'in.kml', '-o', 'gpx', '-F',
9031            'out.gpx'
9032          ],
9033        },
9034      ],
9035    },
9036  );
9037
9038  my $count = 4 + @tests * 7;
9039
9040  for my $test ( @tests ) {
9041    $count += 2 * @{ $test->{actions} || [] };
9042  }
9043
9044  plan tests => $count;
9045}
9046
9047my $dump = File::Spec->catfile( File::Spec->tmpdir, "babel-test-$$" );
9048
9049sub get_fake {
9050  return [ $^X, File::Spec->catfile( 't', 'fake-babel.pl' ), $dump,
9051    @_ ];
9052}
9053
9054sub deeply {
9055  my ( $got, $want, $msg ) = @_;
9056  unless ( is_deeply $got, $want, $msg ) {
9057    diag( Data::Dumper->Dump( [$got],  ['$got'] ) );
9058    diag( Data::Dumper->Dump( [$want], ['$want'] ) );
9059  }
9060}
9061
9062# Get the arguments that were passed to gpsbabel
9063sub get_args {
9064  our $args;
9065  eval "require '$dump'";
9066  die "Can't require $dump ($@)" if $@;
9067  return $args;
9068}
9069
9070{
9071  ok my $babel
9072   = GPS::Babel->new( { exename => get_fake( 'bork', 1 ) } ),
9073   'create ok';
9074  isa_ok $babel, 'GPS::Babel';
9075  eval { $babel->check_exe };
9076  ok !$@, 'check exe OK';
9077
9078  my $version = eval { $babel->version };
9079  like $@, qr/failed/, 'error OK';
9080}
9081
9082for my $test ( @tests ) {
9083  my $name = $test->{name};
9084  my $exe  = get_fake( @{ $test->{args} } );
9085  ok my $babel = GPS::Babel->new( { exename => $exe } ),
9086   "$name: create OK";
9087  isa_ok $babel, "GPS::Babel";
9088  eval { $babel->check_exe };
9089  ok !$@, "$name: check exe OK";
9090
9091  my $version = $babel->version;
9092  is $version, $test->{version}, "$name: version OK";
9093
9094  my $info = $babel->get_info;
9095  ok defined delete $info->{banner},  "$name: got banner OK";
9096  ok defined delete $info->{version}, "$name: got banner OK";
9097
9098  deeply( $info, $test->{info}, "$name: get_info OK" );
9099
9100  if ( my $actions = $test->{actions} ) {
9101    for my $spec ( @$actions ) {
9102      my $method  = delete $spec->{method};
9103      my $comment = delete $spec->{comment};
9104      my $result  = eval { $babel->$method( @{ $spec->{args} } ) };
9105      if ( my $error = $spec->{error} ) {
9106        like $@, $error, "$name, $comment: $method throws error";
9107        pass "$name: arg check skipped";
9108      }
9109      else {
9110        unless ( ok !$@, "$name, $comment: $method OK" ) {
9111          diag "Got error: $@";
9112        }
9113        deeply(
9114          get_args(),
9115          $spec->{expect} || {},
9116          "$name, $comment: gpsbabel args match"
9117        );
9118      }
9119    }
9120  }
9121}
9122
9123unlink $dump;
9124