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