xref: /vim-8.2.3635/src/version.c (revision fa57335e)
1 /* vi:set ts=8 sts=4 sw=4 noet:
2  *
3  * VIM - Vi IMproved		by Bram Moolenaar
4  *
5  * Do ":help uganda"  in Vim to read copying and usage conditions.
6  * Do ":help credits" in Vim to see a list of people who contributed.
7  * See README.txt for an overview of the Vim source code.
8  */
9 
10 #include "vim.h"
11 
12 #ifdef AMIGA
13 # include <time.h>	// for time()
14 #endif
15 
16 /*
17  * Vim originated from Stevie version 3.6 (Fish disk 217) by GRWalter (Fred)
18  * It has been changed beyond recognition since then.
19  *
20  * Differences between version 7.4 and 8.x can be found with ":help version8".
21  * Differences between version 6.4 and 7.x can be found with ":help version7".
22  * Differences between version 5.8 and 6.x can be found with ":help version6".
23  * Differences between version 4.x and 5.x can be found with ":help version5".
24  * Differences between version 3.0 and 4.x can be found with ":help version4".
25  * All the remarks about older versions have been removed, they are not very
26  * interesting.
27  */
28 
29 #include "version.h"
30 
31 char		*Version = VIM_VERSION_SHORT;
32 static char	*mediumVersion = VIM_VERSION_MEDIUM;
33 
34 #if defined(HAVE_DATE_TIME) || defined(PROTO)
35 # if (defined(VMS) && defined(VAXC)) || defined(PROTO)
36 char	longVersion[sizeof(VIM_VERSION_LONG_DATE) + sizeof(__DATE__)
37 						      + sizeof(__TIME__) + 3];
38 
39     void
40 init_longVersion(void)
41 {
42     /*
43      * Construct the long version string.  Necessary because
44      * VAX C can't concatenate strings in the preprocessor.
45      */
46     strcpy(longVersion, VIM_VERSION_LONG_DATE);
47 #ifdef BUILD_DATE
48     strcat(longVersion, BUILD_DATE);
49 #else
50     strcat(longVersion, __DATE__);
51     strcat(longVersion, " ");
52     strcat(longVersion, __TIME__);
53 #endif
54     strcat(longVersion, ")");
55 }
56 
57 # else
58     void
59 init_longVersion(void)
60 {
61     if (longVersion == NULL)
62     {
63 #ifdef BUILD_DATE
64 	char *date_time = BUILD_DATE;
65 #else
66 	char *date_time = __DATE__ " " __TIME__;
67 #endif
68 	char *msg = _("%s (%s, compiled %s)");
69 	size_t len = strlen(msg)
70 		    + strlen(VIM_VERSION_LONG_ONLY)
71 		    + strlen(VIM_VERSION_DATE_ONLY)
72 		    + strlen(date_time);
73 
74 	longVersion = alloc(len);
75 	if (longVersion == NULL)
76 	    longVersion = VIM_VERSION_LONG;
77 	else
78 	    vim_snprintf(longVersion, len, msg,
79 			  VIM_VERSION_LONG_ONLY, VIM_VERSION_DATE_ONLY, date_time);
80     }
81 }
82 # endif
83 #else
84 char	*longVersion = VIM_VERSION_LONG;
85 
86     void
87 init_longVersion(void)
88 {
89     // nothing to do
90 }
91 #endif
92 
93 static char *(features[]) =
94 {
95 #ifdef HAVE_ACL
96 	"+acl",
97 #else
98 	"-acl",
99 #endif
100 #ifdef AMIGA		// only for Amiga systems
101 # ifdef FEAT_ARP
102 	"+ARP",
103 # else
104 	"-ARP",
105 # endif
106 #endif
107 #ifdef FEAT_ARABIC
108 	"+arabic",
109 #else
110 	"-arabic",
111 #endif
112 	"+autocmd",
113 #ifdef FEAT_AUTOCHDIR
114        "+autochdir",
115 #else
116        "-autochdir",
117 #endif
118 #ifdef FEAT_AUTOSERVERNAME
119 	"+autoservername",
120 #else
121 	"-autoservername",
122 #endif
123 #ifdef FEAT_BEVAL_GUI
124 	"+balloon_eval",
125 #else
126 	"-balloon_eval",
127 #endif
128 #ifdef FEAT_BEVAL_TERM
129 	"+balloon_eval_term",
130 #else
131 	"-balloon_eval_term",
132 #endif
133 #ifdef FEAT_BROWSE
134 	"+browse",
135 #else
136 	"-browse",
137 #endif
138 #ifdef NO_BUILTIN_TCAPS
139 	"-builtin_terms",
140 #endif
141 #ifdef SOME_BUILTIN_TCAPS
142 	"+builtin_terms",
143 #endif
144 #ifdef ALL_BUILTIN_TCAPS
145 	"++builtin_terms",
146 #endif
147 #ifdef FEAT_BYTEOFF
148 	"+byte_offset",
149 #else
150 	"-byte_offset",
151 #endif
152 #ifdef FEAT_JOB_CHANNEL
153 	"+channel",
154 #else
155 	"-channel",
156 #endif
157 #ifdef FEAT_CINDENT
158 	"+cindent",
159 #else
160 	"-cindent",
161 #endif
162 #ifdef FEAT_CLIENTSERVER
163 	"+clientserver",
164 #else
165 	"-clientserver",
166 #endif
167 #ifdef FEAT_CLIPBOARD
168 	"+clipboard",
169 #else
170 	"-clipboard",
171 #endif
172 	"+cmdline_compl",
173 	"+cmdline_hist",
174 #ifdef FEAT_CMDL_INFO
175 	"+cmdline_info",
176 #else
177 	"-cmdline_info",
178 #endif
179 	"+comments",
180 #ifdef FEAT_CONCEAL
181 	"+conceal",
182 #else
183 	"-conceal",
184 #endif
185 #ifdef FEAT_CRYPT
186 	"+cryptv",
187 #else
188 	"-cryptv",
189 #endif
190 #ifdef FEAT_CSCOPE
191 	"+cscope",
192 #else
193 	"-cscope",
194 #endif
195 	"+cursorbind",
196 #ifdef CURSOR_SHAPE
197 	"+cursorshape",
198 #else
199 	"-cursorshape",
200 #endif
201 #if defined(FEAT_CON_DIALOG) && defined(FEAT_GUI_DIALOG)
202 	"+dialog_con_gui",
203 #else
204 # if defined(FEAT_CON_DIALOG)
205 	"+dialog_con",
206 # else
207 #  if defined(FEAT_GUI_DIALOG)
208 	"+dialog_gui",
209 #  else
210 	"-dialog",
211 #  endif
212 # endif
213 #endif
214 #ifdef FEAT_DIFF
215 	"+diff",
216 #else
217 	"-diff",
218 #endif
219 #ifdef FEAT_DIGRAPHS
220 	"+digraphs",
221 #else
222 	"-digraphs",
223 #endif
224 #ifdef FEAT_GUI_MSWIN
225 # ifdef FEAT_DIRECTX
226 	"+directx",
227 # else
228 	"-directx",
229 # endif
230 #endif
231 #ifdef FEAT_DND
232 	"+dnd",
233 #else
234 	"-dnd",
235 #endif
236 #ifdef EBCDIC
237 	"+ebcdic",
238 #else
239 	"-ebcdic",
240 #endif
241 #ifdef FEAT_EMACS_TAGS
242 	"+emacs_tags",
243 #else
244 	"-emacs_tags",
245 #endif
246 #ifdef FEAT_EVAL
247 	"+eval",
248 #else
249 	"-eval",
250 #endif
251 	"+ex_extra",
252 #ifdef FEAT_SEARCH_EXTRA
253 	"+extra_search",
254 #else
255 	"-extra_search",
256 #endif
257 	"-farsi",
258 #ifdef FEAT_SEARCHPATH
259 	"+file_in_path",
260 #else
261 	"-file_in_path",
262 #endif
263 #ifdef FEAT_FIND_ID
264 	"+find_in_path",
265 #else
266 	"-find_in_path",
267 #endif
268 #ifdef FEAT_FLOAT
269 	"+float",
270 #else
271 	"-float",
272 #endif
273 #ifdef FEAT_FOLDING
274 	"+folding",
275 #else
276 	"-folding",
277 #endif
278 #ifdef FEAT_FOOTER
279 	"+footer",
280 #else
281 	"-footer",
282 #endif
283 	    // only interesting on Unix systems
284 #if !defined(USE_SYSTEM) && defined(UNIX)
285 	"+fork()",
286 #endif
287 #ifdef FEAT_GETTEXT
288 # ifdef DYNAMIC_GETTEXT
289 	"+gettext/dyn",
290 # else
291 	"+gettext",
292 # endif
293 #else
294 	"-gettext",
295 #endif
296 	"-hangul_input",
297 #if (defined(HAVE_ICONV_H) && defined(USE_ICONV)) || defined(DYNAMIC_ICONV)
298 # ifdef DYNAMIC_ICONV
299 	"+iconv/dyn",
300 # else
301 	"+iconv",
302 # endif
303 #else
304 	"-iconv",
305 #endif
306 	"+insert_expand",
307 #ifdef FEAT_IPV6
308 	"+ipv6",
309 #else
310 	"-ipv6",
311 #endif
312 #ifdef FEAT_JOB_CHANNEL
313 	"+job",
314 #else
315 	"-job",
316 #endif
317 #ifdef FEAT_JUMPLIST
318 	"+jumplist",
319 #else
320 	"-jumplist",
321 #endif
322 #ifdef FEAT_KEYMAP
323 	"+keymap",
324 #else
325 	"-keymap",
326 #endif
327 #ifdef FEAT_EVAL
328 	"+lambda",
329 #else
330 	"-lambda",
331 #endif
332 #ifdef FEAT_LANGMAP
333 	"+langmap",
334 #else
335 	"-langmap",
336 #endif
337 #ifdef FEAT_LIBCALL
338 	"+libcall",
339 #else
340 	"-libcall",
341 #endif
342 #ifdef FEAT_LINEBREAK
343 	"+linebreak",
344 #else
345 	"-linebreak",
346 #endif
347 #ifdef FEAT_LISP
348 	"+lispindent",
349 #else
350 	"-lispindent",
351 #endif
352 	"+listcmds",
353 	"+localmap",
354 #ifdef FEAT_LUA
355 # ifdef DYNAMIC_LUA
356 	"+lua/dyn",
357 # else
358 	"+lua",
359 # endif
360 #else
361 	"-lua",
362 #endif
363 #ifdef FEAT_MENU
364 	"+menu",
365 #else
366 	"-menu",
367 #endif
368 #ifdef FEAT_SESSION
369 	"+mksession",
370 #else
371 	"-mksession",
372 #endif
373 	"+modify_fname",
374 	"+mouse",
375 #ifdef FEAT_MOUSESHAPE
376 	"+mouseshape",
377 #else
378 	"-mouseshape",
379 #endif
380 
381 #if defined(UNIX) || defined(VMS)
382 # ifdef FEAT_MOUSE_DEC
383 	"+mouse_dec",
384 # else
385 	"-mouse_dec",
386 # endif
387 # ifdef FEAT_MOUSE_GPM
388 	"+mouse_gpm",
389 # else
390 	"-mouse_gpm",
391 # endif
392 # ifdef FEAT_MOUSE_JSB
393 	"+mouse_jsbterm",
394 # else
395 	"-mouse_jsbterm",
396 # endif
397 # ifdef FEAT_MOUSE_NET
398 	"+mouse_netterm",
399 # else
400 	"-mouse_netterm",
401 # endif
402 #endif
403 
404 #ifdef __QNX__
405 # ifdef FEAT_MOUSE_PTERM
406 	"+mouse_pterm",
407 # else
408 	"-mouse_pterm",
409 # endif
410 #endif
411 
412 #if defined(UNIX) || defined(VMS)
413 	"+mouse_sgr",
414 # ifdef FEAT_SYSMOUSE
415 	"+mouse_sysmouse",
416 # else
417 	"-mouse_sysmouse",
418 # endif
419 # ifdef FEAT_MOUSE_URXVT
420 	"+mouse_urxvt",
421 # else
422 	"-mouse_urxvt",
423 # endif
424 	"+mouse_xterm",
425 #endif
426 
427 #ifdef FEAT_MBYTE_IME
428 # ifdef DYNAMIC_IME
429 	"+multi_byte_ime/dyn",
430 # else
431 	"+multi_byte_ime",
432 # endif
433 #else
434 	"+multi_byte",
435 #endif
436 #ifdef FEAT_MULTI_LANG
437 	"+multi_lang",
438 #else
439 	"-multi_lang",
440 #endif
441 #ifdef FEAT_MZSCHEME
442 # ifdef DYNAMIC_MZSCHEME
443 	"+mzscheme/dyn",
444 # else
445 	"+mzscheme",
446 # endif
447 #else
448 	"-mzscheme",
449 #endif
450 #ifdef FEAT_NETBEANS_INTG
451 	"+netbeans_intg",
452 #else
453 	"-netbeans_intg",
454 #endif
455 	"+num64",
456 #ifdef FEAT_GUI_MSWIN
457 # ifdef FEAT_OLE
458 	"+ole",
459 # else
460 	"-ole",
461 # endif
462 #endif
463 #ifdef FEAT_EVAL
464 	"+packages",
465 #else
466 	"-packages",
467 #endif
468 #ifdef FEAT_PATH_EXTRA
469 	"+path_extra",
470 #else
471 	"-path_extra",
472 #endif
473 #ifdef FEAT_PERL
474 # ifdef DYNAMIC_PERL
475 	"+perl/dyn",
476 # else
477 	"+perl",
478 # endif
479 #else
480 	"-perl",
481 #endif
482 #ifdef FEAT_PERSISTENT_UNDO
483 	"+persistent_undo",
484 #else
485 	"-persistent_undo",
486 #endif
487 #ifdef FEAT_PROP_POPUP
488 	"+popupwin",
489 #else
490 	"-popupwin",
491 #endif
492 #ifdef FEAT_PRINTER
493 # ifdef FEAT_POSTSCRIPT
494 	"+postscript",
495 # else
496 	"-postscript",
497 # endif
498 	"+printer",
499 #else
500 	"-printer",
501 #endif
502 #ifdef FEAT_PROFILE
503 	"+profile",
504 #else
505 	"-profile",
506 #endif
507 #ifdef FEAT_PYTHON
508 # ifdef DYNAMIC_PYTHON
509 	"+python/dyn",
510 # else
511 	"+python",
512 # endif
513 #else
514 	"-python",
515 #endif
516 #ifdef FEAT_PYTHON3
517 # ifdef DYNAMIC_PYTHON3
518 	"+python3/dyn",
519 # else
520 	"+python3",
521 # endif
522 #else
523 	"-python3",
524 #endif
525 #ifdef FEAT_QUICKFIX
526 	"+quickfix",
527 #else
528 	"-quickfix",
529 #endif
530 #ifdef FEAT_RELTIME
531 	"+reltime",
532 #else
533 	"-reltime",
534 #endif
535 #ifdef FEAT_RIGHTLEFT
536 	"+rightleft",
537 #else
538 	"-rightleft",
539 #endif
540 #ifdef FEAT_RUBY
541 # ifdef DYNAMIC_RUBY
542 	"+ruby/dyn",
543 # else
544 	"+ruby",
545 # endif
546 #else
547 	"-ruby",
548 #endif
549 	"+scrollbind",
550 #ifdef FEAT_SIGNS
551 	"+signs",
552 #else
553 	"-signs",
554 #endif
555 #ifdef FEAT_SMARTINDENT
556 	"+smartindent",
557 #else
558 	"-smartindent",
559 #endif
560 #ifdef FEAT_SOUND
561 	"+sound",
562 #else
563 	"-sound",
564 #endif
565 #ifdef FEAT_SPELL
566 	"+spell",
567 #else
568 	"-spell",
569 #endif
570 #ifdef STARTUPTIME
571 	"+startuptime",
572 #else
573 	"-startuptime",
574 #endif
575 #ifdef FEAT_STL_OPT
576 	"+statusline",
577 #else
578 	"-statusline",
579 #endif
580 	"-sun_workshop",
581 #ifdef FEAT_SYN_HL
582 	"+syntax",
583 #else
584 	"-syntax",
585 #endif
586 	    // only interesting on Unix systems
587 #if defined(USE_SYSTEM) && defined(UNIX)
588 	"+system()",
589 #endif
590 #ifdef FEAT_TAG_BINS
591 	"+tag_binary",
592 #else
593 	"-tag_binary",
594 #endif
595 	"-tag_old_static",
596 	"-tag_any_white",
597 #ifdef FEAT_TCL
598 # ifdef DYNAMIC_TCL
599 	"+tcl/dyn",
600 # else
601 	"+tcl",
602 # endif
603 #else
604 	"-tcl",
605 #endif
606 #ifdef FEAT_TERMGUICOLORS
607 	"+termguicolors",
608 #else
609 	"-termguicolors",
610 #endif
611 #ifdef FEAT_TERMINAL
612 	"+terminal",
613 #else
614 	"-terminal",
615 #endif
616 #if defined(UNIX)
617 // only Unix can have terminfo instead of termcap
618 # ifdef TERMINFO
619 	"+terminfo",
620 # else
621 	"-terminfo",
622 # endif
623 #endif
624 #ifdef FEAT_TERMRESPONSE
625 	"+termresponse",
626 #else
627 	"-termresponse",
628 #endif
629 #ifdef FEAT_TEXTOBJ
630 	"+textobjects",
631 #else
632 	"-textobjects",
633 #endif
634 #ifdef FEAT_PROP_POPUP
635 	"+textprop",
636 #else
637 	"-textprop",
638 #endif
639 #if !defined(UNIX)
640 // unix always includes termcap support
641 # ifdef HAVE_TGETENT
642 	"+tgetent",
643 # else
644 	"-tgetent",
645 # endif
646 #endif
647 #ifdef FEAT_TIMERS
648 	"+timers",
649 #else
650 	"-timers",
651 #endif
652 #ifdef FEAT_TITLE
653 	"+title",
654 #else
655 	"-title",
656 #endif
657 #ifdef FEAT_TOOLBAR
658 	"+toolbar",
659 #else
660 	"-toolbar",
661 #endif
662 	"+user_commands",
663 #ifdef FEAT_VARTABS
664 	"+vartabs",
665 #else
666 	"-vartabs",
667 #endif
668 	"+vertsplit",
669 	"+virtualedit",
670 	"+visual",
671 	"+visualextra",
672 #ifdef FEAT_VIMINFO
673 	"+viminfo",
674 #else
675 	"-viminfo",
676 #endif
677 	"+vreplace",
678 #ifdef MSWIN
679 # ifdef FEAT_VTP
680 	"+vtp",
681 # else
682 	"-vtp",
683 # endif
684 #endif
685 #ifdef FEAT_WILDIGN
686 	"+wildignore",
687 #else
688 	"-wildignore",
689 #endif
690 #ifdef FEAT_WILDMENU
691 	"+wildmenu",
692 #else
693 	"-wildmenu",
694 #endif
695 	"+windows",
696 #ifdef FEAT_WRITEBACKUP
697 	"+writebackup",
698 #else
699 	"-writebackup",
700 #endif
701 #if defined(UNIX) || defined(VMS)
702 # ifdef FEAT_X11
703 	"+X11",
704 # else
705 	"-X11",
706 # endif
707 #endif
708 #ifdef FEAT_XFONTSET
709 	"+xfontset",
710 #else
711 	"-xfontset",
712 #endif
713 #ifdef FEAT_XIM
714 	"+xim",
715 #else
716 	"-xim",
717 #endif
718 #ifdef MSWIN
719 # ifdef FEAT_XPM_W32
720 	"+xpm_w32",
721 # else
722 	"-xpm_w32",
723 # endif
724 #else
725 # ifdef HAVE_XPM
726 	"+xpm",
727 # else
728 	"-xpm",
729 # endif
730 #endif
731 #if defined(UNIX) || defined(VMS)
732 # ifdef USE_XSMP_INTERACT
733 	"+xsmp_interact",
734 # else
735 #  ifdef USE_XSMP
736 	"+xsmp",
737 #  else
738 	"-xsmp",
739 #  endif
740 # endif
741 # ifdef FEAT_XCLIPBOARD
742 	"+xterm_clipboard",
743 # else
744 	"-xterm_clipboard",
745 # endif
746 #endif
747 #ifdef FEAT_XTERM_SAVE
748 	"+xterm_save",
749 #else
750 	"-xterm_save",
751 #endif
752 	NULL
753 };
754 
755 static int included_patches[] =
756 {   /* Add new patch number below this line */
757 /**/
758     1585,
759 /**/
760     1584,
761 /**/
762     1583,
763 /**/
764     1582,
765 /**/
766     1581,
767 /**/
768     1580,
769 /**/
770     1579,
771 /**/
772     1578,
773 /**/
774     1577,
775 /**/
776     1576,
777 /**/
778     1575,
779 /**/
780     1574,
781 /**/
782     1573,
783 /**/
784     1572,
785 /**/
786     1571,
787 /**/
788     1570,
789 /**/
790     1569,
791 /**/
792     1568,
793 /**/
794     1567,
795 /**/
796     1566,
797 /**/
798     1565,
799 /**/
800     1564,
801 /**/
802     1563,
803 /**/
804     1562,
805 /**/
806     1561,
807 /**/
808     1560,
809 /**/
810     1559,
811 /**/
812     1558,
813 /**/
814     1557,
815 /**/
816     1556,
817 /**/
818     1555,
819 /**/
820     1554,
821 /**/
822     1553,
823 /**/
824     1552,
825 /**/
826     1551,
827 /**/
828     1550,
829 /**/
830     1549,
831 /**/
832     1548,
833 /**/
834     1547,
835 /**/
836     1546,
837 /**/
838     1545,
839 /**/
840     1544,
841 /**/
842     1543,
843 /**/
844     1542,
845 /**/
846     1541,
847 /**/
848     1540,
849 /**/
850     1539,
851 /**/
852     1538,
853 /**/
854     1537,
855 /**/
856     1536,
857 /**/
858     1535,
859 /**/
860     1534,
861 /**/
862     1533,
863 /**/
864     1532,
865 /**/
866     1531,
867 /**/
868     1530,
869 /**/
870     1529,
871 /**/
872     1528,
873 /**/
874     1527,
875 /**/
876     1526,
877 /**/
878     1525,
879 /**/
880     1524,
881 /**/
882     1523,
883 /**/
884     1522,
885 /**/
886     1521,
887 /**/
888     1520,
889 /**/
890     1519,
891 /**/
892     1518,
893 /**/
894     1517,
895 /**/
896     1516,
897 /**/
898     1515,
899 /**/
900     1514,
901 /**/
902     1513,
903 /**/
904     1512,
905 /**/
906     1511,
907 /**/
908     1510,
909 /**/
910     1509,
911 /**/
912     1508,
913 /**/
914     1507,
915 /**/
916     1506,
917 /**/
918     1505,
919 /**/
920     1504,
921 /**/
922     1503,
923 /**/
924     1502,
925 /**/
926     1501,
927 /**/
928     1500,
929 /**/
930     1499,
931 /**/
932     1498,
933 /**/
934     1497,
935 /**/
936     1496,
937 /**/
938     1495,
939 /**/
940     1494,
941 /**/
942     1493,
943 /**/
944     1492,
945 /**/
946     1491,
947 /**/
948     1490,
949 /**/
950     1489,
951 /**/
952     1488,
953 /**/
954     1487,
955 /**/
956     1486,
957 /**/
958     1485,
959 /**/
960     1484,
961 /**/
962     1483,
963 /**/
964     1482,
965 /**/
966     1481,
967 /**/
968     1480,
969 /**/
970     1479,
971 /**/
972     1478,
973 /**/
974     1477,
975 /**/
976     1476,
977 /**/
978     1475,
979 /**/
980     1474,
981 /**/
982     1473,
983 /**/
984     1472,
985 /**/
986     1471,
987 /**/
988     1470,
989 /**/
990     1469,
991 /**/
992     1468,
993 /**/
994     1467,
995 /**/
996     1466,
997 /**/
998     1465,
999 /**/
1000     1464,
1001 /**/
1002     1463,
1003 /**/
1004     1462,
1005 /**/
1006     1461,
1007 /**/
1008     1460,
1009 /**/
1010     1459,
1011 /**/
1012     1458,
1013 /**/
1014     1457,
1015 /**/
1016     1456,
1017 /**/
1018     1455,
1019 /**/
1020     1454,
1021 /**/
1022     1453,
1023 /**/
1024     1452,
1025 /**/
1026     1451,
1027 /**/
1028     1450,
1029 /**/
1030     1449,
1031 /**/
1032     1448,
1033 /**/
1034     1447,
1035 /**/
1036     1446,
1037 /**/
1038     1445,
1039 /**/
1040     1444,
1041 /**/
1042     1443,
1043 /**/
1044     1442,
1045 /**/
1046     1441,
1047 /**/
1048     1440,
1049 /**/
1050     1439,
1051 /**/
1052     1438,
1053 /**/
1054     1437,
1055 /**/
1056     1436,
1057 /**/
1058     1435,
1059 /**/
1060     1434,
1061 /**/
1062     1433,
1063 /**/
1064     1432,
1065 /**/
1066     1431,
1067 /**/
1068     1430,
1069 /**/
1070     1429,
1071 /**/
1072     1428,
1073 /**/
1074     1427,
1075 /**/
1076     1426,
1077 /**/
1078     1425,
1079 /**/
1080     1424,
1081 /**/
1082     1423,
1083 /**/
1084     1422,
1085 /**/
1086     1421,
1087 /**/
1088     1420,
1089 /**/
1090     1419,
1091 /**/
1092     1418,
1093 /**/
1094     1417,
1095 /**/
1096     1416,
1097 /**/
1098     1415,
1099 /**/
1100     1414,
1101 /**/
1102     1413,
1103 /**/
1104     1412,
1105 /**/
1106     1411,
1107 /**/
1108     1410,
1109 /**/
1110     1409,
1111 /**/
1112     1408,
1113 /**/
1114     1407,
1115 /**/
1116     1406,
1117 /**/
1118     1405,
1119 /**/
1120     1404,
1121 /**/
1122     1403,
1123 /**/
1124     1402,
1125 /**/
1126     1401,
1127 /**/
1128     1400,
1129 /**/
1130     1399,
1131 /**/
1132     1398,
1133 /**/
1134     1397,
1135 /**/
1136     1396,
1137 /**/
1138     1395,
1139 /**/
1140     1394,
1141 /**/
1142     1393,
1143 /**/
1144     1392,
1145 /**/
1146     1391,
1147 /**/
1148     1390,
1149 /**/
1150     1389,
1151 /**/
1152     1388,
1153 /**/
1154     1387,
1155 /**/
1156     1386,
1157 /**/
1158     1385,
1159 /**/
1160     1384,
1161 /**/
1162     1383,
1163 /**/
1164     1382,
1165 /**/
1166     1381,
1167 /**/
1168     1380,
1169 /**/
1170     1379,
1171 /**/
1172     1378,
1173 /**/
1174     1377,
1175 /**/
1176     1376,
1177 /**/
1178     1375,
1179 /**/
1180     1374,
1181 /**/
1182     1373,
1183 /**/
1184     1372,
1185 /**/
1186     1371,
1187 /**/
1188     1370,
1189 /**/
1190     1369,
1191 /**/
1192     1368,
1193 /**/
1194     1367,
1195 /**/
1196     1366,
1197 /**/
1198     1365,
1199 /**/
1200     1364,
1201 /**/
1202     1363,
1203 /**/
1204     1362,
1205 /**/
1206     1361,
1207 /**/
1208     1360,
1209 /**/
1210     1359,
1211 /**/
1212     1358,
1213 /**/
1214     1357,
1215 /**/
1216     1356,
1217 /**/
1218     1355,
1219 /**/
1220     1354,
1221 /**/
1222     1353,
1223 /**/
1224     1352,
1225 /**/
1226     1351,
1227 /**/
1228     1350,
1229 /**/
1230     1349,
1231 /**/
1232     1348,
1233 /**/
1234     1347,
1235 /**/
1236     1346,
1237 /**/
1238     1345,
1239 /**/
1240     1344,
1241 /**/
1242     1343,
1243 /**/
1244     1342,
1245 /**/
1246     1341,
1247 /**/
1248     1340,
1249 /**/
1250     1339,
1251 /**/
1252     1338,
1253 /**/
1254     1337,
1255 /**/
1256     1336,
1257 /**/
1258     1335,
1259 /**/
1260     1334,
1261 /**/
1262     1333,
1263 /**/
1264     1332,
1265 /**/
1266     1331,
1267 /**/
1268     1330,
1269 /**/
1270     1329,
1271 /**/
1272     1328,
1273 /**/
1274     1327,
1275 /**/
1276     1326,
1277 /**/
1278     1325,
1279 /**/
1280     1324,
1281 /**/
1282     1323,
1283 /**/
1284     1322,
1285 /**/
1286     1321,
1287 /**/
1288     1320,
1289 /**/
1290     1319,
1291 /**/
1292     1318,
1293 /**/
1294     1317,
1295 /**/
1296     1316,
1297 /**/
1298     1315,
1299 /**/
1300     1314,
1301 /**/
1302     1313,
1303 /**/
1304     1312,
1305 /**/
1306     1311,
1307 /**/
1308     1310,
1309 /**/
1310     1309,
1311 /**/
1312     1308,
1313 /**/
1314     1307,
1315 /**/
1316     1306,
1317 /**/
1318     1305,
1319 /**/
1320     1304,
1321 /**/
1322     1303,
1323 /**/
1324     1302,
1325 /**/
1326     1301,
1327 /**/
1328     1300,
1329 /**/
1330     1299,
1331 /**/
1332     1298,
1333 /**/
1334     1297,
1335 /**/
1336     1296,
1337 /**/
1338     1295,
1339 /**/
1340     1294,
1341 /**/
1342     1293,
1343 /**/
1344     1292,
1345 /**/
1346     1291,
1347 /**/
1348     1290,
1349 /**/
1350     1289,
1351 /**/
1352     1288,
1353 /**/
1354     1287,
1355 /**/
1356     1286,
1357 /**/
1358     1285,
1359 /**/
1360     1284,
1361 /**/
1362     1283,
1363 /**/
1364     1282,
1365 /**/
1366     1281,
1367 /**/
1368     1280,
1369 /**/
1370     1279,
1371 /**/
1372     1278,
1373 /**/
1374     1277,
1375 /**/
1376     1276,
1377 /**/
1378     1275,
1379 /**/
1380     1274,
1381 /**/
1382     1273,
1383 /**/
1384     1272,
1385 /**/
1386     1271,
1387 /**/
1388     1270,
1389 /**/
1390     1269,
1391 /**/
1392     1268,
1393 /**/
1394     1267,
1395 /**/
1396     1266,
1397 /**/
1398     1265,
1399 /**/
1400     1264,
1401 /**/
1402     1263,
1403 /**/
1404     1262,
1405 /**/
1406     1261,
1407 /**/
1408     1260,
1409 /**/
1410     1259,
1411 /**/
1412     1258,
1413 /**/
1414     1257,
1415 /**/
1416     1256,
1417 /**/
1418     1255,
1419 /**/
1420     1254,
1421 /**/
1422     1253,
1423 /**/
1424     1252,
1425 /**/
1426     1251,
1427 /**/
1428     1250,
1429 /**/
1430     1249,
1431 /**/
1432     1248,
1433 /**/
1434     1247,
1435 /**/
1436     1246,
1437 /**/
1438     1245,
1439 /**/
1440     1244,
1441 /**/
1442     1243,
1443 /**/
1444     1242,
1445 /**/
1446     1241,
1447 /**/
1448     1240,
1449 /**/
1450     1239,
1451 /**/
1452     1238,
1453 /**/
1454     1237,
1455 /**/
1456     1236,
1457 /**/
1458     1235,
1459 /**/
1460     1234,
1461 /**/
1462     1233,
1463 /**/
1464     1232,
1465 /**/
1466     1231,
1467 /**/
1468     1230,
1469 /**/
1470     1229,
1471 /**/
1472     1228,
1473 /**/
1474     1227,
1475 /**/
1476     1226,
1477 /**/
1478     1225,
1479 /**/
1480     1224,
1481 /**/
1482     1223,
1483 /**/
1484     1222,
1485 /**/
1486     1221,
1487 /**/
1488     1220,
1489 /**/
1490     1219,
1491 /**/
1492     1218,
1493 /**/
1494     1217,
1495 /**/
1496     1216,
1497 /**/
1498     1215,
1499 /**/
1500     1214,
1501 /**/
1502     1213,
1503 /**/
1504     1212,
1505 /**/
1506     1211,
1507 /**/
1508     1210,
1509 /**/
1510     1209,
1511 /**/
1512     1208,
1513 /**/
1514     1207,
1515 /**/
1516     1206,
1517 /**/
1518     1205,
1519 /**/
1520     1204,
1521 /**/
1522     1203,
1523 /**/
1524     1202,
1525 /**/
1526     1201,
1527 /**/
1528     1200,
1529 /**/
1530     1199,
1531 /**/
1532     1198,
1533 /**/
1534     1197,
1535 /**/
1536     1196,
1537 /**/
1538     1195,
1539 /**/
1540     1194,
1541 /**/
1542     1193,
1543 /**/
1544     1192,
1545 /**/
1546     1191,
1547 /**/
1548     1190,
1549 /**/
1550     1189,
1551 /**/
1552     1188,
1553 /**/
1554     1187,
1555 /**/
1556     1186,
1557 /**/
1558     1185,
1559 /**/
1560     1184,
1561 /**/
1562     1183,
1563 /**/
1564     1182,
1565 /**/
1566     1181,
1567 /**/
1568     1180,
1569 /**/
1570     1179,
1571 /**/
1572     1178,
1573 /**/
1574     1177,
1575 /**/
1576     1176,
1577 /**/
1578     1175,
1579 /**/
1580     1174,
1581 /**/
1582     1173,
1583 /**/
1584     1172,
1585 /**/
1586     1171,
1587 /**/
1588     1170,
1589 /**/
1590     1169,
1591 /**/
1592     1168,
1593 /**/
1594     1167,
1595 /**/
1596     1166,
1597 /**/
1598     1165,
1599 /**/
1600     1164,
1601 /**/
1602     1163,
1603 /**/
1604     1162,
1605 /**/
1606     1161,
1607 /**/
1608     1160,
1609 /**/
1610     1159,
1611 /**/
1612     1158,
1613 /**/
1614     1157,
1615 /**/
1616     1156,
1617 /**/
1618     1155,
1619 /**/
1620     1154,
1621 /**/
1622     1153,
1623 /**/
1624     1152,
1625 /**/
1626     1151,
1627 /**/
1628     1150,
1629 /**/
1630     1149,
1631 /**/
1632     1148,
1633 /**/
1634     1147,
1635 /**/
1636     1146,
1637 /**/
1638     1145,
1639 /**/
1640     1144,
1641 /**/
1642     1143,
1643 /**/
1644     1142,
1645 /**/
1646     1141,
1647 /**/
1648     1140,
1649 /**/
1650     1139,
1651 /**/
1652     1138,
1653 /**/
1654     1137,
1655 /**/
1656     1136,
1657 /**/
1658     1135,
1659 /**/
1660     1134,
1661 /**/
1662     1133,
1663 /**/
1664     1132,
1665 /**/
1666     1131,
1667 /**/
1668     1130,
1669 /**/
1670     1129,
1671 /**/
1672     1128,
1673 /**/
1674     1127,
1675 /**/
1676     1126,
1677 /**/
1678     1125,
1679 /**/
1680     1124,
1681 /**/
1682     1123,
1683 /**/
1684     1122,
1685 /**/
1686     1121,
1687 /**/
1688     1120,
1689 /**/
1690     1119,
1691 /**/
1692     1118,
1693 /**/
1694     1117,
1695 /**/
1696     1116,
1697 /**/
1698     1115,
1699 /**/
1700     1114,
1701 /**/
1702     1113,
1703 /**/
1704     1112,
1705 /**/
1706     1111,
1707 /**/
1708     1110,
1709 /**/
1710     1109,
1711 /**/
1712     1108,
1713 /**/
1714     1107,
1715 /**/
1716     1106,
1717 /**/
1718     1105,
1719 /**/
1720     1104,
1721 /**/
1722     1103,
1723 /**/
1724     1102,
1725 /**/
1726     1101,
1727 /**/
1728     1100,
1729 /**/
1730     1099,
1731 /**/
1732     1098,
1733 /**/
1734     1097,
1735 /**/
1736     1096,
1737 /**/
1738     1095,
1739 /**/
1740     1094,
1741 /**/
1742     1093,
1743 /**/
1744     1092,
1745 /**/
1746     1091,
1747 /**/
1748     1090,
1749 /**/
1750     1089,
1751 /**/
1752     1088,
1753 /**/
1754     1087,
1755 /**/
1756     1086,
1757 /**/
1758     1085,
1759 /**/
1760     1084,
1761 /**/
1762     1083,
1763 /**/
1764     1082,
1765 /**/
1766     1081,
1767 /**/
1768     1080,
1769 /**/
1770     1079,
1771 /**/
1772     1078,
1773 /**/
1774     1077,
1775 /**/
1776     1076,
1777 /**/
1778     1075,
1779 /**/
1780     1074,
1781 /**/
1782     1073,
1783 /**/
1784     1072,
1785 /**/
1786     1071,
1787 /**/
1788     1070,
1789 /**/
1790     1069,
1791 /**/
1792     1068,
1793 /**/
1794     1067,
1795 /**/
1796     1066,
1797 /**/
1798     1065,
1799 /**/
1800     1064,
1801 /**/
1802     1063,
1803 /**/
1804     1062,
1805 /**/
1806     1061,
1807 /**/
1808     1060,
1809 /**/
1810     1059,
1811 /**/
1812     1058,
1813 /**/
1814     1057,
1815 /**/
1816     1056,
1817 /**/
1818     1055,
1819 /**/
1820     1054,
1821 /**/
1822     1053,
1823 /**/
1824     1052,
1825 /**/
1826     1051,
1827 /**/
1828     1050,
1829 /**/
1830     1049,
1831 /**/
1832     1048,
1833 /**/
1834     1047,
1835 /**/
1836     1046,
1837 /**/
1838     1045,
1839 /**/
1840     1044,
1841 /**/
1842     1043,
1843 /**/
1844     1042,
1845 /**/
1846     1041,
1847 /**/
1848     1040,
1849 /**/
1850     1039,
1851 /**/
1852     1038,
1853 /**/
1854     1037,
1855 /**/
1856     1036,
1857 /**/
1858     1035,
1859 /**/
1860     1034,
1861 /**/
1862     1033,
1863 /**/
1864     1032,
1865 /**/
1866     1031,
1867 /**/
1868     1030,
1869 /**/
1870     1029,
1871 /**/
1872     1028,
1873 /**/
1874     1027,
1875 /**/
1876     1026,
1877 /**/
1878     1025,
1879 /**/
1880     1024,
1881 /**/
1882     1023,
1883 /**/
1884     1022,
1885 /**/
1886     1021,
1887 /**/
1888     1020,
1889 /**/
1890     1019,
1891 /**/
1892     1018,
1893 /**/
1894     1017,
1895 /**/
1896     1016,
1897 /**/
1898     1015,
1899 /**/
1900     1014,
1901 /**/
1902     1013,
1903 /**/
1904     1012,
1905 /**/
1906     1011,
1907 /**/
1908     1010,
1909 /**/
1910     1009,
1911 /**/
1912     1008,
1913 /**/
1914     1007,
1915 /**/
1916     1006,
1917 /**/
1918     1005,
1919 /**/
1920     1004,
1921 /**/
1922     1003,
1923 /**/
1924     1002,
1925 /**/
1926     1001,
1927 /**/
1928     1000,
1929 /**/
1930     999,
1931 /**/
1932     998,
1933 /**/
1934     997,
1935 /**/
1936     996,
1937 /**/
1938     995,
1939 /**/
1940     994,
1941 /**/
1942     993,
1943 /**/
1944     992,
1945 /**/
1946     991,
1947 /**/
1948     990,
1949 /**/
1950     989,
1951 /**/
1952     988,
1953 /**/
1954     987,
1955 /**/
1956     986,
1957 /**/
1958     985,
1959 /**/
1960     984,
1961 /**/
1962     983,
1963 /**/
1964     982,
1965 /**/
1966     981,
1967 /**/
1968     980,
1969 /**/
1970     979,
1971 /**/
1972     978,
1973 /**/
1974     977,
1975 /**/
1976     976,
1977 /**/
1978     975,
1979 /**/
1980     974,
1981 /**/
1982     973,
1983 /**/
1984     972,
1985 /**/
1986     971,
1987 /**/
1988     970,
1989 /**/
1990     969,
1991 /**/
1992     968,
1993 /**/
1994     967,
1995 /**/
1996     966,
1997 /**/
1998     965,
1999 /**/
2000     964,
2001 /**/
2002     963,
2003 /**/
2004     962,
2005 /**/
2006     961,
2007 /**/
2008     960,
2009 /**/
2010     959,
2011 /**/
2012     958,
2013 /**/
2014     957,
2015 /**/
2016     956,
2017 /**/
2018     955,
2019 /**/
2020     954,
2021 /**/
2022     953,
2023 /**/
2024     952,
2025 /**/
2026     951,
2027 /**/
2028     950,
2029 /**/
2030     949,
2031 /**/
2032     948,
2033 /**/
2034     947,
2035 /**/
2036     946,
2037 /**/
2038     945,
2039 /**/
2040     944,
2041 /**/
2042     943,
2043 /**/
2044     942,
2045 /**/
2046     941,
2047 /**/
2048     940,
2049 /**/
2050     939,
2051 /**/
2052     938,
2053 /**/
2054     937,
2055 /**/
2056     936,
2057 /**/
2058     935,
2059 /**/
2060     934,
2061 /**/
2062     933,
2063 /**/
2064     932,
2065 /**/
2066     931,
2067 /**/
2068     930,
2069 /**/
2070     929,
2071 /**/
2072     928,
2073 /**/
2074     927,
2075 /**/
2076     926,
2077 /**/
2078     925,
2079 /**/
2080     924,
2081 /**/
2082     923,
2083 /**/
2084     922,
2085 /**/
2086     921,
2087 /**/
2088     920,
2089 /**/
2090     919,
2091 /**/
2092     918,
2093 /**/
2094     917,
2095 /**/
2096     916,
2097 /**/
2098     915,
2099 /**/
2100     914,
2101 /**/
2102     913,
2103 /**/
2104     912,
2105 /**/
2106     911,
2107 /**/
2108     910,
2109 /**/
2110     909,
2111 /**/
2112     908,
2113 /**/
2114     907,
2115 /**/
2116     906,
2117 /**/
2118     905,
2119 /**/
2120     904,
2121 /**/
2122     903,
2123 /**/
2124     902,
2125 /**/
2126     901,
2127 /**/
2128     900,
2129 /**/
2130     899,
2131 /**/
2132     898,
2133 /**/
2134     897,
2135 /**/
2136     896,
2137 /**/
2138     895,
2139 /**/
2140     894,
2141 /**/
2142     893,
2143 /**/
2144     892,
2145 /**/
2146     891,
2147 /**/
2148     890,
2149 /**/
2150     889,
2151 /**/
2152     888,
2153 /**/
2154     887,
2155 /**/
2156     886,
2157 /**/
2158     885,
2159 /**/
2160     884,
2161 /**/
2162     883,
2163 /**/
2164     882,
2165 /**/
2166     881,
2167 /**/
2168     880,
2169 /**/
2170     879,
2171 /**/
2172     878,
2173 /**/
2174     877,
2175 /**/
2176     876,
2177 /**/
2178     875,
2179 /**/
2180     874,
2181 /**/
2182     873,
2183 /**/
2184     872,
2185 /**/
2186     871,
2187 /**/
2188     870,
2189 /**/
2190     869,
2191 /**/
2192     868,
2193 /**/
2194     867,
2195 /**/
2196     866,
2197 /**/
2198     865,
2199 /**/
2200     864,
2201 /**/
2202     863,
2203 /**/
2204     862,
2205 /**/
2206     861,
2207 /**/
2208     860,
2209 /**/
2210     859,
2211 /**/
2212     858,
2213 /**/
2214     857,
2215 /**/
2216     856,
2217 /**/
2218     855,
2219 /**/
2220     854,
2221 /**/
2222     853,
2223 /**/
2224     852,
2225 /**/
2226     851,
2227 /**/
2228     850,
2229 /**/
2230     849,
2231 /**/
2232     848,
2233 /**/
2234     847,
2235 /**/
2236     846,
2237 /**/
2238     845,
2239 /**/
2240     844,
2241 /**/
2242     843,
2243 /**/
2244     842,
2245 /**/
2246     841,
2247 /**/
2248     840,
2249 /**/
2250     839,
2251 /**/
2252     838,
2253 /**/
2254     837,
2255 /**/
2256     836,
2257 /**/
2258     835,
2259 /**/
2260     834,
2261 /**/
2262     833,
2263 /**/
2264     832,
2265 /**/
2266     831,
2267 /**/
2268     830,
2269 /**/
2270     829,
2271 /**/
2272     828,
2273 /**/
2274     827,
2275 /**/
2276     826,
2277 /**/
2278     825,
2279 /**/
2280     824,
2281 /**/
2282     823,
2283 /**/
2284     822,
2285 /**/
2286     821,
2287 /**/
2288     820,
2289 /**/
2290     819,
2291 /**/
2292     818,
2293 /**/
2294     817,
2295 /**/
2296     816,
2297 /**/
2298     815,
2299 /**/
2300     814,
2301 /**/
2302     813,
2303 /**/
2304     812,
2305 /**/
2306     811,
2307 /**/
2308     810,
2309 /**/
2310     809,
2311 /**/
2312     808,
2313 /**/
2314     807,
2315 /**/
2316     806,
2317 /**/
2318     805,
2319 /**/
2320     804,
2321 /**/
2322     803,
2323 /**/
2324     802,
2325 /**/
2326     801,
2327 /**/
2328     800,
2329 /**/
2330     799,
2331 /**/
2332     798,
2333 /**/
2334     797,
2335 /**/
2336     796,
2337 /**/
2338     795,
2339 /**/
2340     794,
2341 /**/
2342     793,
2343 /**/
2344     792,
2345 /**/
2346     791,
2347 /**/
2348     790,
2349 /**/
2350     789,
2351 /**/
2352     788,
2353 /**/
2354     787,
2355 /**/
2356     786,
2357 /**/
2358     785,
2359 /**/
2360     784,
2361 /**/
2362     783,
2363 /**/
2364     782,
2365 /**/
2366     781,
2367 /**/
2368     780,
2369 /**/
2370     779,
2371 /**/
2372     778,
2373 /**/
2374     777,
2375 /**/
2376     776,
2377 /**/
2378     775,
2379 /**/
2380     774,
2381 /**/
2382     773,
2383 /**/
2384     772,
2385 /**/
2386     771,
2387 /**/
2388     770,
2389 /**/
2390     769,
2391 /**/
2392     768,
2393 /**/
2394     767,
2395 /**/
2396     766,
2397 /**/
2398     765,
2399 /**/
2400     764,
2401 /**/
2402     763,
2403 /**/
2404     762,
2405 /**/
2406     761,
2407 /**/
2408     760,
2409 /**/
2410     759,
2411 /**/
2412     758,
2413 /**/
2414     757,
2415 /**/
2416     756,
2417 /**/
2418     755,
2419 /**/
2420     754,
2421 /**/
2422     753,
2423 /**/
2424     752,
2425 /**/
2426     751,
2427 /**/
2428     750,
2429 /**/
2430     749,
2431 /**/
2432     748,
2433 /**/
2434     747,
2435 /**/
2436     746,
2437 /**/
2438     745,
2439 /**/
2440     744,
2441 /**/
2442     743,
2443 /**/
2444     742,
2445 /**/
2446     741,
2447 /**/
2448     740,
2449 /**/
2450     739,
2451 /**/
2452     738,
2453 /**/
2454     737,
2455 /**/
2456     736,
2457 /**/
2458     735,
2459 /**/
2460     734,
2461 /**/
2462     733,
2463 /**/
2464     732,
2465 /**/
2466     731,
2467 /**/
2468     730,
2469 /**/
2470     729,
2471 /**/
2472     728,
2473 /**/
2474     727,
2475 /**/
2476     726,
2477 /**/
2478     725,
2479 /**/
2480     724,
2481 /**/
2482     723,
2483 /**/
2484     722,
2485 /**/
2486     721,
2487 /**/
2488     720,
2489 /**/
2490     719,
2491 /**/
2492     718,
2493 /**/
2494     717,
2495 /**/
2496     716,
2497 /**/
2498     715,
2499 /**/
2500     714,
2501 /**/
2502     713,
2503 /**/
2504     712,
2505 /**/
2506     711,
2507 /**/
2508     710,
2509 /**/
2510     709,
2511 /**/
2512     708,
2513 /**/
2514     707,
2515 /**/
2516     706,
2517 /**/
2518     705,
2519 /**/
2520     704,
2521 /**/
2522     703,
2523 /**/
2524     702,
2525 /**/
2526     701,
2527 /**/
2528     700,
2529 /**/
2530     699,
2531 /**/
2532     698,
2533 /**/
2534     697,
2535 /**/
2536     696,
2537 /**/
2538     695,
2539 /**/
2540     694,
2541 /**/
2542     693,
2543 /**/
2544     692,
2545 /**/
2546     691,
2547 /**/
2548     690,
2549 /**/
2550     689,
2551 /**/
2552     688,
2553 /**/
2554     687,
2555 /**/
2556     686,
2557 /**/
2558     685,
2559 /**/
2560     684,
2561 /**/
2562     683,
2563 /**/
2564     682,
2565 /**/
2566     681,
2567 /**/
2568     680,
2569 /**/
2570     679,
2571 /**/
2572     678,
2573 /**/
2574     677,
2575 /**/
2576     676,
2577 /**/
2578     675,
2579 /**/
2580     674,
2581 /**/
2582     673,
2583 /**/
2584     672,
2585 /**/
2586     671,
2587 /**/
2588     670,
2589 /**/
2590     669,
2591 /**/
2592     668,
2593 /**/
2594     667,
2595 /**/
2596     666,
2597 /**/
2598     665,
2599 /**/
2600     664,
2601 /**/
2602     663,
2603 /**/
2604     662,
2605 /**/
2606     661,
2607 /**/
2608     660,
2609 /**/
2610     659,
2611 /**/
2612     658,
2613 /**/
2614     657,
2615 /**/
2616     656,
2617 /**/
2618     655,
2619 /**/
2620     654,
2621 /**/
2622     653,
2623 /**/
2624     652,
2625 /**/
2626     651,
2627 /**/
2628     650,
2629 /**/
2630     649,
2631 /**/
2632     648,
2633 /**/
2634     647,
2635 /**/
2636     646,
2637 /**/
2638     645,
2639 /**/
2640     644,
2641 /**/
2642     643,
2643 /**/
2644     642,
2645 /**/
2646     641,
2647 /**/
2648     640,
2649 /**/
2650     639,
2651 /**/
2652     638,
2653 /**/
2654     637,
2655 /**/
2656     636,
2657 /**/
2658     635,
2659 /**/
2660     634,
2661 /**/
2662     633,
2663 /**/
2664     632,
2665 /**/
2666     631,
2667 /**/
2668     630,
2669 /**/
2670     629,
2671 /**/
2672     628,
2673 /**/
2674     627,
2675 /**/
2676     626,
2677 /**/
2678     625,
2679 /**/
2680     624,
2681 /**/
2682     623,
2683 /**/
2684     622,
2685 /**/
2686     621,
2687 /**/
2688     620,
2689 /**/
2690     619,
2691 /**/
2692     618,
2693 /**/
2694     617,
2695 /**/
2696     616,
2697 /**/
2698     615,
2699 /**/
2700     614,
2701 /**/
2702     613,
2703 /**/
2704     612,
2705 /**/
2706     611,
2707 /**/
2708     610,
2709 /**/
2710     609,
2711 /**/
2712     608,
2713 /**/
2714     607,
2715 /**/
2716     606,
2717 /**/
2718     605,
2719 /**/
2720     604,
2721 /**/
2722     603,
2723 /**/
2724     602,
2725 /**/
2726     601,
2727 /**/
2728     600,
2729 /**/
2730     599,
2731 /**/
2732     598,
2733 /**/
2734     597,
2735 /**/
2736     596,
2737 /**/
2738     595,
2739 /**/
2740     594,
2741 /**/
2742     593,
2743 /**/
2744     592,
2745 /**/
2746     591,
2747 /**/
2748     590,
2749 /**/
2750     589,
2751 /**/
2752     588,
2753 /**/
2754     587,
2755 /**/
2756     586,
2757 /**/
2758     585,
2759 /**/
2760     584,
2761 /**/
2762     583,
2763 /**/
2764     582,
2765 /**/
2766     581,
2767 /**/
2768     580,
2769 /**/
2770     579,
2771 /**/
2772     578,
2773 /**/
2774     577,
2775 /**/
2776     576,
2777 /**/
2778     575,
2779 /**/
2780     574,
2781 /**/
2782     573,
2783 /**/
2784     572,
2785 /**/
2786     571,
2787 /**/
2788     570,
2789 /**/
2790     569,
2791 /**/
2792     568,
2793 /**/
2794     567,
2795 /**/
2796     566,
2797 /**/
2798     565,
2799 /**/
2800     564,
2801 /**/
2802     563,
2803 /**/
2804     562,
2805 /**/
2806     561,
2807 /**/
2808     560,
2809 /**/
2810     559,
2811 /**/
2812     558,
2813 /**/
2814     557,
2815 /**/
2816     556,
2817 /**/
2818     555,
2819 /**/
2820     554,
2821 /**/
2822     553,
2823 /**/
2824     552,
2825 /**/
2826     551,
2827 /**/
2828     550,
2829 /**/
2830     549,
2831 /**/
2832     548,
2833 /**/
2834     547,
2835 /**/
2836     546,
2837 /**/
2838     545,
2839 /**/
2840     544,
2841 /**/
2842     543,
2843 /**/
2844     542,
2845 /**/
2846     541,
2847 /**/
2848     540,
2849 /**/
2850     539,
2851 /**/
2852     538,
2853 /**/
2854     537,
2855 /**/
2856     536,
2857 /**/
2858     535,
2859 /**/
2860     534,
2861 /**/
2862     533,
2863 /**/
2864     532,
2865 /**/
2866     531,
2867 /**/
2868     530,
2869 /**/
2870     529,
2871 /**/
2872     528,
2873 /**/
2874     527,
2875 /**/
2876     526,
2877 /**/
2878     525,
2879 /**/
2880     524,
2881 /**/
2882     523,
2883 /**/
2884     522,
2885 /**/
2886     521,
2887 /**/
2888     520,
2889 /**/
2890     519,
2891 /**/
2892     518,
2893 /**/
2894     517,
2895 /**/
2896     516,
2897 /**/
2898     515,
2899 /**/
2900     514,
2901 /**/
2902     513,
2903 /**/
2904     512,
2905 /**/
2906     511,
2907 /**/
2908     510,
2909 /**/
2910     509,
2911 /**/
2912     508,
2913 /**/
2914     507,
2915 /**/
2916     506,
2917 /**/
2918     505,
2919 /**/
2920     504,
2921 /**/
2922     503,
2923 /**/
2924     502,
2925 /**/
2926     501,
2927 /**/
2928     500,
2929 /**/
2930     499,
2931 /**/
2932     498,
2933 /**/
2934     497,
2935 /**/
2936     496,
2937 /**/
2938     495,
2939 /**/
2940     494,
2941 /**/
2942     493,
2943 /**/
2944     492,
2945 /**/
2946     491,
2947 /**/
2948     490,
2949 /**/
2950     489,
2951 /**/
2952     488,
2953 /**/
2954     487,
2955 /**/
2956     486,
2957 /**/
2958     485,
2959 /**/
2960     484,
2961 /**/
2962     483,
2963 /**/
2964     482,
2965 /**/
2966     481,
2967 /**/
2968     480,
2969 /**/
2970     479,
2971 /**/
2972     478,
2973 /**/
2974     477,
2975 /**/
2976     476,
2977 /**/
2978     475,
2979 /**/
2980     474,
2981 /**/
2982     473,
2983 /**/
2984     472,
2985 /**/
2986     471,
2987 /**/
2988     470,
2989 /**/
2990     469,
2991 /**/
2992     468,
2993 /**/
2994     467,
2995 /**/
2996     466,
2997 /**/
2998     465,
2999 /**/
3000     464,
3001 /**/
3002     463,
3003 /**/
3004     462,
3005 /**/
3006     461,
3007 /**/
3008     460,
3009 /**/
3010     459,
3011 /**/
3012     458,
3013 /**/
3014     457,
3015 /**/
3016     456,
3017 /**/
3018     455,
3019 /**/
3020     454,
3021 /**/
3022     453,
3023 /**/
3024     452,
3025 /**/
3026     451,
3027 /**/
3028     450,
3029 /**/
3030     449,
3031 /**/
3032     448,
3033 /**/
3034     447,
3035 /**/
3036     446,
3037 /**/
3038     445,
3039 /**/
3040     444,
3041 /**/
3042     443,
3043 /**/
3044     442,
3045 /**/
3046     441,
3047 /**/
3048     440,
3049 /**/
3050     439,
3051 /**/
3052     438,
3053 /**/
3054     437,
3055 /**/
3056     436,
3057 /**/
3058     435,
3059 /**/
3060     434,
3061 /**/
3062     433,
3063 /**/
3064     432,
3065 /**/
3066     431,
3067 /**/
3068     430,
3069 /**/
3070     429,
3071 /**/
3072     428,
3073 /**/
3074     427,
3075 /**/
3076     426,
3077 /**/
3078     425,
3079 /**/
3080     424,
3081 /**/
3082     423,
3083 /**/
3084     422,
3085 /**/
3086     421,
3087 /**/
3088     420,
3089 /**/
3090     419,
3091 /**/
3092     418,
3093 /**/
3094     417,
3095 /**/
3096     416,
3097 /**/
3098     415,
3099 /**/
3100     414,
3101 /**/
3102     413,
3103 /**/
3104     412,
3105 /**/
3106     411,
3107 /**/
3108     410,
3109 /**/
3110     409,
3111 /**/
3112     408,
3113 /**/
3114     407,
3115 /**/
3116     406,
3117 /**/
3118     405,
3119 /**/
3120     404,
3121 /**/
3122     403,
3123 /**/
3124     402,
3125 /**/
3126     401,
3127 /**/
3128     400,
3129 /**/
3130     399,
3131 /**/
3132     398,
3133 /**/
3134     397,
3135 /**/
3136     396,
3137 /**/
3138     395,
3139 /**/
3140     394,
3141 /**/
3142     393,
3143 /**/
3144     392,
3145 /**/
3146     391,
3147 /**/
3148     390,
3149 /**/
3150     389,
3151 /**/
3152     388,
3153 /**/
3154     387,
3155 /**/
3156     386,
3157 /**/
3158     385,
3159 /**/
3160     384,
3161 /**/
3162     383,
3163 /**/
3164     382,
3165 /**/
3166     381,
3167 /**/
3168     380,
3169 /**/
3170     379,
3171 /**/
3172     378,
3173 /**/
3174     377,
3175 /**/
3176     376,
3177 /**/
3178     375,
3179 /**/
3180     374,
3181 /**/
3182     373,
3183 /**/
3184     372,
3185 /**/
3186     371,
3187 /**/
3188     370,
3189 /**/
3190     369,
3191 /**/
3192     368,
3193 /**/
3194     367,
3195 /**/
3196     366,
3197 /**/
3198     365,
3199 /**/
3200     364,
3201 /**/
3202     363,
3203 /**/
3204     362,
3205 /**/
3206     361,
3207 /**/
3208     360,
3209 /**/
3210     359,
3211 /**/
3212     358,
3213 /**/
3214     357,
3215 /**/
3216     356,
3217 /**/
3218     355,
3219 /**/
3220     354,
3221 /**/
3222     353,
3223 /**/
3224     352,
3225 /**/
3226     351,
3227 /**/
3228     350,
3229 /**/
3230     349,
3231 /**/
3232     348,
3233 /**/
3234     347,
3235 /**/
3236     346,
3237 /**/
3238     345,
3239 /**/
3240     344,
3241 /**/
3242     343,
3243 /**/
3244     342,
3245 /**/
3246     341,
3247 /**/
3248     340,
3249 /**/
3250     339,
3251 /**/
3252     338,
3253 /**/
3254     337,
3255 /**/
3256     336,
3257 /**/
3258     335,
3259 /**/
3260     334,
3261 /**/
3262     333,
3263 /**/
3264     332,
3265 /**/
3266     331,
3267 /**/
3268     330,
3269 /**/
3270     329,
3271 /**/
3272     328,
3273 /**/
3274     327,
3275 /**/
3276     326,
3277 /**/
3278     325,
3279 /**/
3280     324,
3281 /**/
3282     323,
3283 /**/
3284     322,
3285 /**/
3286     321,
3287 /**/
3288     320,
3289 /**/
3290     319,
3291 /**/
3292     318,
3293 /**/
3294     317,
3295 /**/
3296     316,
3297 /**/
3298     315,
3299 /**/
3300     314,
3301 /**/
3302     313,
3303 /**/
3304     312,
3305 /**/
3306     311,
3307 /**/
3308     310,
3309 /**/
3310     309,
3311 /**/
3312     308,
3313 /**/
3314     307,
3315 /**/
3316     306,
3317 /**/
3318     305,
3319 /**/
3320     304,
3321 /**/
3322     303,
3323 /**/
3324     302,
3325 /**/
3326     301,
3327 /**/
3328     300,
3329 /**/
3330     299,
3331 /**/
3332     298,
3333 /**/
3334     297,
3335 /**/
3336     296,
3337 /**/
3338     295,
3339 /**/
3340     294,
3341 /**/
3342     293,
3343 /**/
3344     292,
3345 /**/
3346     291,
3347 /**/
3348     290,
3349 /**/
3350     289,
3351 /**/
3352     288,
3353 /**/
3354     287,
3355 /**/
3356     286,
3357 /**/
3358     285,
3359 /**/
3360     284,
3361 /**/
3362     283,
3363 /**/
3364     282,
3365 /**/
3366     281,
3367 /**/
3368     280,
3369 /**/
3370     279,
3371 /**/
3372     278,
3373 /**/
3374     277,
3375 /**/
3376     276,
3377 /**/
3378     275,
3379 /**/
3380     274,
3381 /**/
3382     273,
3383 /**/
3384     272,
3385 /**/
3386     271,
3387 /**/
3388     270,
3389 /**/
3390     269,
3391 /**/
3392     268,
3393 /**/
3394     267,
3395 /**/
3396     266,
3397 /**/
3398     265,
3399 /**/
3400     264,
3401 /**/
3402     263,
3403 /**/
3404     262,
3405 /**/
3406     261,
3407 /**/
3408     260,
3409 /**/
3410     259,
3411 /**/
3412     258,
3413 /**/
3414     257,
3415 /**/
3416     256,
3417 /**/
3418     255,
3419 /**/
3420     254,
3421 /**/
3422     253,
3423 /**/
3424     252,
3425 /**/
3426     251,
3427 /**/
3428     250,
3429 /**/
3430     249,
3431 /**/
3432     248,
3433 /**/
3434     247,
3435 /**/
3436     246,
3437 /**/
3438     245,
3439 /**/
3440     244,
3441 /**/
3442     243,
3443 /**/
3444     242,
3445 /**/
3446     241,
3447 /**/
3448     240,
3449 /**/
3450     239,
3451 /**/
3452     238,
3453 /**/
3454     237,
3455 /**/
3456     236,
3457 /**/
3458     235,
3459 /**/
3460     234,
3461 /**/
3462     233,
3463 /**/
3464     232,
3465 /**/
3466     231,
3467 /**/
3468     230,
3469 /**/
3470     229,
3471 /**/
3472     228,
3473 /**/
3474     227,
3475 /**/
3476     226,
3477 /**/
3478     225,
3479 /**/
3480     224,
3481 /**/
3482     223,
3483 /**/
3484     222,
3485 /**/
3486     221,
3487 /**/
3488     220,
3489 /**/
3490     219,
3491 /**/
3492     218,
3493 /**/
3494     217,
3495 /**/
3496     216,
3497 /**/
3498     215,
3499 /**/
3500     214,
3501 /**/
3502     213,
3503 /**/
3504     212,
3505 /**/
3506     211,
3507 /**/
3508     210,
3509 /**/
3510     209,
3511 /**/
3512     208,
3513 /**/
3514     207,
3515 /**/
3516     206,
3517 /**/
3518     205,
3519 /**/
3520     204,
3521 /**/
3522     203,
3523 /**/
3524     202,
3525 /**/
3526     201,
3527 /**/
3528     200,
3529 /**/
3530     199,
3531 /**/
3532     198,
3533 /**/
3534     197,
3535 /**/
3536     196,
3537 /**/
3538     195,
3539 /**/
3540     194,
3541 /**/
3542     193,
3543 /**/
3544     192,
3545 /**/
3546     191,
3547 /**/
3548     190,
3549 /**/
3550     189,
3551 /**/
3552     188,
3553 /**/
3554     187,
3555 /**/
3556     186,
3557 /**/
3558     185,
3559 /**/
3560     184,
3561 /**/
3562     183,
3563 /**/
3564     182,
3565 /**/
3566     181,
3567 /**/
3568     180,
3569 /**/
3570     179,
3571 /**/
3572     178,
3573 /**/
3574     177,
3575 /**/
3576     176,
3577 /**/
3578     175,
3579 /**/
3580     174,
3581 /**/
3582     173,
3583 /**/
3584     172,
3585 /**/
3586     171,
3587 /**/
3588     170,
3589 /**/
3590     169,
3591 /**/
3592     168,
3593 /**/
3594     167,
3595 /**/
3596     166,
3597 /**/
3598     165,
3599 /**/
3600     164,
3601 /**/
3602     163,
3603 /**/
3604     162,
3605 /**/
3606     161,
3607 /**/
3608     160,
3609 /**/
3610     159,
3611 /**/
3612     158,
3613 /**/
3614     157,
3615 /**/
3616     156,
3617 /**/
3618     155,
3619 /**/
3620     154,
3621 /**/
3622     153,
3623 /**/
3624     152,
3625 /**/
3626     151,
3627 /**/
3628     150,
3629 /**/
3630     149,
3631 /**/
3632     148,
3633 /**/
3634     147,
3635 /**/
3636     146,
3637 /**/
3638     145,
3639 /**/
3640     144,
3641 /**/
3642     143,
3643 /**/
3644     142,
3645 /**/
3646     141,
3647 /**/
3648     140,
3649 /**/
3650     139,
3651 /**/
3652     138,
3653 /**/
3654     137,
3655 /**/
3656     136,
3657 /**/
3658     135,
3659 /**/
3660     134,
3661 /**/
3662     133,
3663 /**/
3664     132,
3665 /**/
3666     131,
3667 /**/
3668     130,
3669 /**/
3670     129,
3671 /**/
3672     128,
3673 /**/
3674     127,
3675 /**/
3676     126,
3677 /**/
3678     125,
3679 /**/
3680     124,
3681 /**/
3682     123,
3683 /**/
3684     122,
3685 /**/
3686     121,
3687 /**/
3688     120,
3689 /**/
3690     119,
3691 /**/
3692     118,
3693 /**/
3694     117,
3695 /**/
3696     116,
3697 /**/
3698     115,
3699 /**/
3700     114,
3701 /**/
3702     113,
3703 /**/
3704     112,
3705 /**/
3706     111,
3707 /**/
3708     110,
3709 /**/
3710     109,
3711 /**/
3712     108,
3713 /**/
3714     107,
3715 /**/
3716     106,
3717 /**/
3718     105,
3719 /**/
3720     104,
3721 /**/
3722     103,
3723 /**/
3724     102,
3725 /**/
3726     101,
3727 /**/
3728     100,
3729 /**/
3730     99,
3731 /**/
3732     98,
3733 /**/
3734     97,
3735 /**/
3736     96,
3737 /**/
3738     95,
3739 /**/
3740     94,
3741 /**/
3742     93,
3743 /**/
3744     92,
3745 /**/
3746     91,
3747 /**/
3748     90,
3749 /**/
3750     89,
3751 /**/
3752     88,
3753 /**/
3754     87,
3755 /**/
3756     86,
3757 /**/
3758     85,
3759 /**/
3760     84,
3761 /**/
3762     83,
3763 /**/
3764     82,
3765 /**/
3766     81,
3767 /**/
3768     80,
3769 /**/
3770     79,
3771 /**/
3772     78,
3773 /**/
3774     77,
3775 /**/
3776     76,
3777 /**/
3778     75,
3779 /**/
3780     74,
3781 /**/
3782     73,
3783 /**/
3784     72,
3785 /**/
3786     71,
3787 /**/
3788     70,
3789 /**/
3790     69,
3791 /**/
3792     68,
3793 /**/
3794     67,
3795 /**/
3796     66,
3797 /**/
3798     65,
3799 /**/
3800     64,
3801 /**/
3802     63,
3803 /**/
3804     62,
3805 /**/
3806     61,
3807 /**/
3808     60,
3809 /**/
3810     59,
3811 /**/
3812     58,
3813 /**/
3814     57,
3815 /**/
3816     56,
3817 /**/
3818     55,
3819 /**/
3820     54,
3821 /**/
3822     53,
3823 /**/
3824     52,
3825 /**/
3826     51,
3827 /**/
3828     50,
3829 /**/
3830     49,
3831 /**/
3832     48,
3833 /**/
3834     47,
3835 /**/
3836     46,
3837 /**/
3838     45,
3839 /**/
3840     44,
3841 /**/
3842     43,
3843 /**/
3844     42,
3845 /**/
3846     41,
3847 /**/
3848     40,
3849 /**/
3850     39,
3851 /**/
3852     38,
3853 /**/
3854     37,
3855 /**/
3856     36,
3857 /**/
3858     35,
3859 /**/
3860     34,
3861 /**/
3862     33,
3863 /**/
3864     32,
3865 /**/
3866     31,
3867 /**/
3868     30,
3869 /**/
3870     29,
3871 /**/
3872     28,
3873 /**/
3874     27,
3875 /**/
3876     26,
3877 /**/
3878     25,
3879 /**/
3880     24,
3881 /**/
3882     23,
3883 /**/
3884     22,
3885 /**/
3886     21,
3887 /**/
3888     20,
3889 /**/
3890     19,
3891 /**/
3892     18,
3893 /**/
3894     17,
3895 /**/
3896     16,
3897 /**/
3898     15,
3899 /**/
3900     14,
3901 /**/
3902     13,
3903 /**/
3904     12,
3905 /**/
3906     11,
3907 /**/
3908     10,
3909 /**/
3910     9,
3911 /**/
3912     8,
3913 /**/
3914     7,
3915 /**/
3916     6,
3917 /**/
3918     5,
3919 /**/
3920     4,
3921 /**/
3922     3,
3923 /**/
3924     2,
3925 /**/
3926     1,
3927 /**/
3928     0
3929 };
3930 
3931 /*
3932  * Place to put a short description when adding a feature with a patch.
3933  * Keep it short, e.g.,: "relative numbers", "persistent undo".
3934  * Also add a comment marker to separate the lines.
3935  * See the official Vim patches for the diff format: It must use a context of
3936  * one line only.  Create it by hand or use "diff -C2" and edit the patch.
3937  */
3938 static char *(extra_patches[]) =
3939 {   /* Add your patch description below this line */
3940 /**/
3941     NULL
3942 };
3943 
3944     int
3945 highest_patch(void)
3946 {
3947     // this relies on the highest patch number to be the first entry
3948     return included_patches[0];
3949 }
3950 
3951 #if defined(FEAT_EVAL) || defined(PROTO)
3952 /*
3953  * Return TRUE if patch "n" has been included.
3954  */
3955     int
3956 has_patch(int n)
3957 {
3958     int		i;
3959 
3960     for (i = 0; included_patches[i] != 0; ++i)
3961 	if (included_patches[i] == n)
3962 	    return TRUE;
3963     return FALSE;
3964 }
3965 #endif
3966 
3967     void
3968 ex_version(exarg_T *eap)
3969 {
3970     /*
3971      * Ignore a ":version 9.99" command.
3972      */
3973     if (*eap->arg == NUL)
3974     {
3975 	msg_putchar('\n');
3976 	list_version();
3977     }
3978 }
3979 
3980 /*
3981  * Output a string for the version message.  If it's going to wrap, output a
3982  * newline, unless the message is too long to fit on the screen anyway.
3983  * When "wrap" is TRUE wrap the string in [].
3984  */
3985     static void
3986 version_msg_wrap(char_u *s, int wrap)
3987 {
3988     int		len = (int)vim_strsize(s) + (wrap ? 2 : 0);
3989 
3990     if (!got_int && len < (int)Columns && msg_col + len >= (int)Columns
3991 								&& *s != '\n')
3992 	msg_putchar('\n');
3993     if (!got_int)
3994     {
3995 	if (wrap)
3996 	    msg_puts("[");
3997 	msg_puts((char *)s);
3998 	if (wrap)
3999 	    msg_puts("]");
4000     }
4001 }
4002 
4003     static void
4004 version_msg(char *s)
4005 {
4006     version_msg_wrap((char_u *)s, FALSE);
4007 }
4008 
4009 /*
4010  * List all features aligned in columns, dictionary style.
4011  */
4012     static void
4013 list_features(void)
4014 {
4015     list_in_columns((char_u **)features, -1, -1);
4016 }
4017 
4018 /*
4019  * List string items nicely aligned in columns.
4020  * When "size" is < 0 then the last entry is marked with NULL.
4021  * The entry with index "current" is inclosed in [].
4022  */
4023     void
4024 list_in_columns(char_u **items, int size, int current)
4025 {
4026     int		i;
4027     int		ncol;
4028     int		nrow;
4029     int		cur_row = 1;
4030     int		item_count = 0;
4031     int		width = 0;
4032 #ifdef FEAT_SYN_HL
4033     int		use_highlight = (items == (char_u **)features);
4034 #endif
4035 
4036     // Find the length of the longest item, use that + 1 as the column
4037     // width.
4038     for (i = 0; size < 0 ? items[i] != NULL : i < size; ++i)
4039     {
4040 	int l = (int)vim_strsize(items[i]) + (i == current ? 2 : 0);
4041 
4042 	if (l > width)
4043 	    width = l;
4044 	++item_count;
4045     }
4046     width += 1;
4047 
4048     if (Columns < width)
4049     {
4050 	// Not enough screen columns - show one per line
4051 	for (i = 0; i < item_count; ++i)
4052 	{
4053 	    version_msg_wrap(items[i], i == current);
4054 	    if (msg_col > 0 && i < item_count - 1)
4055 		msg_putchar('\n');
4056 	}
4057 	return;
4058     }
4059 
4060     // The rightmost column doesn't need a separator.
4061     // Sacrifice it to fit in one more column if possible.
4062     ncol = (int) (Columns + 1) / width;
4063     nrow = item_count / ncol + (item_count % ncol ? 1 : 0);
4064 
4065     // "i" counts columns then rows.  "idx" counts rows then columns.
4066     for (i = 0; !got_int && i < nrow * ncol; ++i)
4067     {
4068 	int idx = (i / ncol) + (i % ncol) * nrow;
4069 
4070 	if (idx < item_count)
4071 	{
4072 	    int last_col = (i + 1) % ncol == 0;
4073 
4074 	    if (idx == current)
4075 		msg_putchar('[');
4076 #ifdef FEAT_SYN_HL
4077 	    if (use_highlight && items[idx][0] == '-')
4078 		msg_puts_attr((char *)items[idx], HL_ATTR(HLF_W));
4079 	    else
4080 #endif
4081 		msg_puts((char *)items[idx]);
4082 	    if (idx == current)
4083 		msg_putchar(']');
4084 	    if (last_col)
4085 	    {
4086 		if (msg_col > 0 && cur_row < nrow)
4087 		    msg_putchar('\n');
4088 		++cur_row;
4089 	    }
4090 	    else
4091 	    {
4092 		while (msg_col % width)
4093 		    msg_putchar(' ');
4094 	    }
4095 	}
4096 	else
4097 	{
4098 	    // this row is out of items, thus at the end of the row
4099 	    if (msg_col > 0)
4100 	    {
4101 		if (cur_row < nrow)
4102 		    msg_putchar('\n');
4103 		++cur_row;
4104 	    }
4105 	}
4106     }
4107 }
4108 
4109     void
4110 list_version(void)
4111 {
4112     int		i;
4113     int		first;
4114     char	*s = "";
4115 
4116     /*
4117      * When adding features here, don't forget to update the list of
4118      * internal variables in eval.c!
4119      */
4120     init_longVersion();
4121     msg(longVersion);
4122 #ifdef MSWIN
4123 # ifdef FEAT_GUI_MSWIN
4124 #  ifdef VIMDLL
4125 #   ifdef _WIN64
4126     msg_puts(_("\nMS-Windows 64-bit GUI/console version"));
4127 #   else
4128     msg_puts(_("\nMS-Windows 32-bit GUI/console version"));
4129 #   endif
4130 #  else
4131 #   ifdef _WIN64
4132     msg_puts(_("\nMS-Windows 64-bit GUI version"));
4133 #   else
4134     msg_puts(_("\nMS-Windows 32-bit GUI version"));
4135 #   endif
4136 #  endif
4137 #  ifdef FEAT_OLE
4138     msg_puts(_(" with OLE support"));
4139 #  endif
4140 # else
4141 #  ifdef _WIN64
4142     msg_puts(_("\nMS-Windows 64-bit console version"));
4143 #  else
4144     msg_puts(_("\nMS-Windows 32-bit console version"));
4145 #  endif
4146 # endif
4147 #endif
4148 #if defined(MACOS_X)
4149 # if defined(MACOS_X_DARWIN)
4150     msg_puts(_("\nmacOS version"));
4151 # else
4152     msg_puts(_("\nmacOS version w/o darwin feat."));
4153 # endif
4154 #endif
4155 
4156 #ifdef VMS
4157     msg_puts(_("\nOpenVMS version"));
4158 # ifdef HAVE_PATHDEF
4159     if (*compiled_arch != NUL)
4160     {
4161 	msg_puts(" - ");
4162 	msg_puts((char *)compiled_arch);
4163     }
4164 # endif
4165 
4166 #endif
4167 
4168     // Print the list of patch numbers if there is at least one.
4169     // Print a range when patches are consecutive: "1-10, 12, 15-40, 42-45"
4170     if (included_patches[0] != 0)
4171     {
4172 	msg_puts(_("\nIncluded patches: "));
4173 	first = -1;
4174 	// find last one
4175 	for (i = 0; included_patches[i] != 0; ++i)
4176 	    ;
4177 	while (--i >= 0)
4178 	{
4179 	    if (first < 0)
4180 		first = included_patches[i];
4181 	    if (i == 0 || included_patches[i - 1] != included_patches[i] + 1)
4182 	    {
4183 		msg_puts(s);
4184 		s = ", ";
4185 		msg_outnum((long)first);
4186 		if (first != included_patches[i])
4187 		{
4188 		    msg_puts("-");
4189 		    msg_outnum((long)included_patches[i]);
4190 		}
4191 		first = -1;
4192 	    }
4193 	}
4194     }
4195 
4196     // Print the list of extra patch descriptions if there is at least one.
4197     if (extra_patches[0] != NULL)
4198     {
4199 	msg_puts(_("\nExtra patches: "));
4200 	s = "";
4201 	for (i = 0; extra_patches[i] != NULL; ++i)
4202 	{
4203 	    msg_puts(s);
4204 	    s = ", ";
4205 	    msg_puts(extra_patches[i]);
4206 	}
4207     }
4208 
4209 #ifdef MODIFIED_BY
4210     msg_puts("\n");
4211     msg_puts(_("Modified by "));
4212     msg_puts(MODIFIED_BY);
4213 #endif
4214 
4215 #ifdef HAVE_PATHDEF
4216     if (*compiled_user != NUL || *compiled_sys != NUL)
4217     {
4218 	msg_puts(_("\nCompiled "));
4219 	if (*compiled_user != NUL)
4220 	{
4221 	    msg_puts(_("by "));
4222 	    msg_puts((char *)compiled_user);
4223 	}
4224 	if (*compiled_sys != NUL)
4225 	{
4226 	    msg_puts("@");
4227 	    msg_puts((char *)compiled_sys);
4228 	}
4229     }
4230 #endif
4231 
4232 #ifdef FEAT_HUGE
4233     msg_puts(_("\nHuge version "));
4234 #else
4235 # ifdef FEAT_BIG
4236     msg_puts(_("\nBig version "));
4237 # else
4238 #  ifdef FEAT_NORMAL
4239     msg_puts(_("\nNormal version "));
4240 #  else
4241 #   ifdef FEAT_SMALL
4242     msg_puts(_("\nSmall version "));
4243 #   else
4244     msg_puts(_("\nTiny version "));
4245 #   endif
4246 #  endif
4247 # endif
4248 #endif
4249 #ifndef FEAT_GUI
4250     msg_puts(_("without GUI."));
4251 #else
4252 # ifdef FEAT_GUI_GTK
4253 #  ifdef USE_GTK3
4254     msg_puts(_("with GTK3 GUI."));
4255 #  else
4256 #   ifdef FEAT_GUI_GNOME
4257      msg_puts(_("with GTK2-GNOME GUI."));
4258 #   else
4259      msg_puts(_("with GTK2 GUI."));
4260 #   endif
4261 # endif
4262 # else
4263 #  ifdef FEAT_GUI_MOTIF
4264     msg_puts(_("with X11-Motif GUI."));
4265 #  else
4266 #   ifdef FEAT_GUI_ATHENA
4267 #    ifdef FEAT_GUI_NEXTAW
4268     msg_puts(_("with X11-neXtaw GUI."));
4269 #    else
4270     msg_puts(_("with X11-Athena GUI."));
4271 #    endif
4272 #   else
4273 #    ifdef FEAT_GUI_HAIKU
4274     msg_puts(_("with Haiku GUI."));
4275 #    else
4276 #     ifdef FEAT_GUI_PHOTON
4277     msg_puts(_("with Photon GUI."));
4278 #     else
4279 #      if defined(MSWIN)
4280     msg_puts(_("with GUI."));
4281 #      endif
4282 #     endif
4283 #    endif
4284 #   endif
4285 #  endif
4286 # endif
4287 #endif
4288     version_msg(_("  Features included (+) or not (-):\n"));
4289 
4290     list_features();
4291     if (msg_col > 0)
4292 	msg_putchar('\n');
4293 
4294 #ifdef SYS_VIMRC_FILE
4295     version_msg(_("   system vimrc file: \""));
4296     version_msg(SYS_VIMRC_FILE);
4297     version_msg("\"\n");
4298 #endif
4299 #ifdef USR_VIMRC_FILE
4300     version_msg(_("     user vimrc file: \""));
4301     version_msg(USR_VIMRC_FILE);
4302     version_msg("\"\n");
4303 #endif
4304 #ifdef USR_VIMRC_FILE2
4305     version_msg(_(" 2nd user vimrc file: \""));
4306     version_msg(USR_VIMRC_FILE2);
4307     version_msg("\"\n");
4308 #endif
4309 #ifdef USR_VIMRC_FILE3
4310     version_msg(_(" 3rd user vimrc file: \""));
4311     version_msg(USR_VIMRC_FILE3);
4312     version_msg("\"\n");
4313 #endif
4314 #ifdef USR_EXRC_FILE
4315     version_msg(_("      user exrc file: \""));
4316     version_msg(USR_EXRC_FILE);
4317     version_msg("\"\n");
4318 #endif
4319 #ifdef USR_EXRC_FILE2
4320     version_msg(_("  2nd user exrc file: \""));
4321     version_msg(USR_EXRC_FILE2);
4322     version_msg("\"\n");
4323 #endif
4324 #ifdef FEAT_GUI
4325 # ifdef SYS_GVIMRC_FILE
4326     version_msg(_("  system gvimrc file: \""));
4327     version_msg(SYS_GVIMRC_FILE);
4328     version_msg("\"\n");
4329 # endif
4330     version_msg(_("    user gvimrc file: \""));
4331     version_msg(USR_GVIMRC_FILE);
4332     version_msg("\"\n");
4333 # ifdef USR_GVIMRC_FILE2
4334     version_msg(_("2nd user gvimrc file: \""));
4335     version_msg(USR_GVIMRC_FILE2);
4336     version_msg("\"\n");
4337 # endif
4338 # ifdef USR_GVIMRC_FILE3
4339     version_msg(_("3rd user gvimrc file: \""));
4340     version_msg(USR_GVIMRC_FILE3);
4341     version_msg("\"\n");
4342 # endif
4343 #endif
4344     version_msg(_("       defaults file: \""));
4345     version_msg(VIM_DEFAULTS_FILE);
4346     version_msg("\"\n");
4347 #ifdef FEAT_GUI
4348 # ifdef SYS_MENU_FILE
4349     version_msg(_("    system menu file: \""));
4350     version_msg(SYS_MENU_FILE);
4351     version_msg("\"\n");
4352 # endif
4353 #endif
4354 #ifdef HAVE_PATHDEF
4355     if (*default_vim_dir != NUL)
4356     {
4357 	version_msg(_("  fall-back for $VIM: \""));
4358 	version_msg((char *)default_vim_dir);
4359 	version_msg("\"\n");
4360     }
4361     if (*default_vimruntime_dir != NUL)
4362     {
4363 	version_msg(_(" f-b for $VIMRUNTIME: \""));
4364 	version_msg((char *)default_vimruntime_dir);
4365 	version_msg("\"\n");
4366     }
4367     version_msg(_("Compilation: "));
4368     version_msg((char *)all_cflags);
4369     version_msg("\n");
4370 #ifdef VMS
4371     if (*compiler_version != NUL)
4372     {
4373 	version_msg(_("Compiler: "));
4374 	version_msg((char *)compiler_version);
4375 	version_msg("\n");
4376     }
4377 #endif
4378     version_msg(_("Linking: "));
4379     version_msg((char *)all_lflags);
4380 #endif
4381 #ifdef DEBUG
4382     version_msg("\n");
4383     version_msg(_("  DEBUG BUILD"));
4384 #endif
4385 }
4386 
4387 static void do_intro_line(int row, char_u *mesg, int add_version, int attr);
4388 static void intro_message(int colon);
4389 
4390 /*
4391  * Show the intro message when not editing a file.
4392  */
4393     void
4394 maybe_intro_message(void)
4395 {
4396     if (BUFEMPTY()
4397 	    && curbuf->b_fname == NULL
4398 	    && firstwin->w_next == NULL
4399 	    && vim_strchr(p_shm, SHM_INTRO) == NULL)
4400 	intro_message(FALSE);
4401 }
4402 
4403 /*
4404  * Give an introductory message about Vim.
4405  * Only used when starting Vim on an empty file, without a file name.
4406  * Or with the ":intro" command (for Sven :-).
4407  */
4408     static void
4409 intro_message(
4410     int		colon)		// TRUE for ":intro"
4411 {
4412     int		i;
4413     int		row;
4414     int		blanklines;
4415     int		sponsor;
4416     char	*p;
4417     static char	*(lines[]) =
4418     {
4419 	N_("VIM - Vi IMproved"),
4420 	"",
4421 	N_("version "),
4422 	N_("by Bram Moolenaar et al."),
4423 #ifdef MODIFIED_BY
4424 	" ",
4425 #endif
4426 	N_("Vim is open source and freely distributable"),
4427 	"",
4428 	N_("Help poor children in Uganda!"),
4429 	N_("type  :help iccf<Enter>       for information "),
4430 	"",
4431 	N_("type  :q<Enter>               to exit         "),
4432 	N_("type  :help<Enter>  or  <F1>  for on-line help"),
4433 	N_("type  :help version8<Enter>   for version info"),
4434 	NULL,
4435 	"",
4436 	N_("Running in Vi compatible mode"),
4437 	N_("type  :set nocp<Enter>        for Vim defaults"),
4438 	N_("type  :help cp-default<Enter> for info on this"),
4439     };
4440 #ifdef FEAT_GUI
4441     static char	*(gui_lines[]) =
4442     {
4443 	NULL,
4444 	NULL,
4445 	NULL,
4446 	NULL,
4447 #ifdef MODIFIED_BY
4448 	NULL,
4449 #endif
4450 	NULL,
4451 	NULL,
4452 	NULL,
4453 	N_("menu  Help->Orphans           for information    "),
4454 	NULL,
4455 	N_("Running modeless, typed text is inserted"),
4456 	N_("menu  Edit->Global Settings->Toggle Insert Mode  "),
4457 	N_("                              for two modes      "),
4458 	NULL,
4459 	NULL,
4460 	NULL,
4461 	N_("menu  Edit->Global Settings->Toggle Vi Compatible"),
4462 	N_("                              for Vim defaults   "),
4463     };
4464 #endif
4465 
4466     // blanklines = screen height - # message lines
4467     blanklines = (int)Rows - ((sizeof(lines) / sizeof(char *)) - 1);
4468     if (!p_cp)
4469 	blanklines += 4;  // add 4 for not showing "Vi compatible" message
4470 
4471     // Don't overwrite a statusline.  Depends on 'cmdheight'.
4472     if (p_ls > 1)
4473 	blanklines -= Rows - topframe->fr_height;
4474     if (blanklines < 0)
4475 	blanklines = 0;
4476 
4477     // Show the sponsor and register message one out of four times, the Uganda
4478     // message two out of four times.
4479     sponsor = (int)time(NULL);
4480     sponsor = ((sponsor & 2) == 0) - ((sponsor & 4) == 0);
4481 
4482     // start displaying the message lines after half of the blank lines
4483     row = blanklines / 2;
4484     if ((row >= 2 && Columns >= 50) || colon)
4485     {
4486 	for (i = 0; i < (int)(sizeof(lines) / sizeof(char *)); ++i)
4487 	{
4488 	    p = lines[i];
4489 #ifdef FEAT_GUI
4490 	    if (p_im && gui.in_use && gui_lines[i] != NULL)
4491 		p = gui_lines[i];
4492 #endif
4493 	    if (p == NULL)
4494 	    {
4495 		if (!p_cp)
4496 		    break;
4497 		continue;
4498 	    }
4499 	    if (sponsor != 0)
4500 	    {
4501 		if (strstr(p, "children") != NULL)
4502 		    p = sponsor < 0
4503 			? N_("Sponsor Vim development!")
4504 			: N_("Become a registered Vim user!");
4505 		else if (strstr(p, "iccf") != NULL)
4506 		    p = sponsor < 0
4507 			? N_("type  :help sponsor<Enter>    for information ")
4508 			: N_("type  :help register<Enter>   for information ");
4509 		else if (strstr(p, "Orphans") != NULL)
4510 		    p = N_("menu  Help->Sponsor/Register  for information    ");
4511 	    }
4512 	    if (*p != NUL)
4513 		do_intro_line(row, (char_u *)_(p), i == 2, 0);
4514 	    ++row;
4515 	}
4516     }
4517 
4518     // Make the wait-return message appear just below the text.
4519     if (colon)
4520 	msg_row = row;
4521 }
4522 
4523     static void
4524 do_intro_line(
4525     int		row,
4526     char_u	*mesg,
4527     int		add_version,
4528     int		attr)
4529 {
4530     char_u	vers[20];
4531     int		col;
4532     char_u	*p;
4533     int		l;
4534     int		clen;
4535 #ifdef MODIFIED_BY
4536 # define MODBY_LEN 150
4537     char_u	modby[MODBY_LEN];
4538 
4539     if (*mesg == ' ')
4540     {
4541 	vim_strncpy(modby, (char_u *)_("Modified by "), MODBY_LEN - 1);
4542 	l = (int)STRLEN(modby);
4543 	vim_strncpy(modby + l, (char_u *)MODIFIED_BY, MODBY_LEN - l - 1);
4544 	mesg = modby;
4545     }
4546 #endif
4547 
4548     // Center the message horizontally.
4549     col = vim_strsize(mesg);
4550     if (add_version)
4551     {
4552 	STRCPY(vers, mediumVersion);
4553 	if (highest_patch())
4554 	{
4555 	    // Check for 9.9x or 9.9xx, alpha/beta version
4556 	    if (isalpha((int)vers[3]))
4557 	    {
4558 		int len = (isalpha((int)vers[4])) ? 5 : 4;
4559 		sprintf((char *)vers + len, ".%d%s", highest_patch(),
4560 							 mediumVersion + len);
4561 	    }
4562 	    else
4563 		sprintf((char *)vers + 3, ".%d", highest_patch());
4564 	}
4565 	col += (int)STRLEN(vers);
4566     }
4567     col = (Columns - col) / 2;
4568     if (col < 0)
4569 	col = 0;
4570 
4571     // Split up in parts to highlight <> items differently.
4572     for (p = mesg; *p != NUL; p += l)
4573     {
4574 	clen = 0;
4575 	for (l = 0; p[l] != NUL
4576 			 && (l == 0 || (p[l] != '<' && p[l - 1] != '>')); ++l)
4577 	{
4578 	    if (has_mbyte)
4579 	    {
4580 		clen += ptr2cells(p + l);
4581 		l += (*mb_ptr2len)(p + l) - 1;
4582 	    }
4583 	    else
4584 		clen += byte2cells(p[l]);
4585 	}
4586 	screen_puts_len(p, l, row, col, *p == '<' ? HL_ATTR(HLF_8) : attr);
4587 	col += clen;
4588     }
4589 
4590     // Add the version number to the version line.
4591     if (add_version)
4592 	screen_puts(vers, row, col, 0);
4593 }
4594 
4595 /*
4596  * ":intro": clear screen, display intro screen and wait for return.
4597  */
4598     void
4599 ex_intro(exarg_T *eap UNUSED)
4600 {
4601     screenclear();
4602     intro_message(TRUE);
4603     wait_return(TRUE);
4604 }
4605