# 
#  Bash completion rules for 'gmic'. 
# 
# This file has been generated automatically. 
# Do not edit! 
# 
# This file should be copied/renamed in '/usr/share/bash-completion/completions/gmic'. 
# 
 
_gmic() 
{ 
	local cur prev opts coms 
	_init_completion || return 
	COMPREPLY=() 
	cur="${COMP_WORDS[COMP_CWORD]}" 
	prev="${COMP_WORDS[COMP_CWORD-1]}" 
	coms=" debug h help version camera clut m command cursor d display d0 display0 d3d display3d da display_array dfft display_fft dg display_graph dh display_histogram display_parametric dp display_parallel dp0 display_parallel0 display_polar dq display_quiver drgba display_rgba dt display_tensors dw display_warp document_gmic e echo echo_file echo_stdout function1d i input input_cube ig input_glob input_gpl o output output_cube output_ggr on outputn op outputp ow outputw ox outputx pass plot p print rainbow_lut screen select serialize shape_circle shape_cupid shape_diamond shape_fern shape_gear shape_heart shape_polygon shape_snowflake shape_star sh shared sp sample srand string testimage2d uncommand uniform_distribution unserialize up update v verbose wait warn w window k keep mv move nm name rm remove remove_duplicates remove_empty rv reverse sort_list sort_str abs acos acosh + add & and argmax argmin asin asinh atan atan2 atanh << bsl >> bsr cos cosh / div div_complex == eq exp >= ge > gt <= le < lt log log10 log2 max m/ mdiv min % mod m* mmul * mul mul_channels mul_complex != neq | or ^ pow rol ror sign sin sinc sinh sqr sqrt - sub tan tanh xor apply_curve apply_gamma balance_gamma cast complex2polar compress_clut compress_rle cumulate c cut decompress_clut_rbf decompress_clut decompress_rle discard eigen2tensor endian equalize f fill index ir inrange map map_clut mix_channels negate noise noise_perlin noise_poissondisk normp norm n normalize normalize_sum not orientation oneminus otsu polar2complex quantize quantize_area rand replace replace_inf replace_nan replace_seq replace_str round roundify = set set_vector_covariance threshold unrepeat vector2tensor adjust_colors ac apply_channels autoindex bayer2rgb cmy2rgb cmyk2rgb colorblind colormap compose_channels direction2rgb ditheredbw fc fill_color gradient2rgb hcy2rgb : hsi2rgb hsi82rgb hsl2rgb hsl82rgb hsv2rgb hsv82rgb int2rgb lab2lch lab2rgb lab2srgb lab82srgb lab2xyz lab82rgb lch2lab lch2rgb lch82rgb luminance lightness mix_rgb pseudogray replace_color retinex rgb2bayer rgb2cmy rgb2cmyk rgb2hcy rgb2hsi rgb2hsi8 rgb2hsl rgb2hsl8 rgb2hsv rgb2hsv8 rgb2int rgb2lab rgb2lab8 rgb2lch rgb2lch8 rgb2luv rgb2ryb rgb2srgb rgb2xyz rgb2xyz8 rgb2yiq rgb2yiq8 rgb2ycbcr rgb2yuv rgb2yuv8 remove_opacity ryb2rgb select_color sepia solarize split_colors split_opacity srgb2lab srgb2lab8 srgb2rgb to_a to_color to_colormode to_gray to_graya to_pseudogray to_rgb to_rgba transfer_histogram transfer_rgb xyz2lab xyz2rgb xyz82rgb ycbcr2rgb yiq2rgb yiq82rgb yuv2rgb yuv82rgb a append append_tiles apply_scales autocrop autocrop_components autocrop_seq channels columns z crop diagonal elevate expand_x expand_xy expand_xyz expand_y expand_z extract_region montage mirror permute r resize resize_mn resize_pow2 rr2d resize_ratio2d r2dx resize2dx r2dy resize2dy r3dx resize3dx r3dy resize3dy r3dz resize3dz rotate rotate_tileable rows scale2x scale3x scale_dcci2x seamcarve shift shrink_x shrink_xy shrink_xyz shrink_y shrink_z slices sort s split split_tiles undistort y unroll upscale_smart warp warp_patch bandpass bilateral b blur blur_angular blur_bloom blur_linear blur_radial blur_selective blur_x blur_xy blur_xyz blur_y blur_z boxfilter bump2normal compose_freq convolve convolve_fft correlate cross_correlation curvature dct deblur deblur_goldmeinel deblur_richardsonlucy deconvolve_fft deinterlace denoise denoise_haar denoise_patchpca deriche dilate dilate_circ dilate_oct dilate_threshold divergence dog diffusiontensors edges erode erode_circ erode_oct erode_threshold fft g gradient gradient_norm gradient_orientation guided haar heat_flow hessian idct iee ifft ihaar ilaplacian inn inpaint inpaint_diffusion inpaint_flow inpaint_holes inpaint_morpho inpaint_matchpatch kuwahara laplacian lic map_tones map_tones_fast meancurvature_flow median nlmeans nlmeans_core normalize_local normalized_cross_correlation peronamalik_flow phase_correlation pde_flow periodize_poisson red_eye remove_hotpixels remove_pixels rolling_guidance sharpen smooth split_freq solve_poisson split_details structuretensors solidify syntexturize syntexturize_matchpatch tv_flow unsharp unsharp_octave vanvliet voronoi watermark_fourier watershed area area_fg at_line at_quadrangle barycenter delaunay detect_skin displacement distance fftpolar histogram histogram_nd histogram_cumul histogram_pointwise hough ifftpolar isophotes label label_fg max_patch min_patch minimal_path mse patches matchpatch plot2value pointcloud psnr segment_watershed shape2bump skeleton slic ssd_patch thinning tones topographic_map tsp variance_patch arrow axes ball chessboard cie1931 circle close_binary ellipse flood gaussian graph grid j image line linethick mandelbrot marble maze maze_mask j3d object3d pack_sprites piechart plasma point polka_dots polygon quiver rectangle rorschach sierpinski spiralbw spline tetraedron_shade t text to text_outline triangle_shade truchet turbulence yinyang dijkstra eigen invert solve svd transpose trisolve +3d add3d animate3d apply_camera3d apply_matrix3d array3d arrow3d axes3d box3d c3d center3d circle3d circles3d col3d color3d colorcube3d cone3d cubes3d cup3d cylinder3d delaunay3d distribution3d /3d div3d db3d double3d elevation3d empty3d extrude3d f3d focale3d gaussians3d gmic3d gyroid3d histogram3d image6cube3d imageblocks3d imagecube3d imageplane3d imagepyramid3d imagerubik3d imagesphere3d isoline3d isosurface3d label3d label_points3d lathe3d l3d light3d line3d lissajous3d m3d mode3d md3d moded3d *3d mul3d n3d normalize3d o3d opacity3d parametric3d pca_patch3d plane3d point3d pointcloud3d pose3d p3d primitives3d projections3d pyramid3d quadrangle3d random3d rv3d reverse3d r3d rotate3d rotation3d sierpinski3d size3d skeleton3d snapshot3d sl3d specl3d ss3d specs3d sphere3d spherical3d spline3d s3d split3d sprite3d sprites3d star3d streamline3d -3d sub3d superformula3d tensors3d text_pointcloud3d text3d t3d texturize3d torus3d triangle3d volume3d weird3d ap apply_parallel apc apply_parallel_channels apo apply_parallel_overlap at apply_tiles apply_timeout check check3d continue break do done elif else fi endif endl endlocal error eval x exec for if l local mutex noarg onfail parallel progress q quit repeat return rprogress run skip u status while array array_fade array_mirror array_random frame frame_blur frame_cube frame_fuzzy frame_painting frame_pattern frame_round frame_seamless frame_x frame_xy frame_xyz frame_y img2ascii imagegrid imagegrid_hexagonal imagegrid_triangular linearize_tiles map_sprites pack puzzle quadratize_tiles rotate_tiles shift_tiles taquin tunnel boxfitting brushify cartoon color_ellipses cubism draw_whirl drawing drop_shadow ellipsionism fire_edges fractalize glow halftone hardsketchbw hearts houghsketchbw lightrays light_relief linify mosaic old_photo pencilbw pixelsort polaroid polygonize poster_edges poster_hope rodilius stained_glass stars sketchbw sponge stencil stencilbw tetris warhol weave whirls deform euclidean2polar equirectangular2nadirzenith fisheye flower kaleidoscope map_sphere nadirzenith2equirectangular polar2euclidean raindrops ripple rotoidoscope spherize symmetrize transform_polar twirl warp_perspective water wave wind zoom cracks light_patch noise_hurl pixelize scanlines shade_stripes shadow_patch spread stripes_y texturize_canvas texturize_paper vignette watermark_visible blend blend_edges blend_fade blend_median blend_seamless fade_diamond fade_linear fade_radial fade_x fade_y fade_z sub_alpha animate apply_camera apply_files apply_video average_files average_video fade_files fade_video files2video median_files median_video morph morph_files morph_video register_nonrigid register_rigid transition transition3d video2files alert arg arg2var autocrop_coords base642img base642uchar basename bin bin2dec dec dec2str dec2bin dec2hex dec2oct fact fibonacci file_mv file_rand file_rm filename files fitratio_wh fitscreen fontchart fps gcd hex hex2dec hex2img hex2str img2hex img2str img2text img82hex hex2img8 is_3d is_ext is_image_arg is_pattern is_percent is_videofilename is_windows math_lib mad max_w max_h max_d max_s max_wh max_whd max_whds med median_color min_w min_h min_d min_s min_wh min_whd min_whds normalize_filename oct oct2dec padint path_cache path_gimp path_tmp reset RGB RGBA std_noise str str2hex strcontains strlen strreplace strlowercase strvar strver tic toc to_clutname uchar2base64 img2base64 average_colors covariance_colors demo x_2048 x_blobs x_bouncing x_color_curves x_colorize x_connect4 x_fire x_fireworks x_fisheye x_fourier x_grab_color x_hanoi x_histogram x_hough x_jawbreaker x_landscape x_life x_light x_mandelbrot x_mask_color x_metaballs3d x_minesweeper x_minimal_path x_pacman x_paint x_plasma x_quantize_rgb x_reflection3d x_rubber3d x_segment x_select_color x_select_function1d x_select_palette x_shadebobs x_spline x_starfield3d x_tetris x_tictactoe x_waves x_whirl "
	opts=$(echo "$coms" | sed "s: \([^ ]\+\): \1 -\1 \+\1 --\1:g")

	case "${prev}" in
		"help" | "-help" | "--help" | "+help")
		    COMPREPLY=( $(compgen -W "$coms" -- "$cur") ); return 0;;
		"camera" | "-camera" | "--camera" | "+camera")
		    COMPREPLY=( $(compgen -W "_camera_index>=0,_nb_frames>0,_skip_frames>=0,_capture_width>=0,_capture_height>=0 >") ); return 0;;
		"clut" | "-clut" | "--clut" | "+clut")
		    COMPREPLY=( $(compgen -W ""clut_name",_resolution>0 >") ); return 0;;
		"command" | "-command" | "--command" | "+command")
		    COMPREPLY=( $(compgen -W "_add_debug_info={_0_|_1_},{_filename_|_http[s]://URL_|_"string"_} >") ); return 0;;
		"cursor" | "-cursor" | "--cursor" | "+cursor")
		    COMPREPLY=( $(compgen -W "_mode_=_{_0=hide_|_1=show_} >") ); return 0;;
		"display" | "-display" | "--display" | "+display")
		    COMPREPLY=( $(compgen -W "_X[%]>=0,_Y[%]>=0,_Z[%]>=0,_exit_on_anykey={_0_|_1_} >") ); return 0;;
		"display3d" | "-display3d" | "--display3d" | "+display3d")
		    COMPREPLY=( $(compgen -W "_[background_image],_exit_on_anykey={_0_|_1_} _exit_on_anykey={_0_|_1_}") ); return 0;;
		"display_array" | "-display_array" | "--display_array" | "+display_array")
		    COMPREPLY=( $(compgen -W "_width>0,_height>0 >") ); return 0;;
		"display_graph" | "-display_graph" | "--display_graph" | "+display_graph")
		    COMPREPLY=( $(compgen -W "_width>=0,_height>=0,_plot_type,_vertex_type,_xmin,_xmax,_ymin,_ymax,_xlabel,_ylabel >") ); return 0;;
		"display_histogram" | "-display_histogram" | "--display_histogram" | "+display_histogram")
		    COMPREPLY=( $(compgen -W "_width>=0,_height>=0,_clusters>0,_min_value[%],_max_value[%],_show_axes={_0_|_1_},_expression. >") ); return 0;;
		"display_parametric" | "-display_parametric" | "--display_parametric" | "+display_parametric")
		    COMPREPLY=( $(compgen -W "_width>0,_height>0,_outline_opacity,_vertex_radius>=0,_is_antialiased={_0_|_1_},_is_decorated={_0_|_1_},_xlabel,_ylabel >") ); return 0;;
		"display_polar" | "-display_polar" | "--display_polar" | "+display_polar")
		    COMPREPLY=( $(compgen -W "_width>32,_height>32,_outline_type,_fill_R,_fill_G,_fill_B,_theta_start,_theta_end,_xlabel,_ylabel >") ); return 0;;
		"display_quiver" | "-display_quiver" | "--display_quiver" | "+display_quiver")
		    COMPREPLY=( $(compgen -W "_size_factor>0,_arrow_size>=0,_color_mode={_0=monochrome_|_1=grayscale_|_2=color_} >") ); return 0;;
		"display_rgba" | "-display_rgba" | "--display_rgba" | "+display_rgba")
		    COMPREPLY=( $(compgen -W "_background_RGB_color >") ); return 0;;
		"display_tensors" | "-display_tensors" | "--display_tensors" | "+display_tensors")
		    COMPREPLY=( $(compgen -W "_size_factor>0,_ellipse_size>=0,_color_mode={_0=monochrome_|_1=grayscale_|_2=color_},_outline>=0 >") ); return 0;;
		"display_warp" | "-display_warp" | "--display_warp" | "+display_warp")
		    COMPREPLY=( $(compgen -W "_cell_size>0 >") ); return 0;;
		"document_gmic" | "-document_gmic" | "--document_gmic" | "+document_gmic")
		    COMPREPLY=( $(compgen -W "_format={_ascii_|_bash_|_html_|_images_|_latex_},_image_path,_write_wrapper={_0_|_1_} >") ); return 0;;
		"echo" | "-echo" | "--echo" | "+echo")
		    COMPREPLY=( $(compgen -W "message >") ); return 0;;
		"echo_file" | "-echo_file" | "--echo_file" | "+echo_file")
		    COMPREPLY=( $(compgen -W "filename,message >") ); return 0;;
		"echo_stdout" | "-echo_stdout" | "--echo_stdout" | "+echo_stdout")
		    COMPREPLY=( $(compgen -W "message >") ); return 0;;
		"function1d" | "-function1d" | "--function1d" | "+function1d")
		    COMPREPLY=( $(compgen -W "0<=smoothness<=1,x0>=0,y0,x1>=0,y1,...,xn>=0,yn >") ); return 0;;
		"pass" | "-pass" | "--pass" | "+pass")
		    COMPREPLY=( $(compgen -W "_shared_state={_0=non-shared_(copy)_|_1=shared_|_2=adaptive_} >") ); return 0;;
		"plot" | "-plot" | "--plot" | "+plot")
		    COMPREPLY=( $(compgen -W "_plot_type,_vertex_type,_xmin,_xmax,_ymin,_ymax,_exit_on_anykey={_0_|_1_} \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax,_exit_on_anykey={_0_|_1_}") ); return 0;;
		"screen" | "-screen" | "--screen" | "+screen")
		    COMPREPLY=( $(compgen -W "_x0[%],_y0[%],_x1[%],_y1[%] >") ); return 0;;
		"select" | "-select" | "--select" | "+select")
		    COMPREPLY=( $(compgen -W "feature_type,_X[%]>=0,_Y[%]>=0,_Z[%]>=0,_exit_on_anykey={_0_|_1_},_is_deep_selection={_0_|_1_} >") ); return 0;;
		"serialize" | "-serialize" | "--serialize" | "+serialize")
		    COMPREPLY=( $(compgen -W "_datatype,_is_compressed={_0_|_1_},_store_names={_0_|_1_} >") ); return 0;;
		"shape_circle" | "-shape_circle" | "--shape_circle" | "+shape_circle")
		    COMPREPLY=( $(compgen -W "_size>=0 >") ); return 0;;
		"shape_cupid" | "-shape_cupid" | "--shape_cupid" | "+shape_cupid")
		    COMPREPLY=( $(compgen -W "_size>=0 >") ); return 0;;
		"shape_diamond" | "-shape_diamond" | "--shape_diamond" | "+shape_diamond")
		    COMPREPLY=( $(compgen -W "_size>=0 >") ); return 0;;
		"shape_fern" | "-shape_fern" | "--shape_fern" | "+shape_fern")
		    COMPREPLY=( $(compgen -W "_size>=0,_density[%]>=0,_angle,0<=_opacity<=1,_type={_0=Asplenium_adiantum-nigrum_|_1=Thelypteridaceae_} >") ); return 0;;
		"shape_gear" | "-shape_gear" | "--shape_gear" | "+shape_gear")
		    COMPREPLY=( $(compgen -W "_size>=0,_nb_teeth>0,0<=_height_teeth<=100,0<=_offset_teeth<=100,0<=_inner_radius<=100 >") ); return 0;;
		"shape_heart" | "-shape_heart" | "--shape_heart" | "+shape_heart")
		    COMPREPLY=( $(compgen -W "_size>=0 >") ); return 0;;
		"shape_polygon" | "-shape_polygon" | "--shape_polygon" | "+shape_polygon")
		    COMPREPLY=( $(compgen -W "_size>=0,_nb_vertices>=3,_angle >") ); return 0;;
		"shape_snowflake" | "-shape_snowflake" | "--shape_snowflake" | "+shape_snowflake")
		    COMPREPLY=( $(compgen -W "size>=0,0<=_nb_recursions<=6 >") ); return 0;;
		"shape_star" | "-shape_star" | "--shape_star" | "+shape_star")
		    COMPREPLY=( $(compgen -W "_size>=0,_nb_branches>0,0<=_thickness<=1 >") ); return 0;;
		"shared" | "-shared" | "--shared" | "+shared")
		    COMPREPLY=( $(compgen -W "x0[%],x1[%],y[%],z[%],v[%] y0[%],y1[%],z[%],v[%] z0[%],z1[%],v[%] v0[%],v1[%] v0[%] (no_arg)") ); return 0;;
		"sample" | "-sample" | "--sample" | "+sample")
		    COMPREPLY=( $(compgen -W "_name1={_?_|_apples_|_barbara_|_boats_|_bottles_|_butterfly_|_cameraman_|_car_|_cat_|_cliff_|_colorful_|_david_|_dog_|_duck_|_eagle_|_elephant_|_earth_|_flower_|_fruits_|_gmicky_|_gmicky_mahvin_|_gmicky_wilber_|_greece_|_gummy_|_house_|_inside_|_landscape_|_leaf_|_lena_|_leno_|_lion_|_mandrill_|_monalisa_|_monkey_|_parrots_|_pencils_|_peppers_|_roddy_|_rooster_|_rose_|_square_|_teddy_|_tiger_|_tulips_|_wall_|_waterfall_|_zelda_},_name2,...,_nameN,_width={_>=0_|_0_(auto)_},_height_=_{_>=0_|_0_(auto)_} (no_arg)") ); return 0;;
		"srand" | "-srand" | "--srand" | "+srand")
		    COMPREPLY=( $(compgen -W "value (no_arg)") ); return 0;;
		"string" | "-string" | "--string" | "+string")
		    COMPREPLY=( $(compgen -W ""string" >") ); return 0;;
		"testimage2d" | "-testimage2d" | "--testimage2d" | "+testimage2d")
		    COMPREPLY=( $(compgen -W "_width>0,_height>0,_spectrum>0 >") ); return 0;;
		"uncommand" | "-uncommand" | "--uncommand" | "+uncommand")
		    COMPREPLY=( $(compgen -W "command_name[,_command_name2,...] *") ); return 0;;
		"uniform_distribution" | "-uniform_distribution" | "--uniform_distribution" | "+uniform_distribution")
		    COMPREPLY=( $(compgen -W "nb_levels>=1,spectrum>=1 >") ); return 0;;
		"verbose" | "-verbose" | "--verbose" | "+verbose")
		    COMPREPLY=( $(compgen -W "level {_+_|_-_}") ); return 0;;
		"wait" | "-wait" | "--wait" | "+wait")
		    COMPREPLY=( $(compgen -W "delay (no_arg)") ); return 0;;
		"warn" | "-warn" | "--warn" | "+warn")
		    COMPREPLY=( $(compgen -W "_force_visible={_0_|_1_},_message >") ); return 0;;
		"window" | "-window" | "--window" | "+window")
		    COMPREPLY=( $(compgen -W "_width[%]>=-1,_height[%]>=-1,_normalization,_fullscreen,_pos_x[%],_pos_y[%],_title >") ); return 0;;
		"move" | "-move" | "--move" | "+move")
		    COMPREPLY=( $(compgen -W "position[%] >") ); return 0;;
		"name" | "-name" | "--name" | "+name")
		    COMPREPLY=( $(compgen -W ""name1","name2",... >") ); return 0;;
		"sort_list" | "-sort_list" | "--sort_list" | "+sort_list")
		    COMPREPLY=( $(compgen -W "_ordering={_+_|_-_},_criterion >") ); return 0;;
		"add" | "-add" | "--add" | "+add")
		    COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"and" | "-and" | "--and" | "+and")
		    COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"atan2" | "-atan2" | "--atan2" | "+atan2")
		    COMPREPLY=( $(compgen -W "[x_argument] >") ); return 0;;
		"bsl" | "-bsl" | "--bsl" | "+bsl")
		    COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"bsr" | "-bsr" | "--bsr" | "+bsr")
		    COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"div" | "-div" | "--div" | "+div")
		    COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"div_complex" | "-div_complex" | "--div_complex" | "+div_complex")
		    COMPREPLY=( $(compgen -W "[divider_real,divider_imag],_epsilon>=0 >") ); return 0;;
		"eq" | "-eq" | "--eq" | "+eq")
		    COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"ge" | "-ge" | "--ge" | "+ge")
		    COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"gt" | "-gt" | "--gt" | "+gt")
		    COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"le" | "-le" | "--le" | "+le")
		    COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"lt" | "-lt" | "--lt" | "+lt")
		    COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"max" | "-max" | "--max" | "+max")
		    COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"mdiv" | "-mdiv" | "--mdiv" | "+mdiv")
		    COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"min" | "-min" | "--min" | "+min")
		    COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"mod" | "-mod" | "--mod" | "+mod")
		    COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"mmul" | "-mmul" | "--mmul" | "+mmul")
		    COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"mul" | "-mul" | "--mul" | "+mul")
		    COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"mul_channels" | "-mul_channels" | "--mul_channels" | "+mul_channels")
		    COMPREPLY=( $(compgen -W "value1,_value2,...,_valueN >") ); return 0;;
		"mul_complex" | "-mul_complex" | "--mul_complex" | "+mul_complex")
		    COMPREPLY=( $(compgen -W "[multiplier_real,multiplier_imag] >") ); return 0;;
		"neq" | "-neq" | "--neq" | "+neq")
		    COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"or" | "-or" | "--or" | "+or")
		    COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"pow" | "-pow" | "--pow" | "+pow")
		    COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"rol" | "-rol" | "--rol" | "+rol")
		    COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"ror" | "-ror" | "--ror" | "+ror")
		    COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"sub" | "-sub" | "--sub" | "+sub")
		    COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"xor" | "-xor" | "--xor" | "+xor")
		    COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"apply_curve" | "-apply_curve" | "--apply_curve" | "+apply_curve")
		    COMPREPLY=( $(compgen -W "0<=smoothness<=1,x0,y0,x1,y1,x2,y2,...,xN,yN >") ); return 0;;
		"apply_gamma" | "-apply_gamma" | "--apply_gamma" | "+apply_gamma")
		    COMPREPLY=( $(compgen -W "gamma>=0 >") ); return 0;;
		"balance_gamma" | "-balance_gamma" | "--balance_gamma" | "+balance_gamma")
		    COMPREPLY=( $(compgen -W "_ref_color1,... >") ); return 0;;
		"cast" | "-cast" | "--cast" | "+cast")
		    COMPREPLY=( $(compgen -W "datatype_source,datatype_target >") ); return 0;;
		"compress_clut" | "-compress_clut" | "--compress_clut" | "+compress_clut")
		    COMPREPLY=( $(compgen -W "_max_error>0,_avg_error>0,_max_nbpoints>=8 >") ); return 0;;
		"compress_rle" | "-compress_rle" | "--compress_rle" | "+compress_rle")
		    COMPREPLY=( $(compgen -W "_is_binary_data={_0_|_1_},_maximum_sequence_length>=0 >") ); return 0;;
		"cumulate" | "-cumulate" | "--cumulate" | "+cumulate")
		    COMPREPLY=( $(compgen -W "{_x_|_y_|_z_|_c_}...{_x_|_y_|_z_|_c_} (no_arg)") ); return 0;;
		"cut" | "-cut" | "--cut" | "+cut")
		    COMPREPLY=( $(compgen -W "{_value0[%]_|_[image0]_},{_value1[%]_|_[image1]_} [image] (no_arg)") ); return 0;;
		"decompress_clut_rbf" | "-decompress_clut_rbf" | "--decompress_clut_rbf" | "+decompress_clut_rbf")
		    COMPREPLY=( $(compgen -W "_width>0,_height>0,_depth>0 >") ); return 0;;
		"decompress_clut" | "-decompress_clut" | "--decompress_clut" | "+decompress_clut")
		    COMPREPLY=( $(compgen -W "_width>0,_height>0,_depth>0 >") ); return 0;;
		"discard" | "-discard" | "--discard" | "+discard")
		    COMPREPLY=( $(compgen -W "_value1,_value2,... {_x_|_y_|_z_|_c}...{_x_|_y_|_z_|_c},_value1,_value2,... (no_arg)") ); return 0;;
		"endian" | "-endian" | "--endian" | "+endian")
		    COMPREPLY=( $(compgen -W "_datatype >") ); return 0;;
		"equalize" | "-equalize" | "--equalize" | "+equalize")
		    COMPREPLY=( $(compgen -W "_nb_levels>0[%],_value_min[%],_value_max[%] >") ); return 0;;
		"fill" | "-fill" | "--fill" | "+fill")
		    COMPREPLY=( $(compgen -W "value1,_value2,... [image] \'formula\'") ); return 0;;
		"index" | "-index" | "--index" | "+index")
		    COMPREPLY=( $(compgen -W "{_[palette]_|_predefined_palette_},0<=_dithering<=1,_map_palette={_0_|_1_} >") ); return 0;;
		"inrange" | "-inrange" | "--inrange" | "+inrange")
		    COMPREPLY=( $(compgen -W "min[%],max[%] >") ); return 0;;
		"map" | "-map" | "--map" | "+map")
		    COMPREPLY=( $(compgen -W "[palette],_boundary_conditions predefined_palette,_boundary_conditions") ); return 0;;
		"map_clut" | "-map_clut" | "--map_clut" | "+map_clut")
		    COMPREPLY=( $(compgen -W "[clut]_|_"clut_name" >") ); return 0;;
		"mix_channels" | "-mix_channels" | "--mix_channels" | "+mix_channels")
		    COMPREPLY=( $(compgen -W "(a00,...,aMN) [matrix]") ); return 0;;
		"negate" | "-negate" | "--negate" | "+negate")
		    COMPREPLY=( $(compgen -W "base_value (no_arg)") ); return 0;;
		"noise" | "-noise" | "--noise" | "+noise")
		    COMPREPLY=( $(compgen -W "std_deviation>=0[%],_noise_type >") ); return 0;;
		"noise_perlin" | "-noise_perlin" | "--noise_perlin" | "+noise_perlin")
		    COMPREPLY=( $(compgen -W "_scale_x[%]>0,_scale_y[%]>0,_scale_z[%]>0,_seed_x,_seed_y,_seed_z >") ); return 0;;
		"noise_poissondisk" | "-noise_poissondisk" | "--noise_poissondisk" | "+noise_poissondisk")
		    COMPREPLY=( $(compgen -W "_radius[%]>0,_max_sample_attempts>0 >") ); return 0;;
		"normp" | "-normp" | "--normp" | "+normp")
		    COMPREPLY=( $(compgen -W "p>=0 >") ); return 0;;
		"normalize" | "-normalize" | "--normalize" | "+normalize")
		    COMPREPLY=( $(compgen -W "{_value0[%]_|_[image0]_},{_value1[%]_|_[image1]_} [image]") ); return 0;;
		"otsu" | "-otsu" | "--otsu" | "+otsu")
		    COMPREPLY=( $(compgen -W "_nb_levels>0 >") ); return 0;;
		"quantize" | "-quantize" | "--quantize" | "+quantize")
		    COMPREPLY=( $(compgen -W "nb_levels>=1,_keep_values={_0_|_1_},_is_uniform={_0_|_1_} >") ); return 0;;
		"quantize_area" | "-quantize_area" | "--quantize_area" | "+quantize_area")
		    COMPREPLY=( $(compgen -W "_min_area>0 >") ); return 0;;
		"rand" | "-rand" | "--rand" | "+rand")
		    COMPREPLY=( $(compgen -W "{_value0[%]_|_[image0]_},_{_value1[%]_|_[image1]_} [image]") ); return 0;;
		"replace" | "-replace" | "--replace" | "+replace")
		    COMPREPLY=( $(compgen -W "source,target >") ); return 0;;
		"replace_inf" | "-replace_inf" | "--replace_inf" | "+replace_inf")
		    COMPREPLY=( $(compgen -W "_expression >") ); return 0;;
		"replace_nan" | "-replace_nan" | "--replace_nan" | "+replace_nan")
		    COMPREPLY=( $(compgen -W "_expression >") ); return 0;;
		"replace_seq" | "-replace_seq" | "--replace_seq" | "+replace_seq")
		    COMPREPLY=( $(compgen -W ""search_seq","replace_seq" >") ); return 0;;
		"replace_str" | "-replace_str" | "--replace_str" | "+replace_str")
		    COMPREPLY=( $(compgen -W ""search_str","replace_str" >") ); return 0;;
		"round" | "-round" | "--round" | "+round")
		    COMPREPLY=( $(compgen -W "rounding_value>=0,_rounding_type (no_arg)") ); return 0;;
		"roundify" | "-roundify" | "--roundify" | "+roundify")
		    COMPREPLY=( $(compgen -W "gamma>=0 >") ); return 0;;
		"set" | "-set" | "--set" | "+set")
		    COMPREPLY=( $(compgen -W "value,_x[%],_y[%],_z[%],_c[%] >") ); return 0;;
		"set_vector_covariance" | "-set_vector_covariance" | "--set_vector_covariance" | "+set_vector_covariance")
		    COMPREPLY=( $(compgen -W "coef1,coef2,...,coefN >") ); return 0;;
		"threshold" | "-threshold" | "--threshold" | "+threshold")
		    COMPREPLY=( $(compgen -W "value[%],_is_soft={_0_|_1_} (no_arg)") ); return 0;;
		"adjust_colors" | "-adjust_colors" | "--adjust_colors" | "+adjust_colors")
		    COMPREPLY=( $(compgen -W "-100<=_brightness<=100,-100<=_contrast<=100,-100<=_gamma<=100,-100<=_hue_shift<=100,-100<=_saturation<=100,_value_min,_value_max >") ); return 0;;
		"apply_channels" | "-apply_channels" | "--apply_channels" | "+apply_channels")
		    COMPREPLY=( $(compgen -W ""command",color_channels,_value_action={_0=none_|_1=cut_|_2=normalize_} >") ); return 0;;
		"autoindex" | "-autoindex" | "--autoindex" | "+autoindex")
		    COMPREPLY=( $(compgen -W "nb_colors>0,0<=_dithering<=1,_method={_0=median-cut_|_1=k-means_} >") ); return 0;;
		"bayer2rgb" | "-bayer2rgb" | "--bayer2rgb" | "+bayer2rgb")
		    COMPREPLY=( $(compgen -W "_GM_smoothness,_RB_smoothness1,_RB_smoothness2 >") ); return 0;;
		"colorblind" | "-colorblind" | "--colorblind" | "+colorblind")
		    COMPREPLY=( $(compgen -W "type={_0=protanopia_|_1=protanomaly_|_2=deuteranopia_|_3=deuteranomaly_|_4=tritanopia_|_5=tritanomaly_|_6=achromatopsia_|_7=achromatomaly_} >") ); return 0;;
		"colormap" | "-colormap" | "--colormap" | "+colormap")
		    COMPREPLY=( $(compgen -W "nb_levels>=0,_method={_0=median-cut_|_1=k-means_},_sort_vectors={_0_|_1_} >") ); return 0;;
		"fill_color" | "-fill_color" | "--fill_color" | "+fill_color")
		    COMPREPLY=( $(compgen -W "col1,...,colN >") ); return 0;;
		"gradient2rgb" | "-gradient2rgb" | "--gradient2rgb" | "+gradient2rgb")
		    COMPREPLY=( $(compgen -W "_is_orientation={_0_|_1_} >") ); return 0;;
		"lab2rgb" | "-lab2rgb" | "--lab2rgb" | "+lab2rgb")
		    COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;;
		"lab2srgb" | "-lab2srgb" | "--lab2srgb" | "+lab2srgb")
		    COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;;
		"lab82srgb" | "-lab82srgb" | "--lab82srgb" | "+lab82srgb")
		    COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;;
		"lab2xyz" | "-lab2xyz" | "--lab2xyz" | "+lab2xyz")
		    COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;;
		"lab82rgb" | "-lab82rgb" | "--lab82rgb" | "+lab82rgb")
		    COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;;
		"lch2rgb" | "-lch2rgb" | "--lch2rgb" | "+lch2rgb")
		    COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;;
		"lch82rgb" | "-lch82rgb" | "--lch82rgb" | "+lch82rgb")
		    COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;;
		"mix_rgb" | "-mix_rgb" | "--mix_rgb" | "+mix_rgb")
		    COMPREPLY=( $(compgen -W "a11,a12,a13,a21,a22,a23,a31,a32,a33 >") ); return 0;;
		"pseudogray" | "-pseudogray" | "--pseudogray" | "+pseudogray")
		    COMPREPLY=( $(compgen -W "_max_increment>=0,_JND_threshold>=0,_bits_depth>0 >") ); return 0;;
		"replace_color" | "-replace_color" | "--replace_color" | "+replace_color")
		    COMPREPLY=( $(compgen -W "tolerance[%]>=0,smoothness[%]>=0,src1,src2,...,dest1,dest2,... >") ); return 0;;
		"retinex" | "-retinex" | "--retinex" | "+retinex")
		    COMPREPLY=( $(compgen -W "_value_offset>0,_colorspace={_hsi_|_hsv_|_lab_|_lrgb_|_rgb_|_ycbcr_},0<=_min_cut<=100,0<=_max_cut<=100,_sigma_low>0,_sigma_mid>0,_sigma_high>0 >") ); return 0;;
		"rgb2bayer" | "-rgb2bayer" | "--rgb2bayer" | "+rgb2bayer")
		    COMPREPLY=( $(compgen -W "_start_pattern=0,_color_grid=0 >") ); return 0;;
		"rgb2lab" | "-rgb2lab" | "--rgb2lab" | "+rgb2lab")
		    COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;;
		"rgb2lab8" | "-rgb2lab8" | "--rgb2lab8" | "+rgb2lab8")
		    COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;;
		"rgb2lch" | "-rgb2lch" | "--rgb2lch" | "+rgb2lch")
		    COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;;
		"rgb2lch8" | "-rgb2lch8" | "--rgb2lch8" | "+rgb2lch8")
		    COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;;
		"rgb2xyz" | "-rgb2xyz" | "--rgb2xyz" | "+rgb2xyz")
		    COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;;
		"rgb2xyz8" | "-rgb2xyz8" | "--rgb2xyz8" | "+rgb2xyz8")
		    COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;;
		"select_color" | "-select_color" | "--select_color" | "+select_color")
		    COMPREPLY=( $(compgen -W "tolerance[%]>=0,col1,...,colN >") ); return 0;;
		"split_colors" | "-split_colors" | "--split_colors" | "+split_colors")
		    COMPREPLY=( $(compgen -W "_tolerance>=0,_max_nb_outputs>0,_min_area>0 >") ); return 0;;
		"srgb2lab" | "-srgb2lab" | "--srgb2lab" | "+srgb2lab")
		    COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;;
		"srgb2lab8" | "-srgb2lab8" | "--srgb2lab8" | "+srgb2lab8")
		    COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;;
		"to_colormode" | "-to_colormode" | "--to_colormode" | "+to_colormode")
		    COMPREPLY=( $(compgen -W "mode={_0=adaptive_|_1=G_|_2=GA_|_3=RGB_|_4=RGBA_} >") ); return 0;;
		"to_pseudogray" | "-to_pseudogray" | "--to_pseudogray" | "+to_pseudogray")
		    COMPREPLY=( $(compgen -W "_max_step>=0,_is_perceptual_constraint={_0_|_1_},_bits_depth>0 >") ); return 0;;
		"transfer_histogram" | "-transfer_histogram" | "--transfer_histogram" | "+transfer_histogram")
		    COMPREPLY=( $(compgen -W "[reference_image],_nb_levels>0,_color_channels >") ); return 0;;
		"transfer_rgb" | "-transfer_rgb" | "--transfer_rgb" | "+transfer_rgb")
		    COMPREPLY=( $(compgen -W "[target],_gamma>=0,_regularization>=0,_luminosity_constraints>=0,_rgb_resolution>=0,_is_constraints={_0_|_1_} >") ); return 0;;
		"xyz2lab" | "-xyz2lab" | "--xyz2lab" | "+xyz2lab")
		    COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;;
		"xyz2rgb" | "-xyz2rgb" | "--xyz2rgb" | "+xyz2rgb")
		    COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;;
		"xyz82rgb" | "-xyz82rgb" | "--xyz82rgb" | "+xyz82rgb")
		    COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;;
		"append" | "-append" | "--append" | "+append")
		    COMPREPLY=( $(compgen -W "[image],axis,_centering axis,_centering") ); return 0;;
		"append_tiles" | "-append_tiles" | "--append_tiles" | "+append_tiles")
		    COMPREPLY=( $(compgen -W "_M>=0,_N>=0,0<=_centering_x<=1,0<=_centering_y<=1 >") ); return 0;;
		"apply_scales" | "-apply_scales" | "--apply_scales" | "+apply_scales")
		    COMPREPLY=( $(compgen -W ""command",number_of_scales>0,_min_scale[%]>=0,_max_scale[%]>=0,_scale_gamma>0,_interpolation >") ); return 0;;
		"autocrop" | "-autocrop" | "--autocrop" | "+autocrop")
		    COMPREPLY=( $(compgen -W "value1,value2,... (no_arg)") ); return 0;;
		"autocrop_components" | "-autocrop_components" | "--autocrop_components" | "+autocrop_components")
		    COMPREPLY=( $(compgen -W "_threshold[%],_min_area[%]>=0,_is_high_connectivity={_0_|_1_},_output_type={_0=crop_|_1=segmentation_|_2=coordinates_} >") ); return 0;;
		"autocrop_seq" | "-autocrop_seq" | "--autocrop_seq" | "+autocrop_seq")
		    COMPREPLY=( $(compgen -W "value1,value2,..._|_auto >") ); return 0;;
		"channels" | "-channels" | "--channels" | "+channels")
		    COMPREPLY=( $(compgen -W "{_[image0]_|_c0[%]_},_{_[image1]_|_c1[%]_} >") ); return 0;;
		"columns" | "-columns" | "--columns" | "+columns")
		    COMPREPLY=( $(compgen -W "{_[image0]_|_x0[%]_},_{_[image1]_|_x1[%]_} >") ); return 0;;
		"crop" | "-crop" | "--crop" | "+crop")
		    COMPREPLY=( $(compgen -W "x0[%],x1[%],_boundary_conditions x0[%],y0[%],x1[%],y1[%],_boundary_conditions x0[%],y0[%],z0[%],x1[%],y1[%],z1[%],_boundary_conditions x0[%],y0[%],z0[%],c0[%],x1[%],y1[%],z1[%],c1[%],_boundary_conditions (no_arg)") ); return 0;;
		"elevate" | "-elevate" | "--elevate" | "+elevate")
		    COMPREPLY=( $(compgen -W "_depth,_is_plain={_0_|_1_},_is_colored={_0_|_1_} >") ); return 0;;
		"expand_x" | "-expand_x" | "--expand_x" | "+expand_x")
		    COMPREPLY=( $(compgen -W "size_x>=0,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;;
		"expand_xy" | "-expand_xy" | "--expand_xy" | "+expand_xy")
		    COMPREPLY=( $(compgen -W "size>=0,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;;
		"expand_xyz" | "-expand_xyz" | "--expand_xyz" | "+expand_xyz")
		    COMPREPLY=( $(compgen -W "size>=0,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;;
		"expand_y" | "-expand_y" | "--expand_y" | "+expand_y")
		    COMPREPLY=( $(compgen -W "size_y>=0,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;;
		"expand_z" | "-expand_z" | "--expand_z" | "+expand_z")
		    COMPREPLY=( $(compgen -W "size_z>=0,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;;
		"extract_region" | "-extract_region" | "--extract_region" | "+extract_region")
		    COMPREPLY=( $(compgen -W "[label_image],_extract_xyz_coordinates={_0_|_1_},_label_1,...,_label_M >") ); return 0;;
		"montage" | "-montage" | "--montage" | "+montage")
		    COMPREPLY=( $(compgen -W ""_layout_code",_montage_mode={_0<=centering<=1_|_2<=scale+2<=3_},_output_mode={_0=single_layer_|_1=multiple_layers_},"_processing_command" >") ); return 0;;
		"mirror" | "-mirror" | "--mirror" | "+mirror")
		    COMPREPLY=( $(compgen -W "{_x_|_y_|_z_}...{_x_|_y_|_z_} >") ); return 0;;
		"permute" | "-permute" | "--permute" | "+permute")
		    COMPREPLY=( $(compgen -W "permutation_string >") ); return 0;;
		"resize" | "-resize" | "--resize" | "+resize")
		    COMPREPLY=( $(compgen -W "[image],_interpolation,_boundary_conditions,_ax,_ay,_az,_ac {[image_w]_|_width>0[%]},_{[image_h]_|_height>0[%]},_{[image_d]_|_depth>0[%]},_{[image_s]_|_spectrum>0[%]},_interpolation,_boundary_conditions,_ax,_ay,_az,_ac (no_arg)") ); return 0;;
		"resize_mn" | "-resize_mn" | "--resize_mn" | "+resize_mn")
		    COMPREPLY=( $(compgen -W "width[%]>=0,_height[%]>=0,_depth[%]>=0,_B_value,_C_value >") ); return 0;;
		"resize_pow2" | "-resize_pow2" | "--resize_pow2" | "+resize_pow2")
		    COMPREPLY=( $(compgen -W "_interpolation,_boundary_conditions,_ax,_ay,_az,_ac >") ); return 0;;
		"resize_ratio2d" | "-resize_ratio2d" | "--resize_ratio2d" | "+resize_ratio2d")
		    COMPREPLY=( $(compgen -W "width>0,height>0,_mode={_0=inside_|_1=outside_|_2=padded_},0=<_interpolation<=6 >") ); return 0;;
		"resize2dx" | "-resize2dx" | "--resize2dx" | "+resize2dx")
		    COMPREPLY=( $(compgen -W "width[%]>0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac >") ); return 0;;
		"resize2dy" | "-resize2dy" | "--resize2dy" | "+resize2dy")
		    COMPREPLY=( $(compgen -W "height[%]>=0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac >") ); return 0;;
		"resize3dx" | "-resize3dx" | "--resize3dx" | "+resize3dx")
		    COMPREPLY=( $(compgen -W "width[%]>0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac >") ); return 0;;
		"resize3dy" | "-resize3dy" | "--resize3dy" | "+resize3dy")
		    COMPREPLY=( $(compgen -W "height[%]>0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac >") ); return 0;;
		"resize3dz" | "-resize3dz" | "--resize3dz" | "+resize3dz")
		    COMPREPLY=( $(compgen -W "depth[%]>0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac >") ); return 0;;
		"rotate" | "-rotate" | "--rotate" | "+rotate")
		    COMPREPLY=( $(compgen -W "angle,_interpolation,_boundary_conditions,_center_x[%],_center_y[%] u,v,w,angle,interpolation,boundary_conditions,_center_x[%],_center_y[%],_center_z[%]") ); return 0;;
		"rotate_tileable" | "-rotate_tileable" | "--rotate_tileable" | "+rotate_tileable")
		    COMPREPLY=( $(compgen -W "angle,_max_size_factor>=0 >") ); return 0;;
		"rows" | "-rows" | "--rows" | "+rows")
		    COMPREPLY=( $(compgen -W "{_[image0]_|_y0[%]_},_{_[image1]_|_y1[%]_} >") ); return 0;;
		"scale_dcci2x" | "-scale_dcci2x" | "--scale_dcci2x" | "+scale_dcci2x")
		    COMPREPLY=( $(compgen -W "_edge_threshold>=0,_exponent>0,_extend_1px={_0=false_|_1=true_} >") ); return 0;;
		"seamcarve" | "-seamcarve" | "--seamcarve" | "+seamcarve")
		    COMPREPLY=( $(compgen -W "_width[%]>=0,_height[%]>=0,_is_priority_channel={_0_|_1_},_is_antialiasing={_0_|_1_},_maximum_seams[%]>=0 >") ); return 0;;
		"shift" | "-shift" | "--shift" | "+shift")
		    COMPREPLY=( $(compgen -W "vx[%],_vy[%],_vz[%],_vc[%],_boundary_conditions,_interpolation={_0=nearest_neighbor_|_1=linear_} >") ); return 0;;
		"shrink_x" | "-shrink_x" | "--shrink_x" | "+shrink_x")
		    COMPREPLY=( $(compgen -W "size_x>=0 >") ); return 0;;
		"shrink_xy" | "-shrink_xy" | "--shrink_xy" | "+shrink_xy")
		    COMPREPLY=( $(compgen -W "size>=0 >") ); return 0;;
		"shrink_xyz" | "-shrink_xyz" | "--shrink_xyz" | "+shrink_xyz")
		    COMPREPLY=( $(compgen -W "size>=0 >") ); return 0;;
		"shrink_y" | "-shrink_y" | "--shrink_y" | "+shrink_y")
		    COMPREPLY=( $(compgen -W "size_y>=0 >") ); return 0;;
		"shrink_z" | "-shrink_z" | "--shrink_z" | "+shrink_z")
		    COMPREPLY=( $(compgen -W "size_z>=0 >") ); return 0;;
		"slices" | "-slices" | "--slices" | "+slices")
		    COMPREPLY=( $(compgen -W "{_[image0]_|_z0[%]_},_{_[image1]_|_z1[%]_} >") ); return 0;;
		"sort" | "-sort" | "--sort" | "+sort")
		    COMPREPLY=( $(compgen -W "_ordering={_+_|_-_},_axis={_x_|_y_|_z_|_c_} >") ); return 0;;
		"split" | "-split" | "--split" | "+split")
		    COMPREPLY=( $(compgen -W "{_x_|_y_|_z_|_c_}...{_x_|_y_|_z_|_c_},_split_mode keep_splitting_values={_+_|_-_},_{_x_|_y_|_z_|_c_}...{_x_|_y_|_z_|_c_},value1,_value2,... (no_arg)") ); return 0;;
		"split_tiles" | "-split_tiles" | "--split_tiles" | "+split_tiles")
		    COMPREPLY=( $(compgen -W "M!=0,_N!=0,_is_homogeneous={_0_|_1_} >") ); return 0;;
		"undistort" | "-undistort" | "--undistort" | "+undistort")
		    COMPREPLY=( $(compgen -W "-1<=_amplitude<=1,_aspect_ratio,_zoom,_center_x[%],_center_y[%],_boundary_conditions >") ); return 0;;
		"unroll" | "-unroll" | "--unroll" | "+unroll")
		    COMPREPLY=( $(compgen -W "_axis={_x_|_y_|_z_|_c_} >") ); return 0;;
		"upscale_smart" | "-upscale_smart" | "--upscale_smart" | "+upscale_smart")
		    COMPREPLY=( $(compgen -W "width[%],_height[%],_depth,_smoothness>=0,_anisotropy=[0,1],sharpening>=0 >") ); return 0;;
		"warp" | "-warp" | "--warp" | "+warp")
		    COMPREPLY=( $(compgen -W "[warping_field],_mode,_interpolation,_boundary_conditions,_nb_frames>0 >") ); return 0;;
		"warp_patch" | "-warp_patch" | "--warp_patch" | "+warp_patch")
		    COMPREPLY=( $(compgen -W "[warping_field],patch_width>=1,_patch_height>=1,_patch_depth>=1,_std_factor>0,_boundary_conditions. >") ); return 0;;
		"bandpass" | "-bandpass" | "--bandpass" | "+bandpass")
		    COMPREPLY=( $(compgen -W "_min_freq[%],_max_freq[%] >") ); return 0;;
		"bilateral" | "-bilateral" | "--bilateral" | "+bilateral")
		    COMPREPLY=( $(compgen -W "[guide],std_deviation_s[%]>=0,std_deviation_r[%]>=0,_sampling_s>=0,_sampling_r>=0 std_deviation_s[%]>=0,std_deviation_r[%]>=0,_sampling_s>=0,_sampling_r>=0") ); return 0;;
		"blur" | "-blur" | "--blur" | "+blur")
		    COMPREPLY=( $(compgen -W "std_deviation>=0[%],_boundary_conditions,_kernel axes,std_deviation>=0[%],_boundary_conditions,_kernel") ); return 0;;
		"blur_angular" | "-blur_angular" | "--blur_angular" | "+blur_angular")
		    COMPREPLY=( $(compgen -W "amplitude[%],_center_x[%],_center_y[%] >") ); return 0;;
		"blur_bloom" | "-blur_bloom" | "--blur_bloom" | "+blur_bloom")
		    COMPREPLY=( $(compgen -W "_amplitude>=0,_ratio>=0,_nb_iter>=0,_blend_operator={_+_|_max_|_min_},_kernel={_0=quasi-gaussian_(faster)_|_1=gaussian_|_2=box_|_3=triangle_|_4=quadratic_},_normalize_scales={_0_|_1_},_axes >") ); return 0;;
		"blur_linear" | "-blur_linear" | "--blur_linear" | "+blur_linear")
		    COMPREPLY=( $(compgen -W "amplitude1[%],_amplitude2[%],_angle,_boundary_conditions={_0=dirichlet_|_1=neumann_} >") ); return 0;;
		"blur_radial" | "-blur_radial" | "--blur_radial" | "+blur_radial")
		    COMPREPLY=( $(compgen -W "amplitude[%],_center_x[%],_center_y[%] >") ); return 0;;
		"blur_selective" | "-blur_selective" | "--blur_selective" | "+blur_selective")
		    COMPREPLY=( $(compgen -W "sigma>=0,_edges>0,_nb_scales>0 >") ); return 0;;
		"blur_x" | "-blur_x" | "--blur_x" | "+blur_x")
		    COMPREPLY=( $(compgen -W "amplitude[%]>=0,_boundary_conditions={_0=dirichlet_|_1=neumann_} >") ); return 0;;
		"blur_xy" | "-blur_xy" | "--blur_xy" | "+blur_xy")
		    COMPREPLY=( $(compgen -W "amplitude_x[%],amplitude_y[%],_boundary_conditions={_0=dirichlet_|_1=neumann_} >") ); return 0;;
		"blur_xyz" | "-blur_xyz" | "--blur_xyz" | "+blur_xyz")
		    COMPREPLY=( $(compgen -W "amplitude_x[%],amplitude_y[%],amplitude_z,_boundary_conditions={_0=dirichlet_|_1=neumann_} >") ); return 0;;
		"blur_y" | "-blur_y" | "--blur_y" | "+blur_y")
		    COMPREPLY=( $(compgen -W "amplitude[%]>=0,_boundary_conditions={_0=dirichlet_|_1=neumann_} >") ); return 0;;
		"blur_z" | "-blur_z" | "--blur_z" | "+blur_z")
		    COMPREPLY=( $(compgen -W "amplitude[%]>=0,_boundary_conditions={_0=dirichlet_|_1=neumann_} >") ); return 0;;
		"boxfilter" | "-boxfilter" | "--boxfilter" | "+boxfilter")
		    COMPREPLY=( $(compgen -W "size>=0[%],_order,_boundary_conditions,_nb_iter>=0 axes,size>=0[%],_order,_boundary_conditions,_nb_iter>=0") ); return 0;;
		"convolve" | "-convolve" | "--convolve" | "+convolve")
		    COMPREPLY=( $(compgen -W "[mask],_boundary_conditions,_is_normalized={_0_|_1_} >") ); return 0;;
		"convolve_fft" | "-convolve_fft" | "--convolve_fft" | "+convolve_fft")
		    COMPREPLY=( $(compgen -W "[mask] >") ); return 0;;
		"correlate" | "-correlate" | "--correlate" | "+correlate")
		    COMPREPLY=( $(compgen -W "[mask],_boundary_conditions,_is_normalized={_0_|_1_} >") ); return 0;;
		"cross_correlation" | "-cross_correlation" | "--cross_correlation" | "+cross_correlation")
		    COMPREPLY=( $(compgen -W "[mask] >") ); return 0;;
		"dct" | "-dct" | "--dct" | "+dct")
		    COMPREPLY=( $(compgen -W "_{_x_|_y_|_z_}...{_x_|_y_|_z_} (no_arg)") ); return 0;;
		"deblur" | "-deblur" | "--deblur" | "+deblur")
		    COMPREPLY=( $(compgen -W "amplitude[%]>=0,_nb_iter>=0,_dt>=0,_regul>=0,_regul_type={_0=Tikhonov_|_1=meancurv._|_2=TV_} >") ); return 0;;
		"deblur_goldmeinel" | "-deblur_goldmeinel" | "--deblur_goldmeinel" | "+deblur_goldmeinel")
		    COMPREPLY=( $(compgen -W "sigma>=0,__nb_iter>=0,__acceleration>=0,__kernel_type={_0=quasi-gaussian_(faster)_|_1=gaussian_}. >") ); return 0;;
		"deblur_richardsonlucy" | "-deblur_richardsonlucy" | "--deblur_richardsonlucy" | "+deblur_richardsonlucy")
		    COMPREPLY=( $(compgen -W "sigma>=0,_nb_iter>=0,__kernel_type={_0=quasi-gaussian_(faster)_|_1=gaussian_}. >") ); return 0;;
		"deconvolve_fft" | "-deconvolve_fft" | "--deconvolve_fft" | "+deconvolve_fft")
		    COMPREPLY=( $(compgen -W "[kernel],_regularization>=0 >") ); return 0;;
		"deinterlace" | "-deinterlace" | "--deinterlace" | "+deinterlace")
		    COMPREPLY=( $(compgen -W "_method={_0_|_1_} >") ); return 0;;
		"denoise" | "-denoise" | "--denoise" | "+denoise")
		    COMPREPLY=( $(compgen -W "std_deviation_s>=0,_std_deviation_p>=0,_patch_size>0,_lookup_size>0,_smoothness,_fast_approx={_0_|_1_} >") ); return 0;;
		"denoise_haar" | "-denoise_haar" | "--denoise_haar" | "+denoise_haar")
		    COMPREPLY=( $(compgen -W "_threshold>=0,_nb_scales>=0,_cycle_spinning>0 >") ); return 0;;
		"denoise_patchpca" | "-denoise_patchpca" | "--denoise_patchpca" | "+denoise_patchpca")
		    COMPREPLY=( $(compgen -W "_strength>=0,_patch_size>0,_lookup_size>0,_spatial_sampling>0 >") ); return 0;;
		"deriche" | "-deriche" | "--deriche" | "+deriche")
		    COMPREPLY=( $(compgen -W "std_deviation>=0[%],order={_0_|_1_|_2_},axis={_x_|_y_|_z_|_c_},_boundary_conditions >") ); return 0;;
		"dilate" | "-dilate" | "--dilate" | "+dilate")
		    COMPREPLY=( $(compgen -W "size>=0 size_x>=0,size_y>=0,size_z>=0 [kernel],_boundary_conditions,_is_real={_0=binary-mode_|_1=real-mode_}") ); return 0;;
		"dilate_circ" | "-dilate_circ" | "--dilate_circ" | "+dilate_circ")
		    COMPREPLY=( $(compgen -W "_size>=0,_boundary_conditions,_is_normalized={_0_|_1_} >") ); return 0;;
		"dilate_oct" | "-dilate_oct" | "--dilate_oct" | "+dilate_oct")
		    COMPREPLY=( $(compgen -W "_size>=0,_boundary_conditions,_is_normalized={_0_|_1_} >") ); return 0;;
		"dilate_threshold" | "-dilate_threshold" | "--dilate_threshold" | "+dilate_threshold")
		    COMPREPLY=( $(compgen -W "size_x>=1,size_y>=1,size_z>=1,_threshold>=0,_boundary_conditions >") ); return 0;;
		"dog" | "-dog" | "--dog" | "+dog")
		    COMPREPLY=( $(compgen -W "_sigma1>=0[%],_sigma2>=0[%] >") ); return 0;;
		"diffusiontensors" | "-diffusiontensors" | "--diffusiontensors" | "+diffusiontensors")
		    COMPREPLY=( $(compgen -W "_sharpness>=0,0<=_anisotropy<=1,_alpha[%],_sigma[%],is_sqrt={_0_|_1_} >") ); return 0;;
		"edges" | "-edges" | "--edges" | "+edges")
		    COMPREPLY=( $(compgen -W "_threshold[%]>=0 >") ); return 0;;
		"erode" | "-erode" | "--erode" | "+erode")
		    COMPREPLY=( $(compgen -W "size>=0 size_x>=0,size_y>=0,_size_z>=0 [kernel],_boundary_conditions,_is_real={_0=binary-mode_|_1=real-mode_}") ); return 0;;
		"erode_circ" | "-erode_circ" | "--erode_circ" | "+erode_circ")
		    COMPREPLY=( $(compgen -W "_size>=0,_boundary_conditions,_is_normalized={_0_|_1_} >") ); return 0;;
		"erode_oct" | "-erode_oct" | "--erode_oct" | "+erode_oct")
		    COMPREPLY=( $(compgen -W "_size>=0,_boundary_conditions,_is_normalized={_0_|_1_} >") ); return 0;;
		"erode_threshold" | "-erode_threshold" | "--erode_threshold" | "+erode_threshold")
		    COMPREPLY=( $(compgen -W "size_x>=1,size_y>=1,size_z>=1,_threshold>=0,_boundary_conditions >") ); return 0;;
		"fft" | "-fft" | "--fft" | "+fft")
		    COMPREPLY=( $(compgen -W "_{_x_|_y_|_z_}...{_x_|_y_|_z_} >") ); return 0;;
		"gradient" | "-gradient" | "--gradient" | "+gradient")
		    COMPREPLY=( $(compgen -W "{_x_|_y_|_z_}...{_x_|_y_|_z_},_scheme (no_arg)") ); return 0;;
		"gradient_orientation" | "-gradient_orientation" | "--gradient_orientation" | "+gradient_orientation")
		    COMPREPLY=( $(compgen -W "_dimension={1,2,3} >") ); return 0;;
		"guided" | "-guided" | "--guided" | "+guided")
		    COMPREPLY=( $(compgen -W "[guide],radius[%]>=0,regularization[%]>=0 radius[%]>=0,regularization[%]>=0") ); return 0;;
		"haar" | "-haar" | "--haar" | "+haar")
		    COMPREPLY=( $(compgen -W "scale>0 >") ); return 0;;
		"heat_flow" | "-heat_flow" | "--heat_flow" | "+heat_flow")
		    COMPREPLY=( $(compgen -W "_nb_iter>=0,_dt,_keep_sequence={_0_|_1_} >") ); return 0;;
		"hessian" | "-hessian" | "--hessian" | "+hessian")
		    COMPREPLY=( $(compgen -W "{_xx_|_xy_|_xz_|_yy_|_yz_|_zz_}...{_xx_|_xy_|_xz_|_yy_|_yz_|_zz_} (no_arg)") ); return 0;;
		"idct" | "-idct" | "--idct" | "+idct")
		    COMPREPLY=( $(compgen -W "_{_x_|_y_|_z_}...{_x_|_y_|_z_} (no_arg)") ); return 0;;
		"ifft" | "-ifft" | "--ifft" | "+ifft")
		    COMPREPLY=( $(compgen -W "_{_x_|_y_|_z_}...{_x_|_y_|_z_} >") ); return 0;;
		"ihaar" | "-ihaar" | "--ihaar" | "+ihaar")
		    COMPREPLY=( $(compgen -W "scale>0 >") ); return 0;;
		"ilaplacian" | "-ilaplacian" | "--ilaplacian" | "+ilaplacian")
		    COMPREPLY=( $(compgen -W "{_nb_iterations>0_|_0_},_time_step>0,_[initial_estimate] >") ); return 0;;
		"inpaint" | "-inpaint" | "--inpaint" | "+inpaint")
		    COMPREPLY=( $(compgen -W "[mask] [mask],0,_fast_method [mask],_patch_size>=1,_lookup_size>=1,_lookup_factor>=0,_lookup_increment!=0,_blend_size>=0,0<=_blend_threshold<=1,_blend_decay>=0,_blend_scales>=1,_is_blend_outer={_0_|_1_}") ); return 0;;
		"inpaint_diffusion" | "-inpaint_diffusion" | "--inpaint_diffusion" | "+inpaint_diffusion")
		    COMPREPLY=( $(compgen -W "[mask],_nb_scales[%]>=0,_diffusion_type={_0=isotropic_|_1=delaunay-guided_|_2=edge-guided_|_3=mask-guided_},_diffusion_iter>=0 >") ); return 0;;
		"inpaint_flow" | "-inpaint_flow" | "--inpaint_flow" | "+inpaint_flow")
		    COMPREPLY=( $(compgen -W "[mask],_nb_global_iter>=0,_nb_local_iter>=0,_dt>0,_alpha>=0,_sigma>=0 >") ); return 0;;
		"inpaint_holes" | "-inpaint_holes" | "--inpaint_holes" | "+inpaint_holes")
		    COMPREPLY=( $(compgen -W "maximal_area[%]>=0,_tolerance>=0,_is_high_connectivity={_0_|_1_} >") ); return 0;;
		"inpaint_morpho" | "-inpaint_morpho" | "--inpaint_morpho" | "+inpaint_morpho")
		    COMPREPLY=( $(compgen -W "[mask] >") ); return 0;;
		"inpaint_matchpatch" | "-inpaint_matchpatch" | "--inpaint_matchpatch" | "+inpaint_matchpatch")
		    COMPREPLY=( $(compgen -W "[mask],_nb_scales={_0=auto_|_>0_},_patch_size>0,_nb_iterations_per_scale>0,_blend_size>=0,_allow_outer_blending={_0_|_1_},_is_already_initialized={_0_|_1_} >") ); return 0;;
		"kuwahara" | "-kuwahara" | "--kuwahara" | "+kuwahara")
		    COMPREPLY=( $(compgen -W "size>0 >") ); return 0;;
		"lic" | "-lic" | "--lic" | "+lic")
		    COMPREPLY=( $(compgen -W "_amplitude>0,_channels>0 >") ); return 0;;
		"map_tones" | "-map_tones" | "--map_tones" | "+map_tones")
		    COMPREPLY=( $(compgen -W "_threshold>=0,_gamma>=0,_smoothness>=0,nb_iter>=0 >") ); return 0;;
		"map_tones_fast" | "-map_tones_fast" | "--map_tones_fast" | "+map_tones_fast")
		    COMPREPLY=( $(compgen -W "_radius[%]>=0,_power>=0 >") ); return 0;;
		"meancurvature_flow" | "-meancurvature_flow" | "--meancurvature_flow" | "+meancurvature_flow")
		    COMPREPLY=( $(compgen -W "_nb_iter>=0,_dt,_keep_sequence={_0_|_1_} >") ); return 0;;
		"median" | "-median" | "--median" | "+median")
		    COMPREPLY=( $(compgen -W "size>=0,_threshold>0 >") ); return 0;;
		"nlmeans" | "-nlmeans" | "--nlmeans" | "+nlmeans")
		    COMPREPLY=( $(compgen -W "[guide],_patch_radius>0,_spatial_bandwidth>0,_tonal_bandwidth>0,_patch_measure_command _patch_radius>0,_spatial_bandwidth>0,_tonal_bandwidth>0,_patch_measure_command") ); return 0;;
		"nlmeans_core" | "-nlmeans_core" | "--nlmeans_core" | "+nlmeans_core")
		    COMPREPLY=( $(compgen -W "_reference_image,_scaling_map,_patch_radius>0,_spatial_bandwidth>0 >") ); return 0;;
		"normalize_local" | "-normalize_local" | "--normalize_local" | "+normalize_local")
		    COMPREPLY=( $(compgen -W "_amplitude>=0,_radius>0,_n_smooth>=0[%],_a_smooth>=0[%],_is_cut={_0_|_1_},_min=0,_max=255 >") ); return 0;;
		"normalized_cross_correlation" | "-normalized_cross_correlation" | "--normalized_cross_correlation" | "+normalized_cross_correlation")
		    COMPREPLY=( $(compgen -W "[mask] >") ); return 0;;
		"peronamalik_flow" | "-peronamalik_flow" | "--peronamalik_flow" | "+peronamalik_flow")
		    COMPREPLY=( $(compgen -W "K_factor>0,_nb_iter>=0,_dt,_keep_sequence={_0_|_1_} >") ); return 0;;
		"phase_correlation" | "-phase_correlation" | "--phase_correlation" | "+phase_correlation")
		    COMPREPLY=( $(compgen -W "[destination] >") ); return 0;;
		"pde_flow" | "-pde_flow" | "--pde_flow" | "+pde_flow")
		    COMPREPLY=( $(compgen -W "_nb_iter>=0,_dt,_velocity_command,_keep_sequence={_0_|_1_} >") ); return 0;;
		"red_eye" | "-red_eye" | "--red_eye" | "+red_eye")
		    COMPREPLY=( $(compgen -W "0<=_threshold<=100,_smoothness>=0,0<=attenuation<=1 >") ); return 0;;
		"remove_hotpixels" | "-remove_hotpixels" | "--remove_hotpixels" | "+remove_hotpixels")
		    COMPREPLY=( $(compgen -W "_mask_size>0,__threshold[%]>0 >") ); return 0;;
		"remove_pixels" | "-remove_pixels" | "--remove_pixels" | "+remove_pixels")
		    COMPREPLY=( $(compgen -W "number_of_pixels[%]>=0 >") ); return 0;;
		"rolling_guidance" | "-rolling_guidance" | "--rolling_guidance" | "+rolling_guidance")
		    COMPREPLY=( $(compgen -W "std_deviation_s[%]>=0,std_deviation_r[%]>=0,_precision>=0 >") ); return 0;;
		"sharpen" | "-sharpen" | "--sharpen" | "+sharpen")
		    COMPREPLY=( $(compgen -W "amplitude>=0 amplitude>=0,edge>=0,_alpha,_sigma") ); return 0;;
		"smooth" | "-smooth" | "--smooth" | "+smooth")
		    COMPREPLY=( $(compgen -W "amplitude[%]>=0,_sharpness>=0,0<=_anisotropy<=1,_alpha[%],_sigma[%],_dl>0,_da>0,_precision>0,interpolation,_fast_approx={_0_|_1_} nb_iterations>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dt>0,0 [tensor_field],_amplitude>=0,_dl>0,_da>0,_precision>0,_interpolation,_fast_approx={_0_|_1_} [tensor_field],_nb_iters>=0,_dt>0,0") ); return 0;;
		"split_freq" | "-split_freq" | "--split_freq" | "+split_freq")
		    COMPREPLY=( $(compgen -W "smoothness>0[%] >") ); return 0;;
		"solve_poisson" | "-solve_poisson" | "--solve_poisson" | "+solve_poisson")
		    COMPREPLY=( $(compgen -W ""laplacian_command",_nb_iterations>=0,_time_step>0,_nb_scales>=0 >") ); return 0;;
		"split_details" | "-split_details" | "--split_details" | "+split_details")
		    COMPREPLY=( $(compgen -W "_nb_scales>0,_base_scale[%]>=0,_detail_scale[%]>=0 >") ); return 0;;
		"structuretensors" | "-structuretensors" | "--structuretensors" | "+structuretensors")
		    COMPREPLY=( $(compgen -W "_scheme={_0=centered_|_1=forward/backward_} >") ); return 0;;
		"solidify" | "-solidify" | "--solidify" | "+solidify")
		    COMPREPLY=( $(compgen -W "_smoothness[%]>=0,_diffusion_type={_0=isotropic_|_1=delaunay-oriented_|_2=edge-oriented_},_diffusion_iter>=0 >") ); return 0;;
		"syntexturize" | "-syntexturize" | "--syntexturize" | "+syntexturize")
		    COMPREPLY=( $(compgen -W "_width[%]>0,_height[%]>0 >") ); return 0;;
		"syntexturize_matchpatch" | "-syntexturize_matchpatch" | "--syntexturize_matchpatch" | "+syntexturize_matchpatch")
		    COMPREPLY=( $(compgen -W "_width[%]>0,_height[%]>0,_nb_scales>=0,_patch_size>0,_blending_size>=0,_precision>=0 >") ); return 0;;
		"tv_flow" | "-tv_flow" | "--tv_flow" | "+tv_flow")
		    COMPREPLY=( $(compgen -W "_nb_iter>=0,_dt,_keep_sequence={_0_|_1_} >") ); return 0;;
		"unsharp" | "-unsharp" | "--unsharp" | "+unsharp")
		    COMPREPLY=( $(compgen -W "radius[%]>=0,_amount>=0,_threshold[%]>=0 >") ); return 0;;
		"unsharp_octave" | "-unsharp_octave" | "--unsharp_octave" | "+unsharp_octave")
		    COMPREPLY=( $(compgen -W "_nb_scales>0,_radius[%]>=0,_amount>=0,threshold[%]>=0 >") ); return 0;;
		"vanvliet" | "-vanvliet" | "--vanvliet" | "+vanvliet")
		    COMPREPLY=( $(compgen -W "std_deviation>=0[%],order={_0_|_1_|_2_|_3_},axis={_x_|_y_|_z_|_c_},_boundary_conditions >") ); return 0;;
		"watermark_fourier" | "-watermark_fourier" | "--watermark_fourier" | "+watermark_fourier")
		    COMPREPLY=( $(compgen -W "text,_size>0 >") ); return 0;;
		"watershed" | "-watershed" | "--watershed" | "+watershed")
		    COMPREPLY=( $(compgen -W "[priority_image],_is_high_connectivity={_0_|_1_} >") ); return 0;;
		"area" | "-area" | "--area" | "+area")
		    COMPREPLY=( $(compgen -W "tolerance>=0,is_high_connectivity={_0_|_1_} >") ); return 0;;
		"area_fg" | "-area_fg" | "--area_fg" | "+area_fg")
		    COMPREPLY=( $(compgen -W "tolerance>=0,is_high_connectivity={_0_|_1_} >") ); return 0;;
		"at_line" | "-at_line" | "--at_line" | "+at_line")
		    COMPREPLY=( $(compgen -W "x0[%],y0[%],z0[%],x1[%],y1[%],z1[%] >") ); return 0;;
		"at_quadrangle" | "-at_quadrangle" | "--at_quadrangle" | "+at_quadrangle")
		    COMPREPLY=( $(compgen -W "x0[%],y0[%],x1[%],y1[%],x2[%],y2[%],x3[%],y3[%],_interpolation,_boundary_conditions x0[%],y0[%],z0[%],x1[%],y1[%],z1[%],x2[%],y2[%],z2[%],x3[%],y3[%],z3[%],_interpolation,_boundary_conditions") ); return 0;;
		"detect_skin" | "-detect_skin" | "--detect_skin" | "+detect_skin")
		    COMPREPLY=( $(compgen -W "0<=tolerance<=1,_skin_x,_skin_y,_skin_radius>=0 >") ); return 0;;
		"displacement" | "-displacement" | "--displacement" | "+displacement")
		    COMPREPLY=( $(compgen -W "[source_image],_smoothness,_precision>=0,_nb_scales>=0,_iteration_max>=0,is_backward={_0_|_1_},_[guide] >") ); return 0;;
		"distance" | "-distance" | "--distance" | "+distance")
		    COMPREPLY=( $(compgen -W "isovalue[%],_metric isovalue[%],[metric],_method") ); return 0;;
		"histogram" | "-histogram" | "--histogram" | "+histogram")
		    COMPREPLY=( $(compgen -W "_nb_levels>0[%],_value0[%],_value1[%] >") ); return 0;;
		"histogram_nd" | "-histogram_nd" | "--histogram_nd" | "+histogram_nd")
		    COMPREPLY=( $(compgen -W "nb_levels>0[%],_value0[%],_value1[%] >") ); return 0;;
		"histogram_cumul" | "-histogram_cumul" | "--histogram_cumul" | "+histogram_cumul")
		    COMPREPLY=( $(compgen -W "_nb_levels>0,_is_normalized={_0_|_1_},_val0[%],_val1[%] >") ); return 0;;
		"histogram_pointwise" | "-histogram_pointwise" | "--histogram_pointwise" | "+histogram_pointwise")
		    COMPREPLY=( $(compgen -W "nb_levels>0[%],_value0[%],_value1[%] >") ); return 0;;
		"hough" | "-hough" | "--hough" | "+hough")
		    COMPREPLY=( $(compgen -W "_width>0,_height>0,gradient_norm_voting={_0_|_1_} >") ); return 0;;
		"isophotes" | "-isophotes" | "--isophotes" | "+isophotes")
		    COMPREPLY=( $(compgen -W "_nb_levels>0 >") ); return 0;;
		"label" | "-label" | "--label" | "+label")
		    COMPREPLY=( $(compgen -W "_tolerance>=0,is_high_connectivity={_0_|_1_} >") ); return 0;;
		"label_fg" | "-label_fg" | "--label_fg" | "+label_fg")
		    COMPREPLY=( $(compgen -W "tolerance>=0,is_high_connectivity={_0_|_1_} >") ); return 0;;
		"max_patch" | "-max_patch" | "--max_patch" | "+max_patch")
		    COMPREPLY=( $(compgen -W "_patch_size>=1 >") ); return 0;;
		"min_patch" | "-min_patch" | "--min_patch" | "+min_patch")
		    COMPREPLY=( $(compgen -W "_patch_size>=1 >") ); return 0;;
		"minimal_path" | "-minimal_path" | "--minimal_path" | "+minimal_path")
		    COMPREPLY=( $(compgen -W "x0[%]>=0,y0[%]>=0,z0[%]>=0,x1[%]>=0,y1[%]>=0,z1[%]>=0,_is_high_connectivity={_0_|_1_} >") ); return 0;;
		"patches" | "-patches" | "--patches" | "+patches")
		    COMPREPLY=( $(compgen -W "patch_width>0,patch_height>0,patch_depth>0,x0,y0,z0,_x1,_y1,_z1,...,_xN,_yN,_zN >") ); return 0;;
		"matchpatch" | "-matchpatch" | "--matchpatch" | "+matchpatch")
		    COMPREPLY=( $(compgen -W "[patch_image],patch_width>=1,_patch_height>=1,_patch_depth>=1,_nb_iterations>=0,_nb_randoms>=0,_occ_penalization,_output_score={_0_|_1_},_[guide] >") ); return 0;;
		"pointcloud" | "-pointcloud" | "--pointcloud" | "+pointcloud")
		    COMPREPLY=( $(compgen -W "_type_=_{_-X=-X-opacity_|_0=binary_|_1=cumulative_|_2=label_|_3=retrieve_coordinates_},_width,_height>0,_depth>0 >") ); return 0;;
		"psnr" | "-psnr" | "--psnr" | "+psnr")
		    COMPREPLY=( $(compgen -W "_max_value >") ); return 0;;
		"segment_watershed" | "-segment_watershed" | "--segment_watershed" | "+segment_watershed")
		    COMPREPLY=( $(compgen -W "_threshold>=0 >") ); return 0;;
		"shape2bump" | "-shape2bump" | "--shape2bump" | "+shape2bump")
		    COMPREPLY=( $(compgen -W "_resolution>=0,0<=_weight_avg_max_avg<=1,_dilation,_smoothness>=0 >") ); return 0;;
		"skeleton" | "-skeleton" | "--skeleton" | "+skeleton")
		    COMPREPLY=( $(compgen -W "_boundary_conditions={_0=dirichlet_|_1=neumann_} >") ); return 0;;
		"slic" | "-slic" | "--slic" | "+slic")
		    COMPREPLY=( $(compgen -W "size>0,_regularity>=0,_nb_iterations>0 >") ); return 0;;
		"ssd_patch" | "-ssd_patch" | "--ssd_patch" | "+ssd_patch")
		    COMPREPLY=( $(compgen -W "[patch],_use_fourier={_0_|_1_},_boundary_conditions={_0=dirichlet_|_1=neumann_} >") ); return 0;;
		"thinning" | "-thinning" | "--thinning" | "+thinning")
		    COMPREPLY=( $(compgen -W "_boundary_conditions={_0=dirichlet_|_1=neumann_} >") ); return 0;;
		"tones" | "-tones" | "--tones" | "+tones")
		    COMPREPLY=( $(compgen -W "N>0 >") ); return 0;;
		"topographic_map" | "-topographic_map" | "--topographic_map" | "+topographic_map")
		    COMPREPLY=( $(compgen -W "_nb_levels>0,_smoothness >") ); return 0;;
		"tsp" | "-tsp" | "--tsp" | "+tsp")
		    COMPREPLY=( $(compgen -W "_precision>=0 >") ); return 0;;
		"variance_patch" | "-variance_patch" | "--variance_patch" | "+variance_patch")
		    COMPREPLY=( $(compgen -W "_patch_size>=1 >") ); return 0;;
		"arrow" | "-arrow" | "--arrow" | "+arrow")
		    COMPREPLY=( $(compgen -W "x0[%],y0[%],x1[%],y1[%],_thickness[%]>=0,_head_length[%]>=0,_head_thickness[%]>=0,_opacity,_pattern,_color1,... >") ); return 0;;
		"axes" | "-axes" | "--axes" | "+axes")
		    COMPREPLY=( $(compgen -W "x0,x1,y0,y1,_font_height>=0,_opacity,_pattern,_color1,... >") ); return 0;;
		"ball" | "-ball" | "--ball" | "+ball")
		    COMPREPLY=( $(compgen -W "_size>0,__R,_G,_B,0<=_specular_light<=8,0<=_specular_size<=8,_shadow>=0 >") ); return 0;;
		"chessboard" | "-chessboard" | "--chessboard" | "+chessboard")
		    COMPREPLY=( $(compgen -W "size1>0,_size2>0,_offset1,_offset2,_angle,_opacity,_color1,...,_color2,... >") ); return 0;;
		"circle" | "-circle" | "--circle" | "+circle")
		    COMPREPLY=( $(compgen -W "x[%],y[%],R[%],_opacity,_pattern,_color1,... >") ); return 0;;
		"close_binary" | "-close_binary" | "--close_binary" | "+close_binary")
		    COMPREPLY=( $(compgen -W "0<=_endpoint_rate<=100,_endpoint_connectivity>=0,_spline_distmax>=0,_segment_distmax>=0,0<=_spline_anglemax<=180,_spline_roundness>=0,_area_min>=0,_allow_self_intersection={_0_|_1_} >") ); return 0;;
		"ellipse" | "-ellipse" | "--ellipse" | "+ellipse")
		    COMPREPLY=( $(compgen -W "x[%],y[%],R[%],r[%],_angle,_opacity,_pattern,_color1,... >") ); return 0;;
		"flood" | "-flood" | "--flood" | "+flood")
		    COMPREPLY=( $(compgen -W "x[%],_y[%],_z[%],_tolerance>=0,_is_high_connectivity={_0_|_1_},_opacity,_color1,... >") ); return 0;;
		"gaussian" | "-gaussian" | "--gaussian" | "+gaussian")
		    COMPREPLY=( $(compgen -W "_sigma1[%],_sigma2[%],_angle >") ); return 0;;
		"graph" | "-graph" | "--graph" | "+graph")
		    COMPREPLY=( $(compgen -W "[function_image],_plot_type,_vertex_type,_ymin,_ymax,_opacity,_pattern,_color1,... \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax,_opacity,_pattern,_color1,...") ); return 0;;
		"grid" | "-grid" | "--grid" | "+grid")
		    COMPREPLY=( $(compgen -W "size_x[%]>=0,size_y[%]>=0,_offset_x[%],_offset_y[%],_opacity,_pattern,_color1,... >") ); return 0;;
		"image" | "-image" | "--image" | "+image")
		    COMPREPLY=( $(compgen -W "[sprite],_x[%],_y[%],_z[%],_c[%],_opacity,_[opacity_mask],_max_opacity_mask >") ); return 0;;
		"line" | "-line" | "--line" | "+line")
		    COMPREPLY=( $(compgen -W "x0[%],y0[%],x1[%],y1[%],_opacity,_pattern,_color1,... >") ); return 0;;
		"linethick" | "-linethick" | "--linethick" | "+linethick")
		    COMPREPLY=( $(compgen -W "x0[%],y0[%],x1[%],y1[%],_thickness,_opacity,_color1 >") ); return 0;;
		"mandelbrot" | "-mandelbrot" | "--mandelbrot" | "+mandelbrot")
		    COMPREPLY=( $(compgen -W "z0r,z0i,z1r,z1i,_iteration_max>=0,_is_julia={_0_|_1_},_c0r,_c0i,_opacity >") ); return 0;;
		"marble" | "-marble" | "--marble" | "+marble")
		    COMPREPLY=( $(compgen -W "_image_weight,_pattern_weight,_angle,_amplitude,_sharpness>=0,_anisotropy>=0,_alpha,_sigma,_cut_low>=0,_cut_high>=0 >") ); return 0;;
		"maze" | "-maze" | "--maze" | "+maze")
		    COMPREPLY=( $(compgen -W "_width>0,_height>0,_cell_size>0 >") ); return 0;;
		"maze_mask" | "-maze_mask" | "--maze_mask" | "+maze_mask")
		    COMPREPLY=( $(compgen -W "_cellsize>0 >") ); return 0;;
		"object3d" | "-object3d" | "--object3d" | "+object3d")
		    COMPREPLY=( $(compgen -W "[object3d],_x[%],_y[%],_z,_opacity,_rendering_mode,_is_double_sided={_0_|_1_},_is_zbuffer={_0_|_1_},_focale,_light_x,_light_y,_light_z,_specular_lightness,_specular_shininess >") ); return 0;;
		"pack_sprites" | "-pack_sprites" | "--pack_sprites" | "+pack_sprites")
		    COMPREPLY=( $(compgen -W "_nb_scales>=0,0<=_min_scale<=100,_allow_rotation={_0=0_deg._|_1=180_deg._|_2=90_deg._|_3=any_},_spacing,_precision>=0,max_iterations>=0 >") ); return 0;;
		"piechart" | "-piechart" | "--piechart" | "+piechart")
		    COMPREPLY=( $(compgen -W "label_height>=0,label_R,label_G,label_B,"label1",value1,R1,G1,B1,...,"labelN",valueN,RN,GN,BN >") ); return 0;;
		"plasma" | "-plasma" | "--plasma" | "+plasma")
		    COMPREPLY=( $(compgen -W "_alpha,_beta,_scale>=0 >") ); return 0;;
		"point" | "-point" | "--point" | "+point")
		    COMPREPLY=( $(compgen -W "x[%],y[%],_z[%],_opacity,_color1,... >") ); return 0;;
		"polka_dots" | "-polka_dots" | "--polka_dots" | "+polka_dots")
		    COMPREPLY=( $(compgen -W "diameter>=0,_density,_offset1,_offset2,_angle,_aliasing,_shading,_opacity,_color,... >") ); return 0;;
		"polygon" | "-polygon" | "--polygon" | "+polygon")
		    COMPREPLY=( $(compgen -W "N>=1,x1[%],y1[%],...,xN[%],yN[%],_opacity,_pattern,_color1,... >") ); return 0;;
		"quiver" | "-quiver" | "--quiver" | "+quiver")
		    COMPREPLY=( $(compgen -W "[function_image],_sampling[%]>0,_factor>=0,_is_arrow={_0_|_1_},_opacity,_color1,... >") ); return 0;;
		"rectangle" | "-rectangle" | "--rectangle" | "+rectangle")
		    COMPREPLY=( $(compgen -W "x0[%],y0[%],x1[%],y1[%],_opacity,_pattern,_color1,... >") ); return 0;;
		"rorschach" | "-rorschach" | "--rorschach" | "+rorschach")
		    COMPREPLY=( $(compgen -W "\'smoothness[%]>=0\',\'mirroring={_0=none_|_1=x_|_2=y_|_3=xy_} >") ); return 0;;
		"sierpinski" | "-sierpinski" | "--sierpinski" | "+sierpinski")
		    COMPREPLY=( $(compgen -W "recursion_level>=0 >") ); return 0;;
		"spline" | "-spline" | "--spline" | "+spline")
		    COMPREPLY=( $(compgen -W "x0[%],y0[%],u0[%],v0[%],x1[%],y1[%],u1[%],v1[%],_opacity,_color1,... >") ); return 0;;
		"tetraedron_shade" | "-tetraedron_shade" | "--tetraedron_shade" | "+tetraedron_shade")
		    COMPREPLY=( $(compgen -W "x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3,R0,G0,B0,...,R1,G1,B1,...,R2,G2,B2,...,R3,G3,B3,... >") ); return 0;;
		"text" | "-text" | "--text" | "+text")
		    COMPREPLY=( $(compgen -W "text,_x[%],_y[%],_font_height[%]>=0,_opacity,_color1,... >") ); return 0;;
		"text_outline" | "-text_outline" | "--text_outline" | "+text_outline")
		    COMPREPLY=( $(compgen -W "text,_x[%],_y[%],_font_height[%]>0,_outline>=0,_opacity,_color1,... >") ); return 0;;
		"triangle_shade" | "-triangle_shade" | "--triangle_shade" | "+triangle_shade")
		    COMPREPLY=( $(compgen -W "x0,y0,x1,y1,x2,y2,R0,G0,B0,...,R1,G1,B1,...,R2,G2,B2,... >") ); return 0;;
		"truchet" | "-truchet" | "--truchet" | "+truchet")
		    COMPREPLY=( $(compgen -W "_scale>0,_radius>=0,_pattern_type={_0=straight_|_1=curved_} >") ); return 0;;
		"turbulence" | "-turbulence" | "--turbulence" | "+turbulence")
		    COMPREPLY=( $(compgen -W "_radius>0,_octaves={1,2,3...,12},_alpha>0,_difference={-10,10},_mode={0,1,2,3} >") ); return 0;;
		"dijkstra" | "-dijkstra" | "--dijkstra" | "+dijkstra")
		    COMPREPLY=( $(compgen -W "starting_node>=0,ending_node>=0 >") ); return 0;;
		"solve" | "-solve" | "--solve" | "+solve")
		    COMPREPLY=( $(compgen -W "[image] >") ); return 0;;
		"trisolve" | "-trisolve" | "--trisolve" | "+trisolve")
		    COMPREPLY=( $(compgen -W "[image] >") ); return 0;;
		"add3d" | "-add3d" | "--add3d" | "+add3d")
		    COMPREPLY=( $(compgen -W "tx,_ty,_tz [object3d] (no_arg)") ); return 0;;
		"animate3d" | "-animate3d" | "--animate3d" | "+animate3d")
		    COMPREPLY=( $(compgen -W "_width>0,_height>0,_angle_dx,_angle_dy,_angle_dz,_zoom_factor>=0,_filename >") ); return 0;;
		"apply_camera3d" | "-apply_camera3d" | "--apply_camera3d" | "+apply_camera3d")
		    COMPREPLY=( $(compgen -W "pos_x,pos_y,pos_z,target_x,target_y,target_z,up_x,up_y,up_z >") ); return 0;;
		"apply_matrix3d" | "-apply_matrix3d" | "--apply_matrix3d" | "+apply_matrix3d")
		    COMPREPLY=( $(compgen -W "a11,a12,a13,...,a31,a32,a33 >") ); return 0;;
		"array3d" | "-array3d" | "--array3d" | "+array3d")
		    COMPREPLY=( $(compgen -W "size_x>=1,_size_y>=1,_size_z>=1,_offset_x[%],_offset_y[%],_offset_y[%] >") ); return 0;;
		"arrow3d" | "-arrow3d" | "--arrow3d" | "+arrow3d")
		    COMPREPLY=( $(compgen -W "x0,y0,z0,x1,y1,z1,_radius[%]>=0,_head_length[%]>=0,_head_radius[%]>=0 >") ); return 0;;
		"axes3d" | "-axes3d" | "--axes3d" | "+axes3d")
		    COMPREPLY=( $(compgen -W "_size_x,_size_y,_size_z,_font_size>0,_label_x,_label_y,_label_z >") ); return 0;;
		"box3d" | "-box3d" | "--box3d" | "+box3d")
		    COMPREPLY=( $(compgen -W "_size_x,_size_y,_size_z >") ); return 0;;
		"circle3d" | "-circle3d" | "--circle3d" | "+circle3d")
		    COMPREPLY=( $(compgen -W "_x0,_y0,_z0,_radius>=0 >") ); return 0;;
		"circles3d" | "-circles3d" | "--circles3d" | "+circles3d")
		    COMPREPLY=( $(compgen -W "_radius>=0,_is_filled={_0_|_1_} >") ); return 0;;
		"color3d" | "-color3d" | "--color3d" | "+color3d")
		    COMPREPLY=( $(compgen -W "R,_G,_B,_opacity >") ); return 0;;
		"cone3d" | "-cone3d" | "--cone3d" | "+cone3d")
		    COMPREPLY=( $(compgen -W "_radius,_height,_nb_subdivisions>0 >") ); return 0;;
		"cubes3d" | "-cubes3d" | "--cubes3d" | "+cubes3d")
		    COMPREPLY=( $(compgen -W "_size>=0 >") ); return 0;;
		"cup3d" | "-cup3d" | "--cup3d" | "+cup3d")
		    COMPREPLY=( $(compgen -W "_resolution>0 >") ); return 0;;
		"cylinder3d" | "-cylinder3d" | "--cylinder3d" | "+cylinder3d")
		    COMPREPLY=( $(compgen -W "_radius,_height,_nb_subdivisions>0 >") ); return 0;;
		"div3d" | "-div3d" | "--div3d" | "+div3d")
		    COMPREPLY=( $(compgen -W "factor factor_x,factor_y,_factor_z") ); return 0;;
		"double3d" | "-double3d" | "--double3d" | "+double3d")
		    COMPREPLY=( $(compgen -W "_is_double_sided={_0_|_1_} >") ); return 0;;
		"elevation3d" | "-elevation3d" | "--elevation3d" | "+elevation3d")
		    COMPREPLY=( $(compgen -W "z-factor [elevation_map] \'formula\' (no_arg)") ); return 0;;
		"extrude3d" | "-extrude3d" | "--extrude3d" | "+extrude3d")
		    COMPREPLY=( $(compgen -W "_depth>0,_resolution>0,_smoothness[%]>=0 >") ); return 0;;
		"focale3d" | "-focale3d" | "--focale3d" | "+focale3d")
		    COMPREPLY=( $(compgen -W "focale >") ); return 0;;
		"gaussians3d" | "-gaussians3d" | "--gaussians3d" | "+gaussians3d")
		    COMPREPLY=( $(compgen -W "_size>0,_opacity >") ); return 0;;
		"gyroid3d" | "-gyroid3d" | "--gyroid3d" | "+gyroid3d")
		    COMPREPLY=( $(compgen -W "_resolution>0,_zoom >") ); return 0;;
		"imageblocks3d" | "-imageblocks3d" | "--imageblocks3d" | "+imageblocks3d")
		    COMPREPLY=( $(compgen -W "_maximum_elevation,_smoothness[%]>=0 >") ); return 0;;
		"imagerubik3d" | "-imagerubik3d" | "--imagerubik3d" | "+imagerubik3d")
		    COMPREPLY=( $(compgen -W "_xy_tiles>=1,0<=xy_shift<=100,0<=z_shift<=100 >") ); return 0;;
		"imagesphere3d" | "-imagesphere3d" | "--imagesphere3d" | "+imagesphere3d")
		    COMPREPLY=( $(compgen -W "_resolution1>=3,_resolution2>=3 >") ); return 0;;
		"isoline3d" | "-isoline3d" | "--isoline3d" | "+isoline3d")
		    COMPREPLY=( $(compgen -W "isovalue[%] \'formula\',value,_x0,_y0,_x1,_y1,_size_x>0[%],_size_y>0[%]") ); return 0;;
		"isosurface3d" | "-isosurface3d" | "--isosurface3d" | "+isosurface3d")
		    COMPREPLY=( $(compgen -W "isovalue[%] \'formula\',value,_x0,_y0,_z0,_x1,_y1,_z1,_size_x>0[%],_size_y>0[%],_size_z>0[%]") ); return 0;;
		"label3d" | "-label3d" | "--label3d" | "+label3d")
		    COMPREPLY=( $(compgen -W ""text",font_height>=0,_opacity,_color1,... >") ); return 0;;
		"label_points3d" | "-label_points3d" | "--label_points3d" | "+label_points3d")
		    COMPREPLY=( $(compgen -W "_label_size>0,_opacity >") ); return 0;;
		"lathe3d" | "-lathe3d" | "--lathe3d" | "+lathe3d")
		    COMPREPLY=( $(compgen -W "_resolution>0,_smoothness[%]>=0,_max_angle>=0 >") ); return 0;;
		"light3d" | "-light3d" | "--light3d" | "+light3d")
		    COMPREPLY=( $(compgen -W "position_x,position_y,position_z [texture] (no_arg)") ); return 0;;
		"line3d" | "-line3d" | "--line3d" | "+line3d")
		    COMPREPLY=( $(compgen -W "x0,y0,z0,x1,y1,z1 >") ); return 0;;
		"lissajous3d" | "-lissajous3d" | "--lissajous3d" | "+lissajous3d")
		    COMPREPLY=( $(compgen -W "resolution>1,a,A,b,B,c,C >") ); return 0;;
		"mode3d" | "-mode3d" | "--mode3d" | "+mode3d")
		    COMPREPLY=( $(compgen -W "_mode >") ); return 0;;
		"moded3d" | "-moded3d" | "--moded3d" | "+moded3d")
		    COMPREPLY=( $(compgen -W "_mode >") ); return 0;;
		"mul3d" | "-mul3d" | "--mul3d" | "+mul3d")
		    COMPREPLY=( $(compgen -W "factor factor_x,factor_y,_factor_z") ); return 0;;
		"opacity3d" | "-opacity3d" | "--opacity3d" | "+opacity3d")
		    COMPREPLY=( $(compgen -W "_opacity >") ); return 0;;
		"parametric3d" | "-parametric3d" | "--parametric3d" | "+parametric3d")
		    COMPREPLY=( $(compgen -W "_x(a,b),_y(a,b),_z(a,b),_amin,_amax,_bmin,_bmax,_res_a>0,_res_b>0,_res_x>0,_res_y>0,_res_z>0,_smoothness>=0,_isovalue>=0 >") ); return 0;;
		"pca_patch3d" | "-pca_patch3d" | "--pca_patch3d" | "+pca_patch3d")
		    COMPREPLY=( $(compgen -W "_patch_size>0,_M>0,_N>0,_normalize_input={_0_|_1_},_normalize_output={_0_|_1_},_lambda_xy >") ); return 0;;
		"plane3d" | "-plane3d" | "--plane3d" | "+plane3d")
		    COMPREPLY=( $(compgen -W "_size_x,_size_y,_nb_subdivisions_x>0,_nb_subdisivions_y>0 >") ); return 0;;
		"point3d" | "-point3d" | "--point3d" | "+point3d")
		    COMPREPLY=( $(compgen -W "x0,y0,z0 >") ); return 0;;
		"pose3d" | "-pose3d" | "--pose3d" | "+pose3d")
		    COMPREPLY=( $(compgen -W "p1,...,p12 >") ); return 0;;
		"primitives3d" | "-primitives3d" | "--primitives3d" | "+primitives3d")
		    COMPREPLY=( $(compgen -W "mode >") ); return 0;;
		"projections3d" | "-projections3d" | "--projections3d" | "+projections3d")
		    COMPREPLY=( $(compgen -W "_x[%],_y[%],_z[%],_is_bounding_box={_0_|_1_} >") ); return 0;;
		"pyramid3d" | "-pyramid3d" | "--pyramid3d" | "+pyramid3d")
		    COMPREPLY=( $(compgen -W "width,height >") ); return 0;;
		"quadrangle3d" | "-quadrangle3d" | "--quadrangle3d" | "+quadrangle3d")
		    COMPREPLY=( $(compgen -W "x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3 >") ); return 0;;
		"random3d" | "-random3d" | "--random3d" | "+random3d")
		    COMPREPLY=( $(compgen -W "nb_points>=0 >") ); return 0;;
		"rotate3d" | "-rotate3d" | "--rotate3d" | "+rotate3d")
		    COMPREPLY=( $(compgen -W "u,v,w,angle >") ); return 0;;
		"rotation3d" | "-rotation3d" | "--rotation3d" | "+rotation3d")
		    COMPREPLY=( $(compgen -W "u,v,w,angle >") ); return 0;;
		"sierpinski3d" | "-sierpinski3d" | "--sierpinski3d" | "+sierpinski3d")
		    COMPREPLY=( $(compgen -W "_recursion_level>=0,_width,_height >") ); return 0;;
		"skeleton3d" | "-skeleton3d" | "--skeleton3d" | "+skeleton3d")
		    COMPREPLY=( $(compgen -W "_metric,_frame_type={_0=squares_|_1=diamonds_|_2=circles_|_3=auto_},_skeleton_opacity,_frame_opacity,_is_frame_wireframe={_0_|_1_} >") ); return 0;;
		"snapshot3d" | "-snapshot3d" | "--snapshot3d" | "+snapshot3d")
		    COMPREPLY=( $(compgen -W "_size>0,_zoom>=0,_backgroundR,_backgroundG,_backgroundB,_backgroundA [background_image],zoom>=0") ); return 0;;
		"specl3d" | "-specl3d" | "--specl3d" | "+specl3d")
		    COMPREPLY=( $(compgen -W "value>=0 >") ); return 0;;
		"specs3d" | "-specs3d" | "--specs3d" | "+specs3d")
		    COMPREPLY=( $(compgen -W "value>=0 >") ); return 0;;
		"sphere3d" | "-sphere3d" | "--sphere3d" | "+sphere3d")
		    COMPREPLY=( $(compgen -W "radius,_nb_recursions>=0 >") ); return 0;;
		"spherical3d" | "-spherical3d" | "--spherical3d" | "+spherical3d")
		    COMPREPLY=( $(compgen -W "_nb_azimuth>=3,_nb_zenith>=3,_radius_function(phi,theta) >") ); return 0;;
		"spline3d" | "-spline3d" | "--spline3d" | "+spline3d")
		    COMPREPLY=( $(compgen -W "x0[%],y0[%],z0[%],u0[%],v0[%],w0[%],x1[%],y1[%],z1[%],u1[%],v1[%],w1[%],_nb_vertices>=2 >") ); return 0;;
		"split3d" | "-split3d" | "--split3d" | "+split3d")
		    COMPREPLY=( $(compgen -W "_keep_shared_data={_0_|_1_} >") ); return 0;;
		"sprites3d" | "-sprites3d" | "--sprites3d" | "+sprites3d")
		    COMPREPLY=( $(compgen -W "[sprite],_sprite_has_alpha_channel={_0_|_1_} >") ); return 0;;
		"star3d" | "-star3d" | "--star3d" | "+star3d")
		    COMPREPLY=( $(compgen -W "_nb_branches>0,0<=_thickness<=1 >") ); return 0;;
		"streamline3d" | "-streamline3d" | "--streamline3d" | "+streamline3d")
		    COMPREPLY=( $(compgen -W "x[%],y[%],z[%],_L>=0,_dl>0,_interpolation,_is_backward={_0_|_1_},_is_oriented={_0_|_1_} \'formula\',x,y,z,_L>=0,_dl>0,_interpolation,_is_backward={_0_|_1_},_is_oriented={_0_|_1_}") ); return 0;;
		"sub3d" | "-sub3d" | "--sub3d" | "+sub3d")
		    COMPREPLY=( $(compgen -W "tx,_ty,_tz >") ); return 0;;
		"superformula3d" | "-superformula3d" | "--superformula3d" | "+superformula3d")
		    COMPREPLY=( $(compgen -W "resolution>1,m>=1,n1,n2,n3 >") ); return 0;;
		"tensors3d" | "-tensors3d" | "--tensors3d" | "+tensors3d")
		    COMPREPLY=( $(compgen -W "_radius_factor>=0,_shape={_0=box_|_>=N=ellipsoid_},_radius_min>=0 >") ); return 0;;
		"text_pointcloud3d" | "-text_pointcloud3d" | "--text_pointcloud3d" | "+text_pointcloud3d")
		    COMPREPLY=( $(compgen -W "_"text1",_"text2",_smoothness >") ); return 0;;
		"text3d" | "-text3d" | "--text3d" | "+text3d")
		    COMPREPLY=( $(compgen -W "text,_font_height>0,_depth>0,_smoothness >") ); return 0;;
		"texturize3d" | "-texturize3d" | "--texturize3d" | "+texturize3d")
		    COMPREPLY=( $(compgen -W "[ind_texture],_[ind_coords] >") ); return 0;;
		"torus3d" | "-torus3d" | "--torus3d" | "+torus3d")
		    COMPREPLY=( $(compgen -W "_radius1,_radius2,_nb_subdivisions1>2,_nb_subdivisions2>2 >") ); return 0;;
		"triangle3d" | "-triangle3d" | "--triangle3d" | "+triangle3d")
		    COMPREPLY=( $(compgen -W "x0,y0,z0,x1,y1,z1,x2,y2,z2 >") ); return 0;;
		"weird3d" | "-weird3d" | "--weird3d" | "+weird3d")
		    COMPREPLY=( $(compgen -W "_resolution>0 >") ); return 0;;
		"apply_parallel" | "-apply_parallel" | "--apply_parallel" | "+apply_parallel")
		    COMPREPLY=( $(compgen -W ""command" >") ); return 0;;
		"apply_parallel_channels" | "-apply_parallel_channels" | "--apply_parallel_channels" | "+apply_parallel_channels")
		    COMPREPLY=( $(compgen -W ""command" >") ); return 0;;
		"apply_parallel_overlap" | "-apply_parallel_overlap" | "--apply_parallel_overlap" | "+apply_parallel_overlap")
		    COMPREPLY=( $(compgen -W ""command",overlap[%],nb_threads={_0=auto_|_1_|_2_|_4_|_8_|_16_} >") ); return 0;;
		"apply_tiles" | "-apply_tiles" | "--apply_tiles" | "+apply_tiles")
		    COMPREPLY=( $(compgen -W ""command",_tile_width[%]>0,_tile_height[%]>0,_tile_depth[%]>0,_overlap_width[%]>=0,_overlap_height[%]>=0,_overlap_depth[%]>=0,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;;
		"apply_timeout" | "-apply_timeout" | "--apply_timeout" | "+apply_timeout")
		    COMPREPLY=( $(compgen -W ""command",_timeout={_0=no_timeout_|_>0=with_specified_timeout_(in_seconds)_} >") ); return 0;;
		"check" | "-check" | "--check" | "+check")
		    COMPREPLY=( $(compgen -W "expression >") ); return 0;;
		"check3d" | "-check3d" | "--check3d" | "+check3d")
		    COMPREPLY=( $(compgen -W "_is_full_check={_0_|_1_} >") ); return 0;;
		"elif" | "-elif" | "--elif" | "+elif")
		    COMPREPLY=( $(compgen -W "boolean filename") ); return 0;;
		"error" | "-error" | "--error" | "+error")
		    COMPREPLY=( $(compgen -W "message >") ); return 0;;
		"eval" | "-eval" | "--eval" | "+eval")
		    COMPREPLY=( $(compgen -W "expression >") ); return 0;;
		"exec" | "-exec" | "--exec" | "+exec")
		    COMPREPLY=( $(compgen -W "_is_verbose={_0_|_1_},"command" >") ); return 0;;
		"for" | "-for" | "--for" | "+for")
		    COMPREPLY=( $(compgen -W "condition >") ); return 0;;
		"if" | "-if" | "--if" | "+if")
		    COMPREPLY=( $(compgen -W "boolean filename") ); return 0;;
		"mutex" | "-mutex" | "--mutex" | "+mutex")
		    COMPREPLY=( $(compgen -W "index,_action={_0=unlock_|_1=lock_} >") ); return 0;;
		"parallel" | "-parallel" | "--parallel" | "+parallel")
		    COMPREPLY=( $(compgen -W "_wait_threads,"command1","command2",... >") ); return 0;;
		"progress" | "-progress" | "--progress" | "+progress")
		    COMPREPLY=( $(compgen -W "0<=value<=100 -1") ); return 0;;
		"repeat" | "-repeat" | "--repeat" | "+repeat")
		    COMPREPLY=( $(compgen -W "nb_iterations,_variable_name >") ); return 0;;
		"rprogress" | "-rprogress" | "--rprogress" | "+rprogress")
		    COMPREPLY=( $(compgen -W "0<=value<=100_|_-1_|_"command",0<=value_min<=100,0<=value_max<=100 >") ); return 0;;
		"run" | "-run" | "--run" | "+run")
		    COMPREPLY=( $(compgen -W ""G\'MIC_pipeline" >") ); return 0;;
		"skip" | "-skip" | "--skip" | "+skip")
		    COMPREPLY=( $(compgen -W "item >") ); return 0;;
		"status" | "-status" | "--status" | "+status")
		    COMPREPLY=( $(compgen -W "status_string >") ); return 0;;
		"while" | "-while" | "--while" | "+while")
		    COMPREPLY=( $(compgen -W "boolean filename") ); return 0;;
		"array" | "-array" | "--array" | "+array")
		    COMPREPLY=( $(compgen -W "M>0,_N>0,_expand_type={_0=min_|_1=max_|_2=all_} >") ); return 0;;
		"array_fade" | "-array_fade" | "--array_fade" | "+array_fade")
		    COMPREPLY=( $(compgen -W "M>0,_N>0,0<=_fade_start<=100,0<=_fade_end<=100,_expand_type={0=min_|_1=max_|_2=all} >") ); return 0;;
		"array_mirror" | "-array_mirror" | "--array_mirror" | "+array_mirror")
		    COMPREPLY=( $(compgen -W "N>=0,_dir={_0=x_|_1=y_|_2=xy_|_3=tri-xy_},_expand_type={_0_|_1_} >") ); return 0;;
		"array_random" | "-array_random" | "--array_random" | "+array_random")
		    COMPREPLY=( $(compgen -W "Ms>0,_Ns>0,_Md>0,_Nd>0 >") ); return 0;;
		"frame_blur" | "-frame_blur" | "--frame_blur" | "+frame_blur")
		    COMPREPLY=( $(compgen -W "_sharpness>0,_size>=0,_smoothness,_shading,_blur >") ); return 0;;
		"frame_cube" | "-frame_cube" | "--frame_cube" | "+frame_cube")
		    COMPREPLY=( $(compgen -W "_depth>=0,_centering_x,_centering_y,_left_side={0=normal_|_1=mirror-x_|_2=mirror-y_|_3=mirror-xy},_right_side,_lower_side,_upper_side >") ); return 0;;
		"frame_fuzzy" | "-frame_fuzzy" | "--frame_fuzzy" | "+frame_fuzzy")
		    COMPREPLY=( $(compgen -W "size_x[%]>=0,_size_y[%]>=0,_fuzzyness>=0,_smoothness[%]>=0,_R,_G,_B,_A >") ); return 0;;
		"frame_painting" | "-frame_painting" | "--frame_painting" | "+frame_painting")
		    COMPREPLY=( $(compgen -W "_size[%]>=0,0<=_contrast<=1,_profile_smoothness[%]>=0,_R,_G,_B,_vignette_size[%]>=0,_vignette_contrast>=0,_defects_contrast>=0,0<=_defects_density<=100,_defects_size>=0,_defects_smoothness[%]>=0,_serial_number >") ); return 0;;
		"frame_pattern" | "-frame_pattern" | "--frame_pattern" | "+frame_pattern")
		    COMPREPLY=( $(compgen -W "M>=3,_constrain_size={_0_|_1_} M>=3,_[frame_image],_constrain_size={_0_|_1_}") ); return 0;;
		"frame_round" | "-frame_round" | "--frame_round" | "+frame_round")
		    COMPREPLY=( $(compgen -W "_sharpness>0,_size>=0,_smoothness,_shading,_R,_G,_B,_A >") ); return 0;;
		"frame_seamless" | "-frame_seamless" | "--frame_seamless" | "+frame_seamless")
		    COMPREPLY=( $(compgen -W "frame_size>=0,_patch_size>0,_blend_size>=0,_frame_direction={_0=inner_(preserve_image_size)_|_1=outer_} >") ); return 0;;
		"frame_x" | "-frame_x" | "--frame_x" | "+frame_x")
		    COMPREPLY=( $(compgen -W "size_x[%],_col1,...,_colN >") ); return 0;;
		"frame_xy" | "-frame_xy" | "--frame_xy" | "+frame_xy")
		    COMPREPLY=( $(compgen -W "size_x[%],_size_y[%],_col1,...,_colN >") ); return 0;;
		"frame_xyz" | "-frame_xyz" | "--frame_xyz" | "+frame_xyz")
		    COMPREPLY=( $(compgen -W "size_x[%],_size_y[%],_size_z[%]_col1,...,_colN >") ); return 0;;
		"frame_y" | "-frame_y" | "--frame_y" | "+frame_y")
		    COMPREPLY=( $(compgen -W "size_y[%],_col1,...,_colN >") ); return 0;;
		"img2ascii" | "-img2ascii" | "--img2ascii" | "+img2ascii")
		    COMPREPLY=( $(compgen -W "_charset,_analysis_scale>0,_analysis_smoothness[%]>=0,_synthesis_scale>0,_output_ascii_filename >") ); return 0;;
		"imagegrid" | "-imagegrid" | "--imagegrid" | "+imagegrid")
		    COMPREPLY=( $(compgen -W "M>0,_N>0 >") ); return 0;;
		"imagegrid_hexagonal" | "-imagegrid_hexagonal" | "--imagegrid_hexagonal" | "+imagegrid_hexagonal")
		    COMPREPLY=( $(compgen -W "_resolution>0,0<=_outline<=1 >") ); return 0;;
		"imagegrid_triangular" | "-imagegrid_triangular" | "--imagegrid_triangular" | "+imagegrid_triangular")
		    COMPREPLY=( $(compgen -W "pattern_width>=1,_pattern_height>=1,_pattern_type,0<=_outline_opacity<=1,_outline_color1,... >") ); return 0;;
		"linearize_tiles" | "-linearize_tiles" | "--linearize_tiles" | "+linearize_tiles")
		    COMPREPLY=( $(compgen -W "M>0,_N>0 >") ); return 0;;
		"map_sprites" | "-map_sprites" | "--map_sprites" | "+map_sprites")
		    COMPREPLY=( $(compgen -W "_nb_sprites>=1,_allow_rotation={_0=none_|_1=90_deg._|_2=180_deg._} >") ); return 0;;
		"pack" | "-pack" | "--pack" | "+pack")
		    COMPREPLY=( $(compgen -W "is_ratio_constraint={_0_|_1_},_sort_criterion >") ); return 0;;
		"puzzle" | "-puzzle" | "--puzzle" | "+puzzle")
		    COMPREPLY=( $(compgen -W "_width>0,_height>0,_M>=1,_N>=1,_curvature,_centering,_connectors_variability,_resolution>=1 >") ); return 0;;
		"quadratize_tiles" | "-quadratize_tiles" | "--quadratize_tiles" | "+quadratize_tiles")
		    COMPREPLY=( $(compgen -W "M>0,_N>0 >") ); return 0;;
		"rotate_tiles" | "-rotate_tiles" | "--rotate_tiles" | "+rotate_tiles")
		    COMPREPLY=( $(compgen -W "angle,_M>0,N>0 >") ); return 0;;
		"shift_tiles" | "-shift_tiles" | "--shift_tiles" | "+shift_tiles")
		    COMPREPLY=( $(compgen -W "M>0,_N>0,_amplitude >") ); return 0;;
		"taquin" | "-taquin" | "--taquin" | "+taquin")
		    COMPREPLY=( $(compgen -W "M>0,_N>0,_remove_tile={_0=none_|_1=first_|_2=last_|_3=random_},_relief,_border_thickness[%],_border_outline[%],_outline_color >") ); return 0;;
		"tunnel" | "-tunnel" | "--tunnel" | "+tunnel")
		    COMPREPLY=( $(compgen -W "_level>=0,_factor>0,_centering_x,_centering_y,_opacity,_angle >") ); return 0;;
		"boxfitting" | "-boxfitting" | "--boxfitting" | "+boxfitting")
		    COMPREPLY=( $(compgen -W "_min_box_size>=1,_max_box_size>=0,_initial_density>=0,_nb_attempts>=1 >") ); return 0;;
		"brushify" | "-brushify" | "--brushify" | "+brushify")
		    COMPREPLY=( $(compgen -W "[brush],_brush_nb_sizes>=1,0<=_brush_min_size_factor<=1,_brush_nb_orientations>=1,_brush_light_type,0<=_brush_light_strength<=1,_brush_opacity,_painting_density[%]>=0,0<=_painting_contours_coherence<=1,0<=_painting_orientation_coherence<=1,_painting_coherence_alpha[%]>=0,_painting_coherence_sigma[%]>=0,_painting_primary_angle,0<=_painting_angle_dispersion<=1 >") ); return 0;;
		"cartoon" | "-cartoon" | "--cartoon" | "+cartoon")
		    COMPREPLY=( $(compgen -W "_smoothness,_sharpening,_threshold>=0,_thickness>=0,_color>=0,quantization>0 >") ); return 0;;
		"color_ellipses" | "-color_ellipses" | "--color_ellipses" | "+color_ellipses")
		    COMPREPLY=( $(compgen -W "_count>0,_radius>=0,_opacity>=0 >") ); return 0;;
		"cubism" | "-cubism" | "--cubism" | "+cubism")
		    COMPREPLY=( $(compgen -W "_density>=0,0<=_thickness<=50,_max_angle,_opacity,_smoothness>=0 >") ); return 0;;
		"draw_whirl" | "-draw_whirl" | "--draw_whirl" | "+draw_whirl")
		    COMPREPLY=( $(compgen -W "_amplitude>=0 >") ); return 0;;
		"drawing" | "-drawing" | "--drawing" | "+drawing")
		    COMPREPLY=( $(compgen -W "_amplitude>=0 >") ); return 0;;
		"drop_shadow" | "-drop_shadow" | "--drop_shadow" | "+drop_shadow")
		    COMPREPLY=( $(compgen -W "_offset_x[%],_offset_y[%],_smoothness[%]>=0,0<=_curvature<=1,_expand_size={_0_|_1_} >") ); return 0;;
		"ellipsionism" | "-ellipsionism" | "--ellipsionism" | "+ellipsionism")
		    COMPREPLY=( $(compgen -W "_R>0[%],_r>0[%],_smoothness>=0[%],_opacity,_outline>0,_density>0 >") ); return 0;;
		"fire_edges" | "-fire_edges" | "--fire_edges" | "+fire_edges")
		    COMPREPLY=( $(compgen -W "_edges>=0,0<=_attenuation<=1,_smoothness>=0,_threshold>=0,_nb_frames>0,_starting_frame>=0,frame_skip>=0 >") ); return 0;;
		"fractalize" | "-fractalize" | "--fractalize" | "+fractalize")
		    COMPREPLY=( $(compgen -W "0<=detail_level<=1 >") ); return 0;;
		"glow" | "-glow" | "--glow" | "+glow")
		    COMPREPLY=( $(compgen -W "_amplitude>=0 >") ); return 0;;
		"halftone" | "-halftone" | "--halftone" | "+halftone")
		    COMPREPLY=( $(compgen -W "nb_levels>=2,_size_dark>=2,_size_bright>=2,_shape={_0=square_|_1=diamond_|_2=circle_|_3=inv-square_|_4=inv-diamond_|_5=inv-circle_},_smoothness[%]>=0 >") ); return 0;;
		"hardsketchbw" | "-hardsketchbw" | "--hardsketchbw" | "+hardsketchbw")
		    COMPREPLY=( $(compgen -W "_amplitude>=0,_density>=0,_opacity,0<=_edge_threshold<=100,_is_fast={_0_|_1_} >") ); return 0;;
		"hearts" | "-hearts" | "--hearts" | "+hearts")
		    COMPREPLY=( $(compgen -W "_density>=0 >") ); return 0;;
		"houghsketchbw" | "-houghsketchbw" | "--houghsketchbw" | "+houghsketchbw")
		    COMPREPLY=( $(compgen -W "_density>=0,_radius>0,0<=_threshold<=100,0<=_opacity<=1,_votesize[%]>0 >") ); return 0;;
		"lightrays" | "-lightrays" | "--lightrays" | "+lightrays")
		    COMPREPLY=( $(compgen -W "100<=_density<=0,_center_x[%],_center_y[%],_ray_length>=0,_ray_attenuation>=0 >") ); return 0;;
		"light_relief" | "-light_relief" | "--light_relief" | "+light_relief")
		    COMPREPLY=( $(compgen -W "_ambient_light,_specular_lightness,_specular_size,_light_smoothness,_darkness,_xl,_yl,_zl,_zscale,_opacity_is_heightmap={_0_|_1_} >") ); return 0;;
		"linify" | "-linify" | "--linify" | "+linify")
		    COMPREPLY=( $(compgen -W "0<=_density<=100,_spreading>=0,_resolution[%]>0,_line_opacity>=0,_line_precision>0,_mode={_0=subtractive_|_1=additive_} >") ); return 0;;
		"mosaic" | "-mosaic" | "--mosaic" | "+mosaic")
		    COMPREPLY=( $(compgen -W "0<=_density<=100 >") ); return 0;;
		"pencilbw" | "-pencilbw" | "--pencilbw" | "+pencilbw")
		    COMPREPLY=( $(compgen -W "_size>=0,_amplitude>=0 >") ); return 0;;
		"pixelsort" | "-pixelsort" | "--pixelsort" | "+pixelsort")
		    COMPREPLY=( $(compgen -W "_ordering={_+_|_-_},_axis={_x_|_y_|_z_|_xy_|_yx_},_[sorting_criterion],_[mask] >") ); return 0;;
		"polaroid" | "-polaroid" | "--polaroid" | "+polaroid")
		    COMPREPLY=( $(compgen -W "_size1>=0,_size2>=0 >") ); return 0;;
		"polygonize" | "-polygonize" | "--polygonize" | "+polygonize")
		    COMPREPLY=( $(compgen -W "_warp_amplitude>=0,_smoothness[%]>=0,_min_area[%]>=0,_resolution_x[%]>0,_resolution_y[%]>0 >") ); return 0;;
		"poster_edges" | "-poster_edges" | "--poster_edges" | "+poster_edges")
		    COMPREPLY=( $(compgen -W "0<=_edge_threshold<=100,0<=_edge_shade<=100,_edge_thickness>=0,_edge_antialiasing>=0,0<=_posterization_level<=15,_posterization_antialiasing>=0 >") ); return 0;;
		"poster_hope" | "-poster_hope" | "--poster_hope" | "+poster_hope")
		    COMPREPLY=( $(compgen -W "_smoothness>=0 >") ); return 0;;
		"rodilius" | "-rodilius" | "--rodilius" | "+rodilius")
		    COMPREPLY=( $(compgen -W "0<=_amplitude<=100,_0<=thickness<=100,_sharpness>=0,_nb_orientations>0,_offset,_color_mode={_0=darker_|_1=brighter_} >") ); return 0;;
		"stained_glass" | "-stained_glass" | "--stained_glass" | "+stained_glass")
		    COMPREPLY=( $(compgen -W "_edges[%]>=0,_shading>=0,_is_thin_separators={_0_|_1_} >") ); return 0;;
		"stars" | "-stars" | "--stars" | "+stars")
		    COMPREPLY=( $(compgen -W "_density[%]>=0,_depth>=0,_size>0,_nb_branches>=1,0<=_thickness<=1,_smoothness[%]>=0,_R,_G,_B,_opacity >") ); return 0;;
		"sketchbw" | "-sketchbw" | "--sketchbw" | "+sketchbw")
		    COMPREPLY=( $(compgen -W "_nb_angles>0,_start_angle,_angle_range>=0,_length>=0,_threshold>=0,_opacity,_bgfactor>=0,_density>0,_sharpness>=0,_anisotropy>=0,_smoothness>=0,_coherence>=0,_is_boost={_0_|_1_},_is_curved={_0_|_1_} >") ); return 0;;
		"sponge" | "-sponge" | "--sponge" | "+sponge")
		    COMPREPLY=( $(compgen -W "_size>0 >") ); return 0;;
		"stencil" | "-stencil" | "--stencil" | "+stencil")
		    COMPREPLY=( $(compgen -W "_radius[%]>=0,_smoothness>=0,_iterations>=0 >") ); return 0;;
		"stencilbw" | "-stencilbw" | "--stencilbw" | "+stencilbw")
		    COMPREPLY=( $(compgen -W "_edges>=0,_smoothness>=0 >") ); return 0;;
		"tetris" | "-tetris" | "--tetris" | "+tetris")
		    COMPREPLY=( $(compgen -W "_scale>0 >") ); return 0;;
		"warhol" | "-warhol" | "--warhol" | "+warhol")
		    COMPREPLY=( $(compgen -W "_M>0,_N>0,_smoothness>=0,_color>=0 >") ); return 0;;
		"weave" | "-weave" | "--weave" | "+weave")
		    COMPREPLY=( $(compgen -W "_density>=0,0<=_thickness<=100,0<=_shadow<=100,_shading>=0,_fibers_amplitude>=0,_fibers_smoothness>=0,_angle,-1<=_x_curvature<=1,-1<=_y_curvature<=1 >") ); return 0;;
		"whirls" | "-whirls" | "--whirls" | "+whirls")
		    COMPREPLY=( $(compgen -W "_texture>=0,_smoothness>=0,_darkness>=0,_lightness>=0 >") ); return 0;;
		"deform" | "-deform" | "--deform" | "+deform")
		    COMPREPLY=( $(compgen -W "_amplitude>=0,_interpolation >") ); return 0;;
		"euclidean2polar" | "-euclidean2polar" | "--euclidean2polar" | "+euclidean2polar")
		    COMPREPLY=( $(compgen -W "_center_x[%],_center_y[%],_stretch_factor>0,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;;
		"fisheye" | "-fisheye" | "--fisheye" | "+fisheye")
		    COMPREPLY=( $(compgen -W "_center_x,_center_y,0<=_radius<=100,_amplitude>=0 >") ); return 0;;
		"flower" | "-flower" | "--flower" | "+flower")
		    COMPREPLY=( $(compgen -W "_amplitude,_frequency,_offset_r[%],_angle,_center_x[%],_center_y[%],_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror} >") ); return 0;;
		"kaleidoscope" | "-kaleidoscope" | "--kaleidoscope" | "+kaleidoscope")
		    COMPREPLY=( $(compgen -W "_center_x[%],_center_y[%],_radius,_angle,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;;
		"map_sphere" | "-map_sphere" | "--map_sphere" | "+map_sphere")
		    COMPREPLY=( $(compgen -W "_width>0,_height>0,_radius,_dilation>0,_fading>=0,_fading_power>=0 >") ); return 0;;
		"polar2euclidean" | "-polar2euclidean" | "--polar2euclidean" | "+polar2euclidean")
		    COMPREPLY=( $(compgen -W "_center_x[%],_center_y[%],_stretch_factor>0,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;;
		"raindrops" | "-raindrops" | "--raindrops" | "+raindrops")
		    COMPREPLY=( $(compgen -W "_amplitude,_density>=0,_wavelength>=0,_merging_steps>=0 >") ); return 0;;
		"ripple" | "-ripple" | "--ripple" | "+ripple")
		    COMPREPLY=( $(compgen -W "_amplitude,_bandwidth,_shape={_0=bloc_|_1=triangle_|_2=sine_|_3=sine+_|_4=random_},_angle,_offset >") ); return 0;;
		"rotoidoscope" | "-rotoidoscope" | "--rotoidoscope" | "+rotoidoscope")
		    COMPREPLY=( $(compgen -W "_center_x[%],_center_y[%],_tiles>0,_smoothness[%]>=0,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;;
		"spherize" | "-spherize" | "--spherize" | "+spherize")
		    COMPREPLY=( $(compgen -W "_radius[%]>=0,_strength,_smoothness[%]>=0,_center_x[%],_center_y[%],_ratio_x/y>0,_angle,_interpolation >") ); return 0;;
		"symmetrize" | "-symmetrize" | "--symmetrize" | "+symmetrize")
		    COMPREPLY=( $(compgen -W "_x[%],_y[%],_angle,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_},_is_antisymmetry={_0_|_1_},_swap_sides={_0_|_1_} >") ); return 0;;
		"transform_polar" | "-transform_polar" | "--transform_polar" | "+transform_polar")
		    COMPREPLY=( $(compgen -W ""expr_radius",_"expr_angle",_center_x[%],_center_y[%],_boundary_conditions={_0=dirichlet_|_1=neumann_} >") ); return 0;;
		"twirl" | "-twirl" | "--twirl" | "+twirl")
		    COMPREPLY=( $(compgen -W "_amplitude,_center_x[%],_center_y[%],_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;;
		"warp_perspective" | "-warp_perspective" | "--warp_perspective" | "+warp_perspective")
		    COMPREPLY=( $(compgen -W "_x-angle,_y-angle,_zoom>0,_x-center,_y-center,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;;
		"water" | "-water" | "--water" | "+water")
		    COMPREPLY=( $(compgen -W "_amplitude,_smoothness>=0,_angle >") ); return 0;;
		"wave" | "-wave" | "--wave" | "+wave")
		    COMPREPLY=( $(compgen -W "_amplitude>=0,_frequency>=0,_center_x,_center_y >") ); return 0;;
		"wind" | "-wind" | "--wind" | "+wind")
		    COMPREPLY=( $(compgen -W "_amplitude>=0,_angle,0<=_attenuation<=1,_threshold >") ); return 0;;
		"zoom" | "-zoom" | "--zoom" | "+zoom")
		    COMPREPLY=( $(compgen -W "_factor,_cx,_cy,_cz,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;;
		"cracks" | "-cracks" | "--cracks" | "+cracks")
		    COMPREPLY=( $(compgen -W "0<=_density<=100,_is_relief={_0_|_1_},_opacity,_color1,... >") ); return 0;;
		"light_patch" | "-light_patch" | "--light_patch" | "+light_patch")
		    COMPREPLY=( $(compgen -W "_density>0,_darkness>=0,_lightness>=0 >") ); return 0;;
		"noise_hurl" | "-noise_hurl" | "--noise_hurl" | "+noise_hurl")
		    COMPREPLY=( $(compgen -W "_amplitude>=0 >") ); return 0;;
		"pixelize" | "-pixelize" | "--pixelize" | "+pixelize")
		    COMPREPLY=( $(compgen -W "_scale_x>0,_scale_y>0,_scale_z>0 >") ); return 0;;
		"scanlines" | "-scanlines" | "--scanlines" | "+scanlines")
		    COMPREPLY=( $(compgen -W "_amplitude,_bandwidth,_shape={_0=bloc_|_1=triangle_|_2=sine_|_3=sine+_|_4=random_},_angle,_offset >") ); return 0;;
		"shade_stripes" | "-shade_stripes" | "--shade_stripes" | "+shade_stripes")
		    COMPREPLY=( $(compgen -W "_frequency>=0,_direction={_0=horizontal_|_1=vertical_},_darkness>=0,_lightness>=0 >") ); return 0;;
		"shadow_patch" | "-shadow_patch" | "--shadow_patch" | "+shadow_patch")
		    COMPREPLY=( $(compgen -W "_opacity>=0 >") ); return 0;;
		"spread" | "-spread" | "--spread" | "+spread")
		    COMPREPLY=( $(compgen -W "_dx>=0,_dy>=0,_dz>=0 >") ); return 0;;
		"stripes_y" | "-stripes_y" | "--stripes_y" | "+stripes_y")
		    COMPREPLY=( $(compgen -W "_frequency>=0 >") ); return 0;;
		"texturize_canvas" | "-texturize_canvas" | "--texturize_canvas" | "+texturize_canvas")
		    COMPREPLY=( $(compgen -W "_amplitude>=0,_fibrousness>=0,_emboss_level>=0 >") ); return 0;;
		"vignette" | "-vignette" | "--vignette" | "+vignette")
		    COMPREPLY=( $(compgen -W "_strength>=0,0<=_radius_min<=100,0<=_radius_max<=100 >") ); return 0;;
		"watermark_visible" | "-watermark_visible" | "--watermark_visible" | "+watermark_visible")
		    COMPREPLY=( $(compgen -W "_text,0<_opacity<1,_size>0,_angle,_mode={_0=remove_|_1=add_},_smoothness>=0 >") ); return 0;;
		"blend" | "-blend" | "--blend" | "+blend")
		    COMPREPLY=( $(compgen -W "[layer],blending_mode,_opacity[%],_selection_is={_0=base-layers_|_1=top-layers_} blending_mode,_opacity[%]") ); return 0;;
		"blend_edges" | "-blend_edges" | "--blend_edges" | "+blend_edges")
		    COMPREPLY=( $(compgen -W "smoothness[%]>=0 >") ); return 0;;
		"blend_fade" | "-blend_fade" | "--blend_fade" | "+blend_fade")
		    COMPREPLY=( $(compgen -W "[fading_shape] >") ); return 0;;
		"blend_seamless" | "-blend_seamless" | "--blend_seamless" | "+blend_seamless")
		    COMPREPLY=( $(compgen -W "_is_mixed_mode={_0_|_1_},_inner_fading[%]>=0,_outer_fading[%]>=0 >") ); return 0;;
		"fade_diamond" | "-fade_diamond" | "--fade_diamond" | "+fade_diamond")
		    COMPREPLY=( $(compgen -W "0<=_start<=100,0<=_end<=100 >") ); return 0;;
		"fade_linear" | "-fade_linear" | "--fade_linear" | "+fade_linear")
		    COMPREPLY=( $(compgen -W "_angle,0<=_start<=100,0<=_end<=100 >") ); return 0;;
		"fade_radial" | "-fade_radial" | "--fade_radial" | "+fade_radial")
		    COMPREPLY=( $(compgen -W "0<=_start<=100,0<=_end<=100 >") ); return 0;;
		"fade_x" | "-fade_x" | "--fade_x" | "+fade_x")
		    COMPREPLY=( $(compgen -W "0<=_start<=100,0<=_end<=100 >") ); return 0;;
		"fade_y" | "-fade_y" | "--fade_y" | "+fade_y")
		    COMPREPLY=( $(compgen -W "0<=_start<=100,0<=_end<=100 >") ); return 0;;
		"fade_z" | "-fade_z" | "--fade_z" | "+fade_z")
		    COMPREPLY=( $(compgen -W "0<=_start<=100,0<=_end<=100 >") ); return 0;;
		"sub_alpha" | "-sub_alpha" | "--sub_alpha" | "+sub_alpha")
		    COMPREPLY=( $(compgen -W "[base_image],_opacity_gain>=1 >") ); return 0;;
		"animate" | "-animate" | "--animate" | "+animate")
		    COMPREPLY=( $(compgen -W "filter_name,"param1_start,...,paramN_start","param1_end,...,paramN_end",nb_frames>=0,_output_frames={_0_|_1_},_output_filename delay>0,_back_and_forth={_0_|_1_}") ); return 0;;
		"apply_camera" | "-apply_camera" | "--apply_camera" | "+apply_camera")
		    COMPREPLY=( $(compgen -W "_"command",_camera_index>=0,_skip_frames>=0,_output_filename >") ); return 0;;
		"apply_files" | "-apply_files" | "--apply_files" | "+apply_files")
		    COMPREPLY=( $(compgen -W ""filename_pattern",_"command",_first_frame>=0,_last_frame={_>=0_|_-1=last_},_frame_step>=1,_output_filename >") ); return 0;;
		"apply_video" | "-apply_video" | "--apply_video" | "+apply_video")
		    COMPREPLY=( $(compgen -W "video_filename,_"command",_first_frame>=0,_last_frame={_>=0_|_-1=last_},_frame_step>=1,_output_filename >") ); return 0;;
		"average_files" | "-average_files" | "--average_files" | "+average_files")
		    COMPREPLY=( $(compgen -W ""filename_pattern",_first_frame>=0,_last_frame={_>=0_|_-1=last_},_frame_step>=1,_output_filename >") ); return 0;;
		"average_video" | "-average_video" | "--average_video" | "+average_video")
		    COMPREPLY=( $(compgen -W "video_filename,_first_frame>=0,_last_frame={_>=0_|_-1=last_},_frame_step>=1,_output_filename >") ); return 0;;
		"fade_files" | "-fade_files" | "--fade_files" | "+fade_files")
		    COMPREPLY=( $(compgen -W ""filename_pattern",_nb_inner_frames>0,_first_frame>=0,_last_frame={_>=0_|_-1=last_},_frame_step>=1,_output_filename >") ); return 0;;
		"fade_video" | "-fade_video" | "--fade_video" | "+fade_video")
		    COMPREPLY=( $(compgen -W "video_filename,_nb_inner_frames>0,_first_frame>=0,_last_frame={_>=0_|_-1=last_},_frame_step>=1,_output_filename >") ); return 0;;
		"files2video" | "-files2video" | "--files2video" | "+files2video")
		    COMPREPLY=( $(compgen -W ""filename_pattern",_output_filename,_fps>0,_codec >") ); return 0;;
		"median_files" | "-median_files" | "--median_files" | "+median_files")
		    COMPREPLY=( $(compgen -W ""filename_pattern",_first_frame>=0,_last_frame={_>=0_|_-1=last_},_frame_step>=1,_frame_rows[%]>=1,_is_fast_approximation={_0_|_1_} >") ); return 0;;
		"median_video" | "-median_video" | "--median_video" | "+median_video")
		    COMPREPLY=( $(compgen -W "video_filename,_first_frame>=0,_last_frame={_>=0_|_-1=last_},_frame_step>=1,_frame_rows[%]>=1,_is_fast_approximation={_0_|_1_} >") ); return 0;;
		"morph" | "-morph" | "--morph" | "+morph")
		    COMPREPLY=( $(compgen -W "nb_inner_frames>=1,_smoothness>=0,_precision>=0 >") ); return 0;;
		"morph_files" | "-morph_files" | "--morph_files" | "+morph_files")
		    COMPREPLY=( $(compgen -W ""filename_pattern",_nb_inner_frames>0,_smoothness>=0,_precision>=0,_first_frame>=0,_last_frame={_>=0_|_-1=last_},_frame_step>=1,_output_filename >") ); return 0;;
		"morph_video" | "-morph_video" | "--morph_video" | "+morph_video")
		    COMPREPLY=( $(compgen -W "video_filename,_nb_inner_frames>0,_smoothness>=0,_precision>=0,_first_frame>=0,_last_frame={_>=0_|_-1=last_},_frame_step>=1,_output_filename >") ); return 0;;
		"register_nonrigid" | "-register_nonrigid" | "--register_nonrigid" | "+register_nonrigid")
		    COMPREPLY=( $(compgen -W "[destination],_smoothness>=0,_precision>0,_nb_scale>=0 >") ); return 0;;
		"register_rigid" | "-register_rigid" | "--register_rigid" | "+register_rigid")
		    COMPREPLY=( $(compgen -W "[destination],_smoothness>=0,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;;
		"transition" | "-transition" | "--transition" | "+transition")
		    COMPREPLY=( $(compgen -W "[transition_shape],nb_added_frames>=0,100>=shading>=0,_single_frame_only={_-1=disabled_|_>=0_} >") ); return 0;;
		"transition3d" | "-transition3d" | "--transition3d" | "+transition3d")
		    COMPREPLY=( $(compgen -W "_nb_frames>=2,_nb_xtiles>0,_nb_ytiles>0,_axis_x,_axis_y,_axis_z,_is_antialias={_0_|_1_} >") ); return 0;;
		"video2files" | "-video2files" | "--video2files" | "+video2files")
		    COMPREPLY=( $(compgen -W "input_filename,_output_filename,_first_frame>=0,_last_frame={_>=0_|_-1=last_},_frame_step>=1 >") ); return 0;;
		"alert" | "-alert" | "--alert" | "+alert")
		    COMPREPLY=( $(compgen -W "_title,_message,_label_button1,_label_button2,... >") ); return 0;;
		"arg" | "-arg" | "--arg" | "+arg")
		    COMPREPLY=( $(compgen -W "n>=1,_arg1,...,_argN >") ); return 0;;
		"arg2var" | "-arg2var" | "--arg2var" | "+arg2var")
		    COMPREPLY=( $(compgen -W "variable_name,argument_1,...,argument_N >") ); return 0;;
		"autocrop_coords" | "-autocrop_coords" | "--autocrop_coords" | "+autocrop_coords")
		    COMPREPLY=( $(compgen -W "value1,value2,..._|_auto >") ); return 0;;
		"base642img" | "-base642img" | "--base642img" | "+base642img")
		    COMPREPLY=( $(compgen -W ""base64_string" >") ); return 0;;
		"base642uchar" | "-base642uchar" | "--base642uchar" | "+base642uchar")
		    COMPREPLY=( $(compgen -W ""base64_string" >") ); return 0;;
		"basename" | "-basename" | "--basename" | "+basename")
		    COMPREPLY=( $(compgen -W "file_path,_variable_name_for_folder >") ); return 0;;
		"bin" | "-bin" | "--bin" | "+bin")
		    COMPREPLY=( $(compgen -W "binary_int1,... >") ); return 0;;
		"bin2dec" | "-bin2dec" | "--bin2dec" | "+bin2dec")
		    COMPREPLY=( $(compgen -W "binary_int1,... >") ); return 0;;
		"dec" | "-dec" | "--dec" | "+dec")
		    COMPREPLY=( $(compgen -W "decimal_int1,... >") ); return 0;;
		"dec2str" | "-dec2str" | "--dec2str" | "+dec2str")
		    COMPREPLY=( $(compgen -W "decimal_int1,... >") ); return 0;;
		"dec2bin" | "-dec2bin" | "--dec2bin" | "+dec2bin")
		    COMPREPLY=( $(compgen -W "decimal_int1,... >") ); return 0;;
		"dec2hex" | "-dec2hex" | "--dec2hex" | "+dec2hex")
		    COMPREPLY=( $(compgen -W "decimal_int1,... >") ); return 0;;
		"dec2oct" | "-dec2oct" | "--dec2oct" | "+dec2oct")
		    COMPREPLY=( $(compgen -W "decimal_int1,... >") ); return 0;;
		"fact" | "-fact" | "--fact" | "+fact")
		    COMPREPLY=( $(compgen -W "value >") ); return 0;;
		"fibonacci" | "-fibonacci" | "--fibonacci" | "+fibonacci")
		    COMPREPLY=( $(compgen -W "N>=0 >") ); return 0;;
		"file_mv" | "-file_mv" | "--file_mv" | "+file_mv")
		    COMPREPLY=( $(compgen -W "filename_src,filename_dest >") ); return 0;;
		"file_rm" | "-file_rm" | "--file_rm" | "+file_rm")
		    COMPREPLY=( $(compgen -W "filename >") ); return 0;;
		"filename" | "-filename" | "--filename" | "+filename")
		    COMPREPLY=( $(compgen -W "filename,_number1,_number2,...,_numberN >") ); return 0;;
		"files" | "-files" | "--files" | "+files")
		    COMPREPLY=( $(compgen -W "_mode,path >") ); return 0;;
		"fitratio_wh" | "-fitratio_wh" | "--fitratio_wh" | "+fitratio_wh")
		    COMPREPLY=( $(compgen -W "min_width,min_height,ratio_wh >") ); return 0;;
		"fitscreen" | "-fitscreen" | "--fitscreen" | "+fitscreen")
		    COMPREPLY=( $(compgen -W "width,height,_depth,_minimal_size[%],_maximal_size[%] >") ); return 0;;
		"gcd" | "-gcd" | "--gcd" | "+gcd")
		    COMPREPLY=( $(compgen -W "a,b >") ); return 0;;
		"hex" | "-hex" | "--hex" | "+hex")
		    COMPREPLY=( $(compgen -W "hexadecimal_int1,... >") ); return 0;;
		"hex2dec" | "-hex2dec" | "--hex2dec" | "+hex2dec")
		    COMPREPLY=( $(compgen -W "hexadecimal_int1,... >") ); return 0;;
		"hex2img" | "-hex2img" | "--hex2img" | "+hex2img")
		    COMPREPLY=( $(compgen -W ""hexadecimal_string" >") ); return 0;;
		"hex2str" | "-hex2str" | "--hex2str" | "+hex2str")
		    COMPREPLY=( $(compgen -W "hexadecimal_string >") ); return 0;;
		"img2text" | "-img2text" | "--img2text" | "+img2text")
		    COMPREPLY=( $(compgen -W "_line_separator >") ); return 0;;
		"is_ext" | "-is_ext" | "--is_ext" | "+is_ext")
		    COMPREPLY=( $(compgen -W "filename,_extension >") ); return 0;;
		"is_image_arg" | "-is_image_arg" | "--is_image_arg" | "+is_image_arg")
		    COMPREPLY=( $(compgen -W "string >") ); return 0;;
		"is_pattern" | "-is_pattern" | "--is_pattern" | "+is_pattern")
		    COMPREPLY=( $(compgen -W "string >") ); return 0;;
		"is_percent" | "-is_percent" | "--is_percent" | "+is_percent")
		    COMPREPLY=( $(compgen -W "string >") ); return 0;;
		"normalize_filename" | "-normalize_filename" | "--normalize_filename" | "+normalize_filename")
		    COMPREPLY=( $(compgen -W "filename >") ); return 0;;
		"oct" | "-oct" | "--oct" | "+oct")
		    COMPREPLY=( $(compgen -W "octal_int1,... >") ); return 0;;
		"oct2dec" | "-oct2dec" | "--oct2dec" | "+oct2dec")
		    COMPREPLY=( $(compgen -W "octal_int1,... >") ); return 0;;
		"padint" | "-padint" | "--padint" | "+padint")
		    COMPREPLY=( $(compgen -W "number,_size>0 >") ); return 0;;
		"str" | "-str" | "--str" | "+str")
		    COMPREPLY=( $(compgen -W "string >") ); return 0;;
		"str2hex" | "-str2hex" | "--str2hex" | "+str2hex")
		    COMPREPLY=( $(compgen -W "string >") ); return 0;;
		"strcontains" | "-strcontains" | "--strcontains" | "+strcontains")
		    COMPREPLY=( $(compgen -W "string1,string2 >") ); return 0;;
		"strlen" | "-strlen" | "--strlen" | "+strlen")
		    COMPREPLY=( $(compgen -W "string1 >") ); return 0;;
		"strreplace" | "-strreplace" | "--strreplace" | "+strreplace")
		    COMPREPLY=( $(compgen -W "string,search,replace >") ); return 0;;
		"strlowercase" | "-strlowercase" | "--strlowercase" | "+strlowercase")
		    COMPREPLY=( $(compgen -W "string >") ); return 0;;
		"strvar" | "-strvar" | "--strvar" | "+strvar")
		    COMPREPLY=( $(compgen -W "string >") ); return 0;;
		"strver" | "-strver" | "--strver" | "+strver")
		    COMPREPLY=( $(compgen -W "_version >") ); return 0;;
		"to_clutname" | "-to_clutname" | "--to_clutname" | "+to_clutname")
		    COMPREPLY=( $(compgen -W ""string" >") ); return 0;;
		"uchar2base64" | "-uchar2base64" | "--uchar2base64" | "+uchar2base64")
		    COMPREPLY=( $(compgen -W "_encoding={_0=base64_|_1=base64url_} >") ); return 0;;
		"img2base64" | "-img2base64" | "--img2base64" | "+img2base64")
		    COMPREPLY=( $(compgen -W "_encoding={_0=base64_|_1=base64url_} >") ); return 0;;
		"covariance_colors" | "-covariance_colors" | "--covariance_colors" | "+covariance_colors")
		    COMPREPLY=( $(compgen -W "_avg_outvarname >") ); return 0;;
		"demo" | "-demo" | "--demo" | "+demo")
		    COMPREPLY=( $(compgen -W "_run_in_parallel={_0=no_|_1=yes_|_2=auto_} >") ); return 0;;
		"x_color_curves" | "-x_color_curves" | "--x_color_curves" | "+x_color_curves")
		    COMPREPLY=( $(compgen -W "_colorspace={_rgb_|_cmy_|_cmyk_|_hsi_|_hsl_|_hsv_|_lab_|_lch_|_ycbcr_|_last_} >") ); return 0;;
		"x_colorize" | "-x_colorize" | "--x_colorize" | "+x_colorize")
		    COMPREPLY=( $(compgen -W "_is_lineart={_0_|_1_},_max_resolution={_0_|_>=128_},_multichannels_output={_0_|_1_},_[palette1],_[palette2],_[grabber1] >") ); return 0;;
		"x_grab_color" | "-x_grab_color" | "--x_grab_color" | "+x_grab_color")
		    COMPREPLY=( $(compgen -W "_variable_name >") ); return 0;;
		"x_jawbreaker" | "-x_jawbreaker" | "--x_jawbreaker" | "+x_jawbreaker")
		    COMPREPLY=( $(compgen -W "0<_width<20,0<_height<20,0<_balls<=8 >") ); return 0;;
		"x_mandelbrot" | "-x_mandelbrot" | "--x_mandelbrot" | "+x_mandelbrot")
		    COMPREPLY=( $(compgen -W "_julia={_0_|_1_},_c0r,_c0i >") ); return 0;;
		"x_mask_color" | "-x_mask_color" | "--x_mask_color" | "+x_mask_color")
		    COMPREPLY=( $(compgen -W "_colorspace={_all_|_rgb_|_lrgb_|_ycbcr_|_lab_|_lch_|_hsv_|_hsi_|_hsl_|_cmy_|_cmyk_|_yiq_},_spatial_tolerance>=0,_color_tolerance>=0 >") ); return 0;;
		"x_minesweeper" | "-x_minesweeper" | "--x_minesweeper" | "+x_minesweeper")
		    COMPREPLY=( $(compgen -W "8<=_width=<20,8<=_height<=20 >") ); return 0;;
		"x_quantize_rgb" | "-x_quantize_rgb" | "--x_quantize_rgb" | "+x_quantize_rgb")
		    COMPREPLY=( $(compgen -W "_nbcolors>=2 >") ); return 0;;
		"x_segment" | "-x_segment" | "--x_segment" | "+x_segment")
		    COMPREPLY=( $(compgen -W "_max_resolution={_0_|_>=128_} >") ); return 0;;
		"x_select_color" | "-x_select_color" | "--x_select_color" | "+x_select_color")
		    COMPREPLY=( $(compgen -W "_variable_name >") ); return 0;;
		"x_select_function1d" | "-x_select_function1d" | "--x_select_function1d" | "+x_select_function1d")
		    COMPREPLY=( $(compgen -W "_variable_name,_background_curve_R,_background_curve_G,_background_curve_B >") ); return 0;;
		"x_select_palette" | "-x_select_palette" | "--x_select_palette" | "+x_select_palette")
		    COMPREPLY=( $(compgen -W "_variable_name,_number_of_columns={_0=auto_|_>0_} >") ); return 0;;
		"x_whirl" | "-x_whirl" | "--x_whirl" | "+x_whirl")
		    COMPREPLY=( $(compgen -W "_opacity>=0 >") ); return 0;;
		"h" | "-h" | "--h" | "+h") COMPREPLY=( $(compgen -W "$coms" -- "$cur") ); return 0;;
		"m" | "-m" | "--m" | "+m") COMPREPLY=( $(compgen -W "_add_debug_info={_0_|_1_},{_filename_|_http[s]://URL_|_"string"_} >") ); return 0;;
		"d" | "-d" | "--d" | "+d") COMPREPLY=( $(compgen -W "_X[%]>=0,_Y[%]>=0,_Z[%]>=0,_exit_on_anykey={_0_|_1_} >") ); return 0;;
		"d3d" | "-d3d" | "--d3d" | "+d3d") COMPREPLY=( $(compgen -W "_[background_image],_exit_on_anykey={_0_|_1_} _exit_on_anykey={_0_|_1_}") ); return 0;;
		"da" | "-da" | "--da" | "+da") COMPREPLY=( $(compgen -W "_width>0,_height>0 >") ); return 0;;
		"dg" | "-dg" | "--dg" | "+dg") COMPREPLY=( $(compgen -W "_width>=0,_height>=0,_plot_type,_vertex_type,_xmin,_xmax,_ymin,_ymax,_xlabel,_ylabel >") ); return 0;;
		"dh" | "-dh" | "--dh" | "+dh") COMPREPLY=( $(compgen -W "_width>=0,_height>=0,_clusters>0,_min_value[%],_max_value[%],_show_axes={_0_|_1_},_expression. >") ); return 0;;
		"dq" | "-dq" | "--dq" | "+dq") COMPREPLY=( $(compgen -W "_size_factor>0,_arrow_size>=0,_color_mode={_0=monochrome_|_1=grayscale_|_2=color_} >") ); return 0;;
		"drgba" | "-drgba" | "--drgba" | "+drgba") COMPREPLY=( $(compgen -W "_background_RGB_color >") ); return 0;;
		"dt" | "-dt" | "--dt" | "+dt") COMPREPLY=( $(compgen -W "_size_factor>0,_ellipse_size>=0,_color_mode={_0=monochrome_|_1=grayscale_|_2=color_},_outline>=0 >") ); return 0;;
		"dw" | "-dw" | "--dw" | "+dw") COMPREPLY=( $(compgen -W "_cell_size>0 >") ); return 0;;
		"e" | "-e" | "--e" | "+e") COMPREPLY=( $(compgen -W "message >") ); return 0;;
		"ig" | "-ig" | "--ig" | "+ig") COMPREPLY=( $(compgen -W "pattern >") ); return 0;;
		"on" | "-on" | "--on" | "+on") COMPREPLY=( $(compgen -W "filename,_index >") ); return 0;;
		"op" | "-op" | "--op" | "+op") COMPREPLY=( $(compgen -W "prefix >") ); return 0;;
		"ox" | "-ox" | "--ox" | "+ox") COMPREPLY=( $(compgen -W "extension1,_extension2,_...,_extensionN,_output_at_same_location={_0_|_1_} >") ); return 0;;
		"sh" | "-sh" | "--sh" | "+sh") COMPREPLY=( $(compgen -W "x0[%],x1[%],y[%],z[%],v[%] y0[%],y1[%],z[%],v[%] z0[%],z1[%],v[%] v0[%],v1[%] v0[%] (no_arg)") ); return 0;;
		"sp" | "-sp" | "--sp" | "+sp") COMPREPLY=( $(compgen -W "_name1={_?_|_apples_|_barbara_|_boats_|_bottles_|_butterfly_|_cameraman_|_car_|_cat_|_cliff_|_colorful_|_david_|_dog_|_duck_|_eagle_|_elephant_|_earth_|_flower_|_fruits_|_gmicky_|_gmicky_mahvin_|_gmicky_wilber_|_greece_|_gummy_|_house_|_inside_|_landscape_|_leaf_|_lena_|_leno_|_lion_|_mandrill_|_monalisa_|_monkey_|_parrots_|_pencils_|_peppers_|_roddy_|_rooster_|_rose_|_square_|_teddy_|_tiger_|_tulips_|_wall_|_waterfall_|_zelda_},_name2,...,_nameN,_width={_>=0_|_0_(auto)_},_height_=_{_>=0_|_0_(auto)_} (no_arg)") ); return 0;;
		"v" | "-v" | "--v" | "+v") COMPREPLY=( $(compgen -W "level {_+_|_-_}") ); return 0;;
		"w" | "-w" | "--w" | "+w") COMPREPLY=( $(compgen -W "_width[%]>=-1,_height[%]>=-1,_normalization,_fullscreen,_pos_x[%],_pos_y[%],_title >") ); return 0;;
		"mv" | "-mv" | "--mv" | "+mv") COMPREPLY=( $(compgen -W "position[%] >") ); return 0;;
		"nm" | "-nm" | "--nm" | "+nm") COMPREPLY=( $(compgen -W ""name1","name2",... >") ); return 0;;
		"+" | "-+" | "--+" | "++") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"&" | "-&" | "--&" | "+&") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"<<" | "-<<" | "--<<" | "+<<") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		">>" | "->>" | "-->>" | "+>>") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"/" | "-/" | "--/" | "+/") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"==" | "-==" | "--==" | "+==") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		">=" | "->=" | "-->=" | "+>=") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		">" | "->" | "-->" | "+>") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"<=" | "-<=" | "--<=" | "+<=") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"<" | "-<" | "--<" | "+<") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"m/" | "-m/" | "--m/" | "+m/") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"%" | "-%" | "--%" | "+%") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"m*" | "-m*" | "--m*" | "+m*") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"*" | "-*" | "--*" | "+*") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"!=" | "-!=" | "--!=" | "+!=") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"|" | "-|" | "--|" | "+|") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"^" | "-^" | "--^" | "+^") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"-" | "--" | "---" | "+-") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;;
		"c" | "-c" | "--c" | "+c") COMPREPLY=( $(compgen -W "{_value0[%]_|_[image0]_},{_value1[%]_|_[image1]_} [image] (no_arg)") ); return 0;;
		"f" | "-f" | "--f" | "+f") COMPREPLY=( $(compgen -W "value1,_value2,... [image] \'formula\'") ); return 0;;
		"ir" | "-ir" | "--ir" | "+ir") COMPREPLY=( $(compgen -W "min[%],max[%] >") ); return 0;;
		"n" | "-n" | "--n" | "+n") COMPREPLY=( $(compgen -W "{_value0[%]_|_[image0]_},{_value1[%]_|_[image1]_} [image]") ); return 0;;
		"=" | "-=" | "--=" | "+=") COMPREPLY=( $(compgen -W "value,_x[%],_y[%],_z[%],_c[%] >") ); return 0;;
		"ac" | "-ac" | "--ac" | "+ac") COMPREPLY=( $(compgen -W ""command",color_channels,_value_action={_0=none_|_1=cut_|_2=normalize_} >") ); return 0;;
		"fc" | "-fc" | "--fc" | "+fc") COMPREPLY=( $(compgen -W "col1,...,colN >") ); return 0;;
		"a" | "-a" | "--a" | "+a") COMPREPLY=( $(compgen -W "[image],axis,_centering axis,_centering") ); return 0;;
		"z" | "-z" | "--z" | "+z") COMPREPLY=( $(compgen -W "x0[%],x1[%],_boundary_conditions x0[%],y0[%],x1[%],y1[%],_boundary_conditions x0[%],y0[%],z0[%],x1[%],y1[%],z1[%],_boundary_conditions x0[%],y0[%],z0[%],c0[%],x1[%],y1[%],z1[%],c1[%],_boundary_conditions (no_arg)") ); return 0;;
		"r" | "-r" | "--r" | "+r") COMPREPLY=( $(compgen -W "[image],_interpolation,_boundary_conditions,_ax,_ay,_az,_ac {[image_w]_|_width>0[%]},_{[image_h]_|_height>0[%]},_{[image_d]_|_depth>0[%]},_{[image_s]_|_spectrum>0[%]},_interpolation,_boundary_conditions,_ax,_ay,_az,_ac (no_arg)") ); return 0;;
		"rr2d" | "-rr2d" | "--rr2d" | "+rr2d") COMPREPLY=( $(compgen -W "width>0,height>0,_mode={_0=inside_|_1=outside_|_2=padded_},0=<_interpolation<=6 >") ); return 0;;
		"r2dx" | "-r2dx" | "--r2dx" | "+r2dx") COMPREPLY=( $(compgen -W "width[%]>0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac >") ); return 0;;
		"r2dy" | "-r2dy" | "--r2dy" | "+r2dy") COMPREPLY=( $(compgen -W "height[%]>=0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac >") ); return 0;;
		"r3dx" | "-r3dx" | "--r3dx" | "+r3dx") COMPREPLY=( $(compgen -W "width[%]>0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac >") ); return 0;;
		"r3dy" | "-r3dy" | "--r3dy" | "+r3dy") COMPREPLY=( $(compgen -W "height[%]>0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac >") ); return 0;;
		"r3dz" | "-r3dz" | "--r3dz" | "+r3dz") COMPREPLY=( $(compgen -W "depth[%]>0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac >") ); return 0;;
		"s" | "-s" | "--s" | "+s") COMPREPLY=( $(compgen -W "{_x_|_y_|_z_|_c_}...{_x_|_y_|_z_|_c_},_split_mode keep_splitting_values={_+_|_-_},_{_x_|_y_|_z_|_c_}...{_x_|_y_|_z_|_c_},value1,_value2,... (no_arg)") ); return 0;;
		"y" | "-y" | "--y" | "+y") COMPREPLY=( $(compgen -W "_axis={_x_|_y_|_z_|_c_} >") ); return 0;;
		"b" | "-b" | "--b" | "+b") COMPREPLY=( $(compgen -W "std_deviation>=0[%],_boundary_conditions,_kernel axes,std_deviation>=0[%],_boundary_conditions,_kernel") ); return 0;;
		"g" | "-g" | "--g" | "+g") COMPREPLY=( $(compgen -W "{_x_|_y_|_z_}...{_x_|_y_|_z_},_scheme (no_arg)") ); return 0;;
		"j" | "-j" | "--j" | "+j") COMPREPLY=( $(compgen -W "[sprite],_x[%],_y[%],_z[%],_c[%],_opacity,_[opacity_mask],_max_opacity_mask >") ); return 0;;
		"j3d" | "-j3d" | "--j3d" | "+j3d") COMPREPLY=( $(compgen -W "[object3d],_x[%],_y[%],_z,_opacity,_rendering_mode,_is_double_sided={_0_|_1_},_is_zbuffer={_0_|_1_},_focale,_light_x,_light_y,_light_z,_specular_lightness,_specular_shininess >") ); return 0;;
		"t" | "-t" | "--t" | "+t") COMPREPLY=( $(compgen -W "text,_x[%],_y[%],_font_height[%]>=0,_opacity,_color1,... >") ); return 0;;
		"to" | "-to" | "--to" | "+to") COMPREPLY=( $(compgen -W "text,_x[%],_y[%],_font_height[%]>0,_outline>=0,_opacity,_color1,... >") ); return 0;;
		"+3d" | "-+3d" | "--+3d" | "++3d") COMPREPLY=( $(compgen -W "tx,_ty,_tz [object3d] (no_arg)") ); return 0;;
		"col3d" | "-col3d" | "--col3d" | "+col3d") COMPREPLY=( $(compgen -W "R,_G,_B,_opacity >") ); return 0;;
		"/3d" | "-/3d" | "--/3d" | "+/3d") COMPREPLY=( $(compgen -W "factor factor_x,factor_y,_factor_z") ); return 0;;
		"db3d" | "-db3d" | "--db3d" | "+db3d") COMPREPLY=( $(compgen -W "_is_double_sided={_0_|_1_} >") ); return 0;;
		"f3d" | "-f3d" | "--f3d" | "+f3d") COMPREPLY=( $(compgen -W "focale >") ); return 0;;
		"l3d" | "-l3d" | "--l3d" | "+l3d") COMPREPLY=( $(compgen -W "position_x,position_y,position_z [texture] (no_arg)") ); return 0;;
		"m3d" | "-m3d" | "--m3d" | "+m3d") COMPREPLY=( $(compgen -W "_mode >") ); return 0;;
		"md3d" | "-md3d" | "--md3d" | "+md3d") COMPREPLY=( $(compgen -W "_mode >") ); return 0;;
		"*3d" | "-*3d" | "--*3d" | "+*3d") COMPREPLY=( $(compgen -W "factor factor_x,factor_y,_factor_z") ); return 0;;
		"o3d" | "-o3d" | "--o3d" | "+o3d") COMPREPLY=( $(compgen -W "_opacity >") ); return 0;;
		"p3d" | "-p3d" | "--p3d" | "+p3d") COMPREPLY=( $(compgen -W "mode >") ); return 0;;
		"r3d" | "-r3d" | "--r3d" | "+r3d") COMPREPLY=( $(compgen -W "u,v,w,angle >") ); return 0;;
		"sl3d" | "-sl3d" | "--sl3d" | "+sl3d") COMPREPLY=( $(compgen -W "value>=0 >") ); return 0;;
		"ss3d" | "-ss3d" | "--ss3d" | "+ss3d") COMPREPLY=( $(compgen -W "value>=0 >") ); return 0;;
		"s3d" | "-s3d" | "--s3d" | "+s3d") COMPREPLY=( $(compgen -W "_keep_shared_data={_0_|_1_} >") ); return 0;;
		"-3d" | "--3d" | "---3d" | "+-3d") COMPREPLY=( $(compgen -W "tx,_ty,_tz >") ); return 0;;
		"t3d" | "-t3d" | "--t3d" | "+t3d") COMPREPLY=( $(compgen -W "[ind_texture],_[ind_coords] >") ); return 0;;
		"ap" | "-ap" | "--ap" | "+ap") COMPREPLY=( $(compgen -W ""command" >") ); return 0;;
		"apc" | "-apc" | "--apc" | "+apc") COMPREPLY=( $(compgen -W ""command" >") ); return 0;;
		"apo" | "-apo" | "--apo" | "+apo") COMPREPLY=( $(compgen -W ""command",overlap[%],nb_threads={_0=auto_|_1_|_2_|_4_|_8_|_16_} >") ); return 0;;
		"at" | "-at" | "--at" | "+at") COMPREPLY=( $(compgen -W ""command",_tile_width[%]>0,_tile_height[%]>0,_tile_depth[%]>0,_overlap_width[%]>=0,_overlap_height[%]>=0,_overlap_depth[%]>=0,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;;
		"x" | "-x" | "--x" | "+x") COMPREPLY=( $(compgen -W "_is_verbose={_0_|_1_},"command" >") ); return 0;;
		"u" | "-u" | "--u" | "+u") COMPREPLY=( $(compgen -W "status_string >") ); return 0;;
		"frame" | "-frame" | "--frame" | "+frame") COMPREPLY=( $(compgen -W "size_x[%],_size_y[%],_col1,...,_colN >") ); return 0;;
	esac
 
	COMPREPLY=( $(compgen -W "$opts" -- "$cur") ) 
	_filedir 
} 
complete -F _gmic -o filenames gmic