17 skills found
quantum5 / Win2xcurwin2xcur is a tool that converts cursors from Windows format (*.cur, *.ani) to Xcursor format. It also contains x2wincur which does the opposite.
CNTRUN / Termux Commandchar const* const commands[] = { "aapt", " aapt", " zipalign", "abduco", " abduco", "abook", " abook", "alpine", " alpine", " pico", " pilot", " rpdump", " rpload", "angband", " angband", "apache2", " ab", " apachectl", " apxs", " checkgid", " dbmmanage", " envvars-std", " fcgistarter", " htcacheclean", " htdbm", " htdigest", " htpasswd", " httpd", " httxt2dbm", " logresolve", " rotatelogs", " suexec", "apr-dev", " apr-1-config", "apr-util-dev", " apu-1-config", "apt", " apt", " apt-cache", " apt-config", " apt-get", " apt-key", " apt-mark", "aria2", " aria2c", "atomicparsley", " AtomicParsley", "attr", " attr", " getfattr", " setfattr", "autossh", " autossh", "bash", " bash", "bc", " bc", " dc", "binutils", " addr2line", " ar", " arm-linux-androideabi-ar", " arm-linux-androideabi-ld", " arm-linux-androideabi-nm", " arm-linux-androideabi-objdump", " arm-linux-androideabi-ranlib", " arm-linux-androideabi-readelf", " arm-linux-androideabi-strip", " as", " c++filt", " elfedit", " gprof", " ld", " ldd", " nm", " objcopy", " objdump", " ranlib", " readelf", " size", " strings", " strip", "bison", " bison", " yacc", "blogc", " blogc", " blogc-make", " blogc-runserver", "bmon", " bmon", "brogue", " brogue", "bs1770gain", " bs1770gain", "bsdtar", " bsdcat", " bsdcpio", " bsdtar", "busybox", " busybox", " env", "bvi", " bmore", " bvedit", " bvi", " bview", "bzip2", " bunzip2", " bzcat", " bzcmp", " bzdiff", " bzgrep", " bzip2", " bzip2recover", " bzless", " bzmore", "cadaver", " cadaver", "calcurse", " calcurse", " calcurse-caldav", " calcurse-upgrade", "cava", " cava", "cboard", " cboard", "ccache", " ccache", "ccrypt", " ccat", " ccdecrypt", " ccencrypt", " ccguess", " ccrypt", "cgdb", " cgdb", "clang", " arm-linux-androideabi-clang", " arm-linux-androideabi-clang++", " arm-linux-androideabi-cpp", " arm-linux-androideabi-g++", " arm-linux-androideabi-gcc", " c++", " cc", " clang", " clang++", " clang-5.0", " clang-cl", " clang-cpp", " clang-format", " clang-rename", " cpp", " g++", " gcc", "cmake", " cmake", " cpack", " ctest", "cmake-curses-gui", " ccmake", "cmark", " cmark", "cmatrix", " cmatrix", "cmus", " cmus", " cmus-remote", "coreutils", " [", " b2sum", " base32", " base64", " basename", " cat", " chcon", " chgrp", " chmod", " chown", " cksum", " comm", " coreutils", " cp", " csplit", " cut", " date", " dd", " dir", " dircolors", " dirname", " du", " echo", " expand", " expr", " factor", " false", " fmt", " fold", " groups", " head", " id", " install", " join", " kill", " link", " ln", " logname", " ls", " md5sum", " mkdir", " mkfifo", " mknod", " mktemp", " mv", " nice", " nl", " nohup", " nproc", " numfmt", " od", " paste", " pathchk", " pr", " printenv", " printf", " ptx", " pwd", " readlink", " realpath", " rm", " rmdir", " runcon", " seq", " sha1sum", " sha224sum", " sha256sum", " sha384sum", " sha512sum", " shred", " shuf", " sleep", " sort", " split", " stat", " stdbuf", " stty", " sum", " sync", " tac", " tail", " tee", " test", " timeout", " touch", " tr", " true", " truncate", " tsort", " tty", " uname", " unexpand", " uniq", " unlink", " vdir", " wc", " whoami", " yes", "corkscrew", " corkscrew", "cpio", " cpio", "cppi", " cppi", "cscope", " cscope", " ocs", "ctags", " ctags", " readtags", "curl", " curl", "curseofwar", " curseofwar", "cvs", " cvs", " rcs2log", "daemonize", " daemonize", "darkhttpd", " darkhttpd", "dash", " dash", " sh", "datamash", " datamash", "db", " db_archive", " db_checkpoint", " db_convert", " db_deadlock", " db_dump", " db_hotbackup", " db_load", " db_log_verify", " db_printlog", " db_recover", " db_replicate", " db_stat", " db_tuner", " db_upgrade", " db_verify", "dcraw", " dcraw", "ddrescue", " ddrescue", " ddrescuelog", "debianutils", " add-shell", " ischroot", " remove-shell", " run-parts", " savelog", " tempfile", " which", "dialog", " dialog", " whiptail", "diffutils", " cmp", " diff", " diff3", " sdiff", "direvent", " direvent", "dirmngr", " dirmngr", " dirmngr-client", "dnsutils", " dig", " host", " nslookup", " nsupdate", "dos2unix", " dos2unix", " mac2unix", " unix2dos", " unix2mac", "dpkg", " dpkg", " dpkg-deb", " dpkg-divert", " dpkg-genbuildinfo", " dpkg-query", " dpkg-split", " dpkg-trigger", "dropbear", " dbclient", " dropbear", " dropbearconvert", " dropbearkey", " dropbearmulti", "dvtm", " dvtm", " dvtm-status", "ed", " ed", " red", "elfutils", " eu-addr2line", " eu-elfcmp", " eu-elfcompress", " eu-elflint", " eu-findtextrel", " eu-make-debug-archive", " eu-nm", " eu-objdump", " eu-ranlib", " eu-readelf", " eu-size", " eu-stack", " eu-strings", " eu-strip", " eu-unstrip", "elinks", " elinks", "emacs", " ebrowse", " emacs", " emacs-25.3", " emacsclient", " etags", "erlang", " ct_run", " dialyzer", " epmd", " erl", " erlc", " escript", " run_erl", " to_erl", "espeak", " espeak", "expect", " autoexpect", " expect", " timed-read", " timed-run", " unbuffer", "fdupes", " fdupes", "ffmpeg", " ffmpeg", " ffprobe", "fftw-dev", " fftw-wisdom", " fftw-wisdom-to-conf", " fftwf-wisdom", " fftwl-wisdom", "figlet", " chkfont", " figlet", " figlist", " showfigfonts", "file", " file", "finch", " finch", "findutils", " find", " xargs", "fish", " column", " fish", " fish_indent", " fish_key_reader", "flac", " flac", " metaflac", "flex", " flex", " flex++", "fontconfig-utils", " fc-cache", " fc-cat", " fc-list", " fc-match", " fc-pattern", " fc-query", " fc-scan", " fc-validate", "fortune", " fortune", "fossil", " fossil", "freetype-dev", " freetype-config", "frobtads", " frob", " t3make", " tadsc", "frotz", " frotz", " zgames", "fsmon", " fsmon", "fwknop", " fwknop", "fzf", " fzf", " fzf-tmux", "gawk", " awk", " gawk", "gbt", " gbt", "gcal", " gcal", " gcal2txt", " tcal", " txt2gcal", "gdb", " gcore", " gdb", " gdbserver", "gdbm", " gdbm_dump", " gdbm_load", " gdbmtool", "gdk-pixbuf", " gdk-pixbuf-csource", " gdk-pixbuf-pixdata", " gdk-pixbuf-query-loaders", "gegl", " gcut", " gegl", " gegl-imgcmp", "getconf", " getconf", "gettext", " autopoint", " envsubst", " gettext", " gettext.sh", " gettextize", " msgattrib", " msgcat", " msgcmp", " msgcomm", " msgconv", " msgen", " msgexec", " msgfilter", " msgfmt", " msggrep", " msginit", " msgmerge", " msgunfmt", " msguniq", " ngettext", " recode-sr-latin", " xgettext", "ghostscript", " dvipdf", " eps2eps", " gs", " gsbj", " gsdj", " gsdj500", " gslj", " gslp", " gsnd", " lprsetup.sh", " pdf2dsc", " pdf2ps", " pf2afm", " pfbtopfa", " pphs", " printafm", " ps2ascii", " ps2epsi", " ps2pdf", " ps2pdf12", " ps2pdf13", " ps2pdf14", " ps2pdfwr", " ps2ps", " ps2ps2", " unix-lpr.sh", "gifsicle", " gifdiff", " gifsicle", "git", " git", " git-receive-pack", " git-upload-archive", " git-upload-pack", "glib-bin", " gapplication", " gdbus", " gio", " gio-querymodules", " glib-compile-resources", " glib-compile-schemas", " glib-genmarshal", " glib-mkenums", " gobject-query", " gresource", " gsettings", " gtester", "global", " global", " globash", " gozilla", " gtags", " gtags-cscope", " htags", " htags-server", "glulxe", " glulxe", "gmic", " gmic", "gnuchess", " gnuchess", "gnugo", " gnugo", "gnuit", " .gitaction", " gitaction", " gitdpkgname", " gitfm", " gitkeys", " gitmkdirs", " gitmount", " gitps", " gitregrep", " gitrfgrep", " gitrgrep", " gitunpack", " gitview", " gitwhich", " gitwipe", " gitxgrep", "gnupg", " gpg", " gpg-zip", " gpgsplit", "gnupg2", " addgnupghome", " applygnupgdefaults", " gpg-agent", " gpg-connect-agent", " gpg2", " gpgconf", " gpgparsemail", " gpgscm", " gpgsm", " gpgtar", " gpgv2", " kbxutil", " watchgnupg", "gnuplot", " gnuplot", "gnushogi", " gnushogi", "gnutls", " certtool", " gnutls-cli", " gnutls-cli-debug", " gnutls-serv", " ocsptool", " psktool", " srptool", "golang", " go", " gofmt", "gperf", " gperf", "gpgme", " gpgme-tool", "gpgme-dev", " gpgme-config", "gpgv", " gpgv", "gpsbabel", " gpsbabel", "graphicsmagick", " gm", "graphviz", " acyclic", " bcomps", " ccomps", " circo", " cluster", " diffimg", " dijkstra", " dot", " dot2gxl", " dot_builtins", " edgepaint", " fdp", " gc", " gml2gv", " graphml2gv", " gv2gml", " gv2gxl", " gvcolor", " gvgen", " gvmap", " gvmap.sh", " gvpack", " gvpr", " gxl2dot", " gxl2gv", " mm2gv", " neato", " nop", " osage", " patchwork", " prune", " sccmap", " sfdp", " tred", " twopi", " unflatten", "greed", " greed", "grep", " egrep", " fgrep", " grep", "gst-plugins-base", " gst-device-monitor-1.0", " gst-discoverer-1.0", " gst-play-1.0", "gstreamer", " gst-inspect-1.0", " gst-launch-1.0", " gst-stats-1.0", " gst-typefind-1.0", "gtypist", " gtypist", "gzip", " gunzip", " gzexe", " gzip", " uncompress", " zcat", " zcmp", " zdiff", " zegrep", " zfgrep", " zforce", " zgrep", " zless", " zmore", " znew", "harfbuzz-utils", " hb-ot-shape-closure", " hb-shape", " hb-view", "hashdeep", " hashdeep", " md5deep", " sha1deep", " sha256deep", " tigerdeep", " whirlpooldeep", "hexcurse", " hexcurse", "heyu", " heyu", "hfsutils", " hattrib", " hcd", " hcopy", " hdel", " hdir", " hformat", " hfsutil", " hls", " hmkdir", " hmount", " hpwd", " hrename", " hrmdir", " humount", " hvol", "htop", " htop", "httping", " httping", "hub", " hub", "hunspell", " affixcompress", " analyze", " chmorph", " hunspell", " hunzip", " hzip", " ispellaff2myspell", " makealias", " munch", " unmunch", " wordforms", " wordlist2hunspell", "hydra", " dpl4hydra.sh", " hydra", " hydra-wizard.sh", " pw-inspector", "icecast", " icecast", "iconv", " iconv", "icu-devtools", " derb", " escapesrc", " genbrk", " genccode", " gencfu", " gencmn", " gencnval", " gendict", " gennorm2", " genrb", " gensprep", " icu-config", " icuinfo", " icupkg", " makeconv", " pkgdata", " uconv", "imagemagick", " animate", " compare", " composite", " conjure", " convert", " display", " identify", " import", " magick", " magick-script", " mogrify", " montage", " stream", "imgflo", " imgflo", " imgflo-graphinfo", " imgflo-runtime", "inetutils", " dnsdomainname", " ftp", " logger", " telnet", " tftp", " whois", "inotify-tools", " inotifywait", " inotifywatch", "iperf3", " iperf3", "ired", " bdiff", " ired", " vired", "irssi", " irssi", "jhead", " jhead", "joe", " jmacs", " joe", " jpico", " jstar", " rjoe", "jq", " jq", "jupp", " jmacs", " joe", " jpico", " jstar", " jupp", " rjoe", "kona", " k", "krb5", " compile_et", " gss-client", " gss-server", " k5srvutil", " kadmin", " kadmin.local", " kadmind", " kdb5_util", " kdestroy", " kinit", " klist", " kpasswd", " kprop", " kpropd", " kproplog", " krb5-config", " krb5-send-pr", " krb5kdc", " ksu", " kswitch", " ktutil", " kvno", " sclient", " sim_client", " sim_server", " sserver", " uuclient", " uuserver", "ldc", " dub", " ldc-build-runtime", " ldc2", " ldmd2", " rdmd", "ldns-dev", " ldns-config", "ledger", " ledger", "leptonica", " convertfilestopdf", " convertfilestops", " convertformat", " convertsegfilestopdf", " convertsegfilestops", " converttopdf", " converttops", " fileinfo", " xtractprotos", "less", " less", " lessecho", " lesskey", "lftp", " lftp", " lftpget", "libassuan-dev", " libassuan-config", "libcaca", " caca-config", " cacaclock", " cacademo", " cacafire", " cacaplay", " cacaserver", " cacaview", " img2txt", "libcairo", " cairo-trace", "libcroco", " croco-0.6-config", " csslint-0.6", "libcurl-dev", " curl-config", "libgcrypt", " dumpsexp", " hmac256", " libgcrypt-config", " mpicalc", "libgd", " annotate", " bdftogd", " gd2copypal", " gd2togif", " gd2topng", " gdcmpgif", " gdlib-config", " gdparttopng", " gdtopng", " giftogd2", " pngtogd", " pngtogd2", " webpng", "libgpg-error", " gpg-error", " gpg-error-config", "libgrpc", " check_epollexclusive", " gen_hpack_tables", " gen_legal_metadata_characters", " gen_percent_encoding_tables", " grpc_cpp_plugin", " grpc_create_jwt", " grpc_csharp_plugin", " grpc_node_plugin", " grpc_objective_c_plugin", " grpc_php_plugin", " grpc_print_google_default_creds_token", " grpc_python_plugin", " grpc_ruby_plugin", " grpc_verify_jwt", "libjasper-utils", " imgcmp", " imginfo", " jasper", "libjpeg-turbo-progs", " cjpeg", " djpeg", " jpegtran", " rdjpgcom", " tjbench", " wrjpgcom", "libksba-dev", " ksba-config", "libnpth", " npth-config", "liboggz", " oggz", " oggz-chop", " oggz-codecs", " oggz-comment", " oggz-diff", " oggz-dump", " oggz-info", " oggz-known-codecs", " oggz-merge", " oggz-rip", " oggz-scan", " oggz-sort", " oggz-validate", "libotr", " otr_mackey", " otr_modify", " otr_parse", " otr_readforge", " otr_remac", " otr_sesskeys", "libpng-dev", " libpng-config", " libpng16-config", "librsvg", " rsvg-convert", "libtiff-utils", " fax2ps", " fax2tiff", " pal2rgb", " ppm2tiff", " raw2tiff", " tiff2bw", " tiff2pdf", " tiff2ps", " tiff2rgba", " tiffcmp", " tiffcp", " tiffcrop", " tiffdither", " tiffdump", " tiffinfo", " tiffmedian", " tiffset", " tiffsplit", "libtool", " libtool", " libtoolize", "libxapian-dev", " xapian-config", "libxml2-dev", " xml2-config", "libxml2-utils", " xmlcatalog", " xmllint", "libxslt-dev", " xslt-config", "libzmq", " curve_keygen", "lighttpd", " lighttpd", "littlecms-utils", " jpgicc", " linkicc", " psicc", " tificc", " transicc", "lld", " ld.lld", " lld", " lld-link", "llvm", " llc", " lli", " llvm-ar", " llvm-as", " llvm-bcanalyzer", " llvm-c-test", " llvm-cat", " llvm-config", " llvm-cov", " llvm-cvtres", " llvm-cxxdump", " llvm-cxxfilt", " llvm-diff", " llvm-dis", " llvm-dlltool", " llvm-dsymutil", " llvm-dwarfdump", " llvm-dwp", " llvm-extract", " llvm-lib", " llvm-link", " llvm-lto", " llvm-lto2", " llvm-mc", " llvm-mcmarkup", " llvm-modextract", " llvm-mt", " llvm-nm", " llvm-objdump", " llvm-opt-report", " llvm-pdbutil", " llvm-profdata", " llvm-ranlib", " llvm-readelf", " llvm-readobj", " llvm-rtdyld", " llvm-size", " llvm-split", " llvm-stress", " llvm-strings", " llvm-symbolizer", " llvm-xray", " obj2yaml", " opt", " verify-uselistorder", " yaml2obj", "ltrace", " ltrace", "lua", " lua", " luac", "lynx", " lynx", "lzip", " lzip", "lzop", " lzop", "m4", " m4", "macchanger", " macchanger", "make", " make", "man", " apropos", " demandoc", " makewhatis", " man", " mandoc", " soelim", " whatis", "mariadb", " aria_chk", " aria_dump_log", " aria_ftdump", " aria_pack", " aria_read_log", " innochecksum", " mariadb_config", " msql2mysql", " my_print_defaults", " myisam_ftdump", " myisamchk", " myisamlog", " myisampack", " mysql", " mysql_client_test", " mysql_config", " mysql_convert_table_format", " mysql_find_rows", " mysql_fix_extensions", " mysql_install_db", " mysql_plugin", " mysql_secure_installation", " mysql_setpermission", " mysql_tzinfo_to_sql", " mysql_upgrade", " mysql_waitpid", " mysqlaccess", " mysqladmin", " mysqlbinlog", " mysqlcheck", " mysqld", " mysqld_multi", " mysqld_safe", " mysqld_safe_helper", " mysqldump", " mysqldumpslow", " mysqlhotcopy", " mysqlimport", " mysqlshow", " mysqlslap", " mytop", " perror", " replace", " resolve_stack_dump", " resolveip", "mathomatic", " mathomatic", "mc", " mc", " mcdiff", " mcedit", " mcview", "megatools", " megacopy", " megadf", " megadl", " megaget", " megals", " megamkdir", " megaput", " megareg", " megarm", "memcached", " memcached", "micro", " micro", "minicom", " ascii-xfr", " minicom", " runscript", " xminicom", "mlocate", " locate", " updatedb", "moon-buggy", " moon-buggy", "moria", " moria", "mosh", " mosh", " mosh-client", " mosh-server", " mosh.pl", "mosquitto", " mosquitto", " mosquitto_passwd", " mosquitto_pub", " mosquitto_sub", "mp3splt", " mp3splt", "mpc", " mpc", "mpd", " mpd", "mpv", " mpv", "mtools", " amuFormat.sh", " lz", " mattrib", " mbadblocks", " mcat", " mcd", " mcheck", " mclasserase", " mcomp", " mcopy", " mdel", " mdeltree", " mdir", " mdu", " mformat", " minfo", " mkmanifest", " mlabel", " mmd", " mmount", " mmove", " mpartition", " mrd", " mren", " mshortname", " mshowfat", " mtools", " mtoolstest", " mtype", " mxtar", " mzip", " tgz", " uz", "multitail", " multitail", "mutt", " mutt", " pgpewrap", " pgpring", " smime_keys", "nano", " nano", "ncdc", " ncdc", "ncdu", " ncdu", "ncmpcpp", " ncmpcpp", "ncurses-dev", " ncursesw6-config", "ncurses-utils", " clear", " infocmp", " reset", " tabs", " tic", " toe", " tput", " tset", "ne", " ne", "neovim", " nvim", "net-tools", " arp", " ifconfig", " ipmaddr", " iptunnel", " mii-tool", " nameif", " netstat", " plipconfig", " rarp", " route", " slattach", "netcat", " nc", " ncat", " netcat", "netpbm", " 411toppm", " anytopnm", " asciitopgm", " atktopbm", " avstopam", " bioradtopgm", " bmptopnm", " bmptoppm", " brushtopbm", " cameratopam", " cistopbm", " cmuwmtopbm", " ddbugtopbm", " escp2topbm", " eyuvtoppm", " fiascotopnm", " fitstopnm", " fstopgm", " g3topbm", " gemtopbm", " gemtopnm", " giftopnm", " gouldtoppm", " hdifftopam", " hipstopgm", " hpcdtoppm", " icontopbm", " ilbmtoppm", " imgtoppm", " infotopam", " jbigtopnm", " jpeg2ktopam", " jpegtopnm", " leaftoppm", " lispmtopgm", " macptopbm", " manweb", " mdatopbm", " mgrtopbm", " mrftopbm", " mtvtoppm", " neotoppm", " netpbm-config", " palmtopnm", " pamaddnoise", " pamarith", " pambackground", " pambayer", " pamchannel", " pamcomp", " pamcrater", " pamcut", " pamdeinterlace", " pamdepth", " pamdice", " pamditherbw", " pamedge", " pamendian", " pamenlarge", " pamexec", " pamfile", " pamfix", " pamfixtrunc", " pamflip", " pamfunc", " pamgauss", " pamgradient", " pamlookup", " pammasksharpen", " pammixinterlace", " pammosaicknit", " pamoil", " pampaintspill", " pamperspective", " pampick", " pampop9", " pamrecolor", " pamrgbatopng", " pamrubber", " pamscale", " pamseq", " pamshadedrelief", " pamsharpmap", " pamsharpness", " pamsistoaglyph", " pamslice", " pamsplit", " pamstack", " pamstereogram", " pamstretch", " pamstretch-gen", " pamsumm", " pamsummcol", " pamtable", " pamthreshold", " pamtilt", " pamtoavs", " pamtodjvurle", " pamtofits", " pamtogif", " pamtohdiff", " pamtohtmltbl", " pamtojpeg2k", " pamtompfont", " pamtooctaveimg", " pamtopam", " pamtopdbimg", " pamtopfm", " pamtopng", " pamtopnm", " pamtosrf", " pamtosvg", " pamtotga", " pamtotiff", " pamtouil", " pamtowinicon", " pamtoxvmini", " pamundice", " pamunlookup", " pamvalidate", " pamwipeout", " pbmclean", " pbmlife", " pbmmake", " pbmmask", " pbmminkowski", " pbmpage", " pbmpscale", " pbmreduce", " pbmtext", " pbmtextps", " pbmto10x", " pbmto4425", " pbmtoascii", " pbmtoatk", " pbmtobbnbg", " pbmtocis", " pbmtocmuwm", " pbmtodjvurle", " pbmtoepsi", " pbmtoepson", " pbmtoescp2", " pbmtog3", " pbmtogem", " pbmtogo", " pbmtoibm23xx", " pbmtoicon", " pbmtolj", " pbmtoln03", " pbmtolps", " pbmtomacp", " pbmtomatrixorbital", " pbmtomda", " pbmtomgr", " pbmtomrf", " pbmtonokia", " pbmtopgm", " pbmtopi3", " pbmtopk", " pbmtoplot", " pbmtoppa", " pbmtopsg3", " pbmtoptx", " pbmtosunicon", " pbmtowbmp", " pbmtox10bm", " pbmtoxbm", " pbmtoybm", " pbmtozinc", " pbmupc", " pc1toppm", " pcdovtoppm", " pcxtoppm", " pdbimgtopam", " pfmtopam", " pgmabel", " pgmbentley", " pgmcrater", " pgmdeshadow", " pgmedge", " pgmenhance", " pgmhist", " pgmkernel", " pgmmake", " pgmmedian", " pgmminkowski", " pgmmorphconv", " pgmnoise", " pgmnorm", " pgmoil", " pgmramp", " pgmslice", " pgmtexture", " pgmtofs", " pgmtolispm", " pgmtopbm", " pgmtopgm", " pgmtoppm", " pgmtosbig", " pgmtost4", " pi1toppm", " pi3topbm", " picttoppm", " pjtoppm", " pktopbm", " pngtopam", " pngtopnm", " pnmalias", " pnmarith", " pnmcat", " pnmcolormap", " pnmcomp", " pnmconvol", " pnmcrop", " pnmcut", " pnmdepth", " pnmenlarge", " pnmfile", " pnmflip", " pnmgamma", " pnmhisteq", " pnmhistmap", " pnmindex", " pnminterp", " pnminvert", " pnmmargin", " pnmmercator", " pnmmontage", " pnmnlfilt", " pnmnoraw", " pnmnorm", " pnmpad", " pnmpaste", " pnmpsnr", " pnmquant", " pnmquantall", " pnmremap", " pnmrotate", " pnmscale", " pnmscalefixed", " pnmshear", " pnmsmooth", " pnmsplit", " pnmstitch", " pnmtile", " pnmtoddif", " pnmtofiasco", " pnmtofits", " pnmtojbig", " pnmtojpeg", " pnmtopalm", " pnmtopclxl", " pnmtoplainpnm", " pnmtopng", " pnmtopnm", " pnmtops", " pnmtorast", " pnmtorle", " pnmtosgi", " pnmtosir", " pnmtotiff", " pnmtotiffcmyk", " pnmtoxwd", " ppm3d", " ppmbrighten", " ppmchange", " ppmcie", " ppmcolormask", " ppmcolors", " ppmdcfont", " ppmddumpfont", " ppmdim", " ppmdist", " ppmdither", " ppmdmkfont", " ppmdraw", " ppmfade", " ppmflash", " ppmforge", " ppmglobe", " ppmhist", " ppmlabel", " ppmmake", " ppmmix", " ppmnorm", " ppmntsc", " ppmpat", " ppmquant", " ppmquantall", " ppmrainbow", " ppmrelief", " ppmrough", " ppmshadow", " ppmshift", " ppmspread", " ppmtoacad", " ppmtoapplevol", " ppmtoarbtxt", " ppmtoascii", " ppmtobmp", " ppmtoeyuv", " ppmtogif", " ppmtoicr", " ppmtoilbm", " ppmtojpeg", " ppmtoleaf", " ppmtolj", " ppmtomap", " ppmtomitsu", " ppmtompeg", " ppmtoneo", " ppmtopcx", " ppmtopgm", " ppmtopi1", " ppmtopict", " ppmtopj", " ppmtopjxl", " ppmtoppm", " ppmtopuzz", " ppmtorgb3", " ppmtosixel", " ppmtospu", " ppmtoterm", " ppmtotga", " ppmtouil", " ppmtowinicon", " ppmtoxpm", " ppmtoyuv", " ppmtoyuvsplit", " ppmtv", " ppmwheel", " psidtopgm", " pstopnm", " qrttoppm", " rasttopnm", " rawtopgm", " rawtoppm", " rgb3toppm", " rlatopam", " rletopnm", " sbigtopgm", " sgitopnm", " sirtopnm", " sldtoppm", " spctoppm", " spottopgm", " sputoppm", " srftopam", " st4topgm", " sunicontopnm", " svgtopam", " tgatoppm", " thinkjettopbm", " tifftopnm", " wbmptopbm", " winicontopam", " winicontoppm", " xbmtopbm", " ximtoppm", " xpmtoppm", " xvminitoppm", " xwdtopnm", " ybmtopbm", " yuvsplittoppm", " yuvtoppm", " yuy2topam", " zeisstopnm", "nettle", " nettle-hash", " nettle-lfib-stream", " nettle-pbkdf2", " pkcs1-conv", " sexp-conv", "newsboat", " newsboat", " podboat", "nginx", " nginx", "ninja", " ninja", "nmap", " nmap", " nping", "nodejs", " node", " npm", " npx", "nodejs-current", " node", " npm", " npx", "notmuch", " notmuch", "nyancat", " nyancat", "nzbget", " nzbget", "oathtool", " oathtool", " pskctool", "ocrad", " ocrad", "openjpeg-tools", " opj_compress", " opj_decompress", " opj_dump", "openssh", " scp", " sftp", " source-ssh-agent", " ssh", " ssh-add", " ssh-agent", " ssh-copy-id", " ssh-keygen", " ssh-keyscan", " ssha", " sshd", "openssl-tool", " openssl", "optipng", " optipng", "opus-tools", " opusdec", " opusenc", " opusinfo", "p7zip", " 7z", " 7za", " 7zr", "pango", " pango-view", "par2", " par2", " par2create", " par2repair", " par2verify", "patch", " patch", "patchelf", " patchelf", "pcre-dev", " pcre-config", "pcre2-dev", " pcre2-config", "perl", " corelist", " cpan", " enc2xs", " encguess", " h2ph", " h2xs", " instmodsh", " json_pp", " libnetcfg", " perl", " perlbug", " perldoc", " perlivp", " perlthanks", " piconv", " pl2pm", " pod2html", " pod2man", " pod2text", " pod2usage", " podchecker", " podselect", " prove", " ptar", " ptardiff", " ptargrep", " shasum", " splain", " xsubpp", " zipdetails", "pforth", " pforth", "php", " phar", " phar.phar", " php", " php-cgi", " php-config", " phpdbg", " phpize", "php-fpm", " php-fpm", "pick", " pick", "picolisp", " picolisp", " pil", "pinentry", " pinentry", " pinentry-curses", "pkg-config", " pkg-config", "play-audio", " play-audio", "pngquant", " pngquant", "poppler", " pdfdetach", " pdffonts", " pdfimages", " pdfinfo", " pdfseparate", " pdftocairo", " pdftohtml", " pdftoppm", " pdftops", " pdftotext", " pdfunite", "postgresql", " clusterdb", " createdb", " createuser", " dropdb", " dropuser", " initdb", " pg_archivecleanup", " pg_basebackup", " pg_config", " pg_controldata", " pg_ctl", " pg_dump", " pg_dumpall", " pg_isready", " pg_receivewal", " pg_recvlogical", " pg_resetwal", " pg_restore", " pg_rewind", " pg_test_fsync", " pg_test_timing", " pg_upgrade", " pg_waldump", " pgbench", " postgres", " postmaster", " psql", " reindexdb", " vacuumdb", "potrace", " mkbitmap", " potrace", "privoxy", " privoxy", "procps", " free", " pgrep", " pidof", " pkill", " pmap", " ps", " pwdx", " slabtop", " sysctl", " tload", " top", " uptime", " vmstat", " w", " watch", "profanity", " profanity", "proot", " proot", " termux-chroot", "protobuf", " protoc", "psmisc", " fuser", " killall", " peekfd", " prtstat", " pstree", "pulseaudio", " esdcompat", " pacat", " pacmd", " pactl", " pasuspender", " pulseaudio", "pure-ftpd", " pure-authd", " pure-ftpd", " pure-ftpwho", " pure-mrtginfo", " pure-pw", " pure-pwconvert", " pure-quotacheck", " pure-statsdecode", " pure-uploadscript", "pv", " pv", "pwgen", " pwgen", "python", " 2to3", " 2to3-3.6", " pydoc3", " pydoc3.6", " python", " python3", " python3-config", " python3.6", " python3.6-config", " python3.6m-config", " pyvenv", " pyvenv-3.6", "python2", " idle", " pydoc", " python-config", " python2", " python2-config", " python2.7", " python2.7-config", " smtpd.py", "qalc", " qalc", "qpdf", " fix-qdf", " qpdf", " zlib-flate", "radare2", " r2", " r2agent", " r2pm", " rabin2", " radare2", " radiff2", " rafind2", " ragg2", " ragg2-cc", " rahash2", " rarun2", " rasm2", " rax2", "ragel", " ragel", "rcs", " ci", " co", " ident", " merge", " rcs", " rcsclean", " rcsdiff", " rcsmerge", " rlog", "rdiff", " rdiff", "redir", " redir", "redis", " redis-benchmark", " redis-check-aof", " redis-check-rdb", " redis-cli", " redis-sentinel", " redis-server", "remind", " rem", " rem2ps", " remind", "rgbds", " rgbasm", " rgbfix", " rgbgfx", " rgblink", "rlwrap", " rlwrap", "rsync", " rsync", "rtmpdump", " rtmpdump", " rtmpgw", " rtmpsrv", " rtmpsuck", "ruby", " erb", " gem", " irb", " rake", " rdoc", " ruby", "screen", " screen", " screen-4.6.2", "scrypt", " scrypt", "sed", " sed", "sensible-utils", " select-editor", " sensible-browser", " sensible-editor", " sensible-pager", "sharutils", " shar", " unshar", " uudecode", " uuencode", "silversearcher-ag", " ag", "sl", " sl", "socat", " filan", " procan", " socat", "sox", " play", " rec", " sox", " soxi", "sqlite", " sqlite3", "squid", " purge", " squid", " squidclient", "sshpass", " sshpass", "sslscan", " sslscan", "stag", " stag", "strace", " strace", " strace-log-merge", "stunnel", " stunnel", "subversion", " svn", " svnadmin", " svnbench", " svndumpfilter", " svnfsfs", " svnlook", " svnmucc", " svnrdump", " svnserve", " svnsync", " svnversion", "syncthing", " syncthing", "tar", " tar", "tasksh", " tasksh", "taskwarrior", " task", "tcl", " sqlite3_analyzer", " tclsh", " tclsh8.6", "tcsh", " tcsh", "teckit", " sfconv", " teckit_compile", " txtconv", "termux-api", " termux-audio-info", " termux-battery-status", " termux-camera-info", " termux-camera-photo", " termux-clipboard-get", " termux-clipboard-set", " termux-contact-list", " termux-dialog", " termux-download", " termux-infrared-frequencies", " termux-infrared-transmit", " termux-location", " termux-media-scan", " termux-notification", " termux-notification-remove", " termux-share", " termux-sms-inbox", " termux-sms-send", " termux-storage-get", " termux-telephony-call", " termux-telephony-cellinfo", " termux-telephony-deviceinfo", " termux-toast", " termux-tts-engines", " termux-tts-speak", " termux-vibrate", " termux-wifi-connectioninfo", " termux-wifi-scaninfo", "termux-elf-cleaner", " termux-elf-cleaner", "teseq", " reseq", " teseq", "tesseract", " tesseract", "texinfo", " info", " install-info", " makeinfo", " pdftexi2dvi", " pod2texi", " texi2any", " texi2dvi", " texi2pdf", " texindex", "texlive-bin", " a2ping", " a5toa4", " adhocfilelist", " afm2afm", " afm2pl", " afm2tfm", " aleph", " allcm", " allec", " allneeded", " arara", " arlatex", " authorindex", " autoinst", " autosp", " bbl2bib", " bbox", " bg5+latex", " bg5+pdflatex", " bg5conv", " bg5latex", " bg5pdflatex", " bibdoiadd", " bibexport", " bibmradd", " bibtex", " bibtex8", " bibzbladd", " bundledoc", " cachepic", " cef5conv", " cef5latex", " cef5pdflatex", " cefconv", " ceflatex", " cefpdflatex", " cefsconv", " cefslatex", " cefspdflatex", " cfftot1", " checkcites", " checklistings", " chktex", " chkweb", " cjk-gs-integrate", " context", " contextjit", " convbkmk", " ctangle", " ctanify", " ctanupload", " ctie", " cweave", " de-macro", " depythontex", " detex", " devnag", " deweb", " diadia", " disdvi", " dosepsbin", " dt2dv", " dtxgen", " dv2dt", " dvi2fax", " dvi2tty", " dviasm", " dvicopy", " dvidvi", " dvigif", " dvihp", " dvilj", " dvilj2p", " dvilj4", " dvilj4l", " dvilj6", " dvipdfm", " dvipdfmx", " dvipdft", " dvipng", " dvipos", " dvips", " dvired", " dvitomp", " dvitype", " e2pall", " ebb", " ebong", " epspdf", " epspdftk", " epstopdf", " eptex", " euptex", " exceltex", " extconv", " extractbb", " fig4latex", " findhyph", " fmtutil", " fmtutil-sys", " fmtutil-user", " fontinst", " fragmaster", " gbklatex", " gbkpdflatex", " getmapdl", " gftodvi", " gftopk", " gftype", " gsftopk", " hbf2gf", " ht", " htcontext", " htlatex", " htmex", " httex", " httexi", " htxelatex", " htxetex", " inimf", " initex", " installfont-tl", " jamo-normalize", " kanji-config-updmap", " kanji-config-updmap-sys", " kanji-config-updmap-user", " kanji-fontmap-creator", " komkindex", " kpseaccess", " kpsepath", " kpsereadlink", " kpsestat", " kpsetool", " kpsewhere", " kpsewhich", " kpsexpand", " lacheck", " latex-git-log", " latex-papersize", " latex2man", " latex2nemeth", " latexdiff", " latexdiff-vc", " latexfileversion", " latexindent", " latexmk", " latexpand", " latexrevise", " lily-glyph-commands", " lily-image-commands", " lily-rebuild-pdfs", " listbib", " listings-ext.sh", " ltx2crossrefxml", " ltxfileinfo", " ltximg", " lua2dox_filter", " luaotfload-tool", " luatex", " luatools", " lwarpmk", " m-tx", " make4ht", " makedtx", " makeglossaries", " makeglossaries-lite", " makeindex", " match_parens", " mathspic", " mf", " mf-nowin", " mf2pt1", " mfplain", " mft", " mk4ht", " mkgrkindex", " mkindex", " mkjobtexmf", " mkocp", " mkofm", " mkpic", " mkt1font", " mktexfmt", " mktexlsr", " mktexmf", " mktexpk", " mktextfm", " mmafm", " mmpfb", " mpost", " mptopdf", " mtxrun", " mtxrunjit", " multibibliography", " musixflx", " musixtex", " odvicopy", " odvitype", " ofm2opl", " omfonts", " opl2ofm", " ot2kpx", " otangle", " otfinfo", " otftotfm", " otp2ocp", " outocp", " ovf2ovp", " ovp2ovf", " patgen", " pbibtex", " pdf180", " pdf270", " pdf90", " pdfannotextractor", " pdfatfi", " pdfbook", " pdfbook2", " pdfcrop", " pdfflip", " pdfjam", " pdfjam-pocketmod", " pdfjam-slides3up", " pdfjam-slides6up", " pdfjoin", " pdflatexpicscale", " pdfnup", " pdfpun", " pdftex", " pdftosrc", " pdfxup", " pdvitomp", " pdvitype", " pedigree", " perltex", " pfarrei", " pkfix", " pkfix-helper", " pktogf", " pktype", " pltotf", " pmpost", " pmxchords", " pn2pdf", " pooltype", " ppltotf", " prepmx", " ps2eps", " ps2frag", " ps4pdf", " pslatex", " pst2pdf", " ptex", " ptex2pdf", " ptftopl", " purifyeps", " pygmentex", " pythontex", " repstopdf", " rpdfcrop", " rubibtex", " rubikrotation", " rumakeindex", " rungs", " simpdftex", " sjisconv", " sjislatex", " sjispdflatex", " splitindex", " srcredact", " sty2dtx", " svn-multi", " synctex", " t1dotlessj", " t1lint", " t1rawafm", " t1reencode", " t1testpage", " t4ht", " tangle", " tex", " tex4ebook", " tex4ht", " texconfig", " texconfig-dialog", " texconfig-sys", " texcount", " texdef", " texdiff", " texdirflatten", " texdoc", " texdoctk", " texexec", " texfot", " texhash", " texlinks", " texliveonfly", " texloganalyser", " texlua", " texluac", " texmfstart", " texosquery", " texosquery-jre5", " texosquery-jre8", " tftopl", " thumbpdf", " tie", " tlmgr", " tlmgr.ln", " tpic2pdftex", " ttf2afm", " ttf2kotexfont", " ttf2pk", " ttf2tfm", " ttftotype42", " typeoutfileinfo", " ulqda", " upbibtex", " updmap", " updmap-sys", " updmap-user", " updvitomp", " updvitype", " upmendex", " upmpost", " uppltotf", " uptex", " uptftopl", " urlbst", " vftovp", " vlna", " vpe", " vpl2ovp", " vpl2vpl", " vptovf", " weave", " wofm2opl", " wopl2ofm", " wovf2ovp", " wovp2ovf", " xdvipdfmx", " xetex", " xhlatex", " yplan", "tig", " tig", "timewarrior", " timew", "tintin++", " tt++", "tinyscheme", " tinyscheme", "tmate", " tmate", "tmux", " tmux", "toilet", " toilet", "tor", " tor", " tor-gencert", " tor-resolve", " torify", "torsocks", " torsocks", "tracepath", " tracepath", " traceroute", "transmission", " transmission-create", " transmission-daemon", " transmission-edit", " transmission-remote", " transmission-show", "tree", " tree", "tsocks", " tsocks", "tty-clock", " tty-clock", "tty-solitaire", " ttysolitaire", "ttyrec", " ttyplay", " ttyrec", " ttytime", "units", " units", " units_cur", "unrar", " unrar", "unzip", " funzip", " unzip", " unzipsfx", " zipgrep", " zipinfo", "utfdecode", " utfdecode", "util-linux", " addpart", " blkdiscard", " blkid", " blkzone", " blockdev", " cal", " chcpu", " chrt", " col", " colcrt", " colrm", " ctrlaltdel", " delpart", " dmesg", " fallocate", " fdformat", " fincore", " findfs", " flock", " fsck.cramfs", " fsck.minix", " fsfreeze", " getopt", " hexdump", " hwclock", " ionice", " isosize", " ldattach", " linux32", " linux64", " look", " losetup", " lscpu", " lsipc", " lsns", " mcookie", " mesg", " mkfs", " mkfs.bfs", " mkfs.cramfs", " mkfs.minix", " mkswap", " more", " namei", " nologin", " nsenter", " partx", " prlimit", " raw", " readprofile", " rename", " renice", " resizepart", " rev", " rtcwake", " script", " scriptreplay", " setarch", " setsid", " setterm", " swaplabel", " taskset", " ul", " uname26", " unshare", " wdctl", " whereis", " wipefs", " zramctl", "valac", " vala", " vala-0.38", " vala-gen-introspect", " vala-gen-introspect-0.38", " valac", " valac-0.38", " vapicheck", " vapicheck-0.38", " vapigen", " vapigen-0.38", "valadoc", " valadoc", " valadoc-0.38", "valgrind", " callgrind_annotate", " callgrind_control", " cg_annotate", " cg_diff", " cg_merge", " ms_print", " valgrind", " valgrind-di-server", " valgrind-listener", " vgdb", "vifm", " vifm", " vifm-convert-dircolors", " vifm-pause", " vifm-screen-split", "vim", " vi", " view", " vim", " vimdiff", " vimtutor", " xxd", "vim-python", " vi", " view", " vim", " vimdiff", " vimtutor", " xxd", "vorbis-tools", " oggdec", " oggenc", " ogginfo", " vcut", " vorbiscomment", "vttest", " vttest", "vtutils", " vtquery", " vtshowkeys", " vtsize", " vttitle", "w3m", " w3m", " w3mman", "wcalc", " wcalc", "weechat", " weechat", "wget", " wget", "wol", " wol", " wol-bootptab", " wol-dhcpdconf", "x264", " x264", "x265", " x265", "xapian-tools", " copydatabase", " quest", " simpleexpand", " simpleindex", " simplesearch", " xapian-check", " xapian-compact", " xapian-delve", " xapian-metadata", " xapian-progsrv", " xapian-replicate", " xapian-replicate-server", " xapian-tcpsrv", "xmlsec", " xmlsec1", " xmlsec1-config", "xmlstarlet", " xml", "xorriso", " osirrox", " xorrecord", " xorriso", " xorriso-tcltk", " xorrisofs", "xsltproc", " xsltproc", "xz-utils", " lzcat", " lzcmp", " lzdiff", " lzegrep", " lzfgrep", " lzgrep", " lzless", " lzma", " lzmadec", " lzmainfo", " lzmore", " unlzma", " unxz", " xz", " xzcat", " xzcmp", " xzdec", " xzdiff", " xzegrep", " xzfgrep", " xzgrep", " xzless", " xzmore", "yasm", " vsyasm", " yasm", " ytasm", "zbar", " zbarimg", "zile", " zile", "zip", " zip", " zipcloak", " zipnote", " zipsplit", "zsh", " zsh", "zstd", " unzstd", " zstd", " zstdcat", " zstdgrep", " zstdless", " zstdmt", "ack-grep", " ack", "apksigner", " apksigner", "asciinema", " asciinema", "autoconf", " autoconf", " autoheader", " autom4te", " autoreconf", " autoscan", " autoupdate", " ifnames", "automake", " aclocal", " aclocal-1.15", " automake", " automake-1.15", "byobu", " byobu", " byobu-config", " byobu-ctrl-a", " byobu-disable", " byobu-disable-prompt", " byobu-enable", " byobu-enable-prompt", " byobu-export", " byobu-janitor", " byobu-keybindings", " byobu-launch", " byobu-launcher", " byobu-launcher-install", " byobu-launcher-uninstall", " byobu-layout", " byobu-prompt", " byobu-quiet", " byobu-reconnect-sockets", " byobu-screen", " byobu-select-backend", " byobu-select-profile", " byobu-select-session", " byobu-shell", " byobu-silent", " byobu-status", " byobu-status-detail", " byobu-tmux", " byobu-ugraph", " byobu-ulevel", " col1", " ctail", " manifest", " purge-old-kernels", " vigpg", " wifi-status", "colordiff", " colordiff", "cowsay", " cowsay", "debootstrap", " debootstrap", "dx", " dx", "ecj", " ecj", "getmail", " getmail", " getmail_fetch", " getmail_maildir", " getmail_mbox", "luarocks", " luarocks", " luarocks-5.3", " luarocks-admin", " luarocks-admin-5.3", "neofetch", " neofetch", "parallel", " env_parallel", " env_parallel.ash", " env_parallel.bash", " env_parallel.csh", " env_parallel.dash", " env_parallel.fish", " env_parallel.ksh", " env_parallel.pdksh", " env_parallel.sh", " env_parallel.tcsh", " env_parallel.zsh", " niceload", " parallel", " parcat", " sem", " sql", "pass", " pass", "pastebinit", " pastebinit", "pathpicker", " fpp", "ranger", " ranger", " rifle", "ruby-ri", " ri", "screenfetch", " screenfetch", "stow", " chkstow", " stow", "termux-am", " am", "termux-apt-repo", " termux-apt-repo", "termux-create-package", " termux-create-package", "termux-tools", " chsh", " dalvikvm", " df", " getprop", " ip", " logcat", " login", " ping", " ping6", " pkg", " pm", " settings", " su", " termux-fix-shebang", " termux-info", " termux-open", " termux-open-url", " termux-reload-settings", " termux-setup-storage", " termux-wake-lock", " termux-wake-unlock", " xdg-open", "tsu", " tsu", "vcsh", " vcsh", "yarn", " yarn", }; Desktop version Sign out
Wallace-Best / Best<!DOCTYPE html>Wallace-Best <html lang="en-us"> <head> <link rel="node" href="//a.wallace-bestcdn.com/1391808583/img/favicon16-32.ico" type="image/vnd.microsoft.icon"> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <meta http-equiv="Content-Language" content="en-us"> <meta name="keywords" content="Wallace Best, wallace-best.com, comments, blog, blogs, discussion"> <meta name="description" content="Wallace Best's Network is a global comment system that improves discussion on websites and connects conversations across the web."> <meta name="world" value="notranslate" /> <title> WB Admin | Sign-in </title> <script type="text/javascript" charset="utf-8"> document.domain = 'wallace-best.com'; if (window.context === undefined) { var context = {}; } context.wallace-bestUrl = 'https://wallace-best.com'; context.wallace-bestDomain = 'wallace-best.com'; context.mediaUrl = '//a.wallace-bestcdn.com/1391808583/'; context.uploadsUrl = '//a.wallace.bestcdn.com/uploads'; context.sslUploadsUrl = '//a.wallace-bestcdn.com/uploads'; context.loginUrl = 'https://wallace-best.com/profile/login/'; context.signupUrl = 'https://wallace-best.com/profile/signup/'; context.apiUrl = '//wallace-best.com/api/3.0/'; context.apiPublicKey = 'Y1S1wGIzdc63qnZ5rhHfjqEABGA4ZTDncauWFFWWTUBqkmLjdxloTb7ilhGnZ7z1'; context.forum = null; context.adminUrl = 'https://wallace-best.com'; context.switches = { "explore_dashboard_2":false, "partitions:api:posts/countPendin":false, "use_rs_paginator_30m":false, "inline_defaults_css":false, "evm_publisher_reports":true, "postsort":false, "enable_entropy_filtering":false, "exp_newnav":true, "organic_discovery_experiments":false, "realtime_for_oldies":false, "firehose_push":true, "website_addons":true, "addons_ab_test":false, "firehose_gnip_http":true, "community_icon":true, "pub_reporting_v2":true, "pd_thumbnail_settings":true, "algorithm_experiments":false, "discovery_log_to_browser":false, "is_last_modified":true, "embed_category_display":false, "partitions:api:forums/listPosts":false, "shardpost":true, "limit_get_posts_days_30d":true, "next_realtime_anim_disabled":false, "juggler_thread_onReady":true, "firehose_realertime":false, "loginas":true, "juggler_enabled":true, "user_onboarding":true, "website_follow_redirect":true, "raven_js":true, "shardpost:index":true, "filter_ads_by_country":true, "new_sort_paginator":true, "threadident_reads":true, "new_media":true, "enable_link_affiliation":true, "show_unapproved":false, "onboarding_profile_editing":true, "partitions":true, "dotcom_marketing":true, "discovery_analytics":true, "exp_newnav_disable":true, "new_community_nav_embed":true, "discussions_tab":true, "embed_less_refactor":false, "use_rs_paginator_60m":true, "embed_labs":false, "auto_flat_sort":false, "disable_moderate_ascending":true, "disable_realtime":true, "partitions:api":true, "digest_thread_votes":true, "shardpost:paginator":false, "debug_js":false, "exp_mn2":false, "limit_get_posts_days_7d":true, "pinnedcomments":false, "use_queue_b":true, "new_embed_profile":true, "next_track_links":true, "postsort:paginator":true, "simple_signup":true, "static_styles":true, "stats":true, "discovery_next":true, "override_skip_syslog":false, "show_captcha_on_links":true, "exp_mn2_force":false, "next_dragdrop_nag":true, "firehose_gnip":true, "firehose_pubsub":true, "rt_go_backend":false, "dark_jester":true, "next_logging":false, "surveyNotice":false, "tipalti_payments":true, "default_trusted_domain":false, "disqus_trends":false, "log_large_querysets":false, "phoenix":false, "exp_autoonboard":true, "lazy_embed":false, "explore_dashboard":true, "partitions:api:posts/list":true, "support_contact_with_frames":true, "use_rs_paginator_5m":true, "limit_textdigger":true, "embed_redirect":false, "logging":false, "exp_mn2_disable":true, "aggressive_embed_cache":true, "dashboard_client":false, "safety_levels_enabled":true, "partitions:api:categories/listPo":false, "next_show_new_media":true, "next_realtime_cap":false, "next_discard_low_rep":true, "next_streaming_realtime":false, "partitions:api:threads/listPosts":false, "textdigger_crawler":true }; context.urlMap = { 'signup': 'https://wallace-best.com/admin/signup/', 'dashboard': 'http://wallace-best.com/dashboard/', 'admin': 'http://wallace-best.com/admin/', 'logout': '//wallace-best.com/logout/', 'home': 'https://wallace-best.com', 'for_websites': 'http://wallace-best.com/websites/', 'login': 'https://wallace-best.com/profile/login/' }; context.navMap = { 'signup': '', 'dashboard': '', 'admin': '', 'addons': '' }; </script> <script src="//a.wallace-bestcdn.com/1391808583/js/src/auth_context.js" type="text/javascript" charset="utf-8"></script> <link rel="stylesheet" href="//a.wallace-bestdn.com/1391808583/build/css/b31fb2fa3905.css" type="text/css" /> <script type="text/javascript" src="//a.wallace-bestcdn.com/1391808583/build/js/5ee01877d131.js"></script> <script> // // shared/foundation.js // // This file contains the absolute minimum code necessary in order // to create a new application in the WALLACE-BEST namespace. // // You should load this file *before* anything that modifies the WALLACE-BEST global. // /*jshint browser:true, undef:true, strict:true, expr:true, white:true */ /*global wallace-best:true */ var WALLACE-BEST = (function (window, undefined) { "use strict"; var wallace-best = window.wallace-best || {}; // Exception thrown from wallace-best.assert method on failure wallace-best.AssertionError = function (message) { this.message = message; }; wallace-best.AssertionError.prototype.toString = function () { return 'Assertion Error: ' + (this.message || '[no message]'); }; // Raises a wallace-best.AssertionError if value is falsy wallace-best.assert = function (value, message, soft) { if (value) return; if (soft) window.console && window.console.log("DISQUS assertion failed: " + message); else throw new wallace-best.AssertionError(message); }; // Functions to clean attached modules (used by define and cleanup) var cleanFuncs = []; // Attaches a new public interface (module) to the wallace-best namespace. // For example, if wallace-best object is { 'a': { 'b': {} } }: // // wallace-best.define('a.b.c', function () { return { 'd': 'hello' }; }); will transform it into // -> { 'a': { 'b': { 'c': { 'd' : hello' }}}} // // and wallace-best.define('a', function () { return { 'x': 'world' }; }); will transform it into // -> { 'a': { 'b': {}}, 'x': 'world' } // // Attach modules to wallace-best using only this function. wallace-best.define = function (name, fn) { /*jshint loopfunc:true */ if (typeof name === 'function') { fn = name; name = ''; } var parts = name.split('.'); var part = parts.shift(); var cur = wallace-best; var exports = (fn || function () { return {}; }).call({ overwrites: function (obj) { obj.__overwrites__ = true; return obj; } }, window); while (part) { cur = (cur[part] ? cur[part] : cur[part] = {}); part = parts.shift(); } for (var key in exports) { if (!exports.hasOwnProperty(key)) continue; /*jshint eqnull:true */ if (!exports.__overwrites__ && cur[key] !== null) { wallace-best.assert(!cur.hasOwnProperty(key), 'Unsafe attempt to redefine existing module: ' + key, true /* soft assertion */); } cur[key] = exports[key]; cleanFuncs.push(function (cur, key) { return function () { delete cur[key]; }; }(cur, key)); } return cur; }; // Alias for wallace-best.define for the sake of semantics. // You should use it when you need to get a reference to another // wallace-best module before that module is defined: // // var collections = wallace-best.use('lounge.collections'); // // wallace-best.use is a single argument function because we don't // want to encourage people to use it instead of wallace-best.define. wallace-best.use = function (name) { return wallace-best.define(name); }; wallace-best.cleanup = function () { for (var i = 0; i < cleanFuncs.length; i++) { cleanFuncs[i](); } }; return wallace-best; })(window); /*jshint expr:true, undef:true, strict:true, white:true, browser:true */ /*global wallace-best:false*/ // // shared/corefuncs.js // wallace-best.define(function (window, undefined) { "use strict"; var wallace-best = window.wallace-best; var document = window.document; var head = document.getElementsByTagName('head')[0] || document.body; var jobs = { running: false, timer: null, queue: [] }; var uid = 0; // Taken from _.uniqueId wallace-best.getUid = function (prefix) { var id = ++uid + ''; return prefix ? prefix + id : id; }; /* Defers func() execution until cond() is true */ wallace-best.defer = function (cond, func) { function beat() { /*jshint boss:true */ var queue = jobs.queue; if (queue.length === 0) { jobs.running = false; clearInterval(jobs.timer); } for (var i = 0, pair; pair = queue[i]; i++) { if (pair[0]()) { queue.splice(i--, 1); pair[1](); } } } jobs.queue.push([cond, func]); beat(); if (!jobs.running) { jobs.running = true; jobs.timer = setInterval(beat, 100); } }; wallace-best.isOwn = function (obj, key) { // The object.hasOwnProperty method fails when the // property under consideration is named 'hasOwnProperty'. return Object.prototype.hasOwnProperty.call(obj, key); }; wallace-best.isString = function (str) { return Object.prototype.toString.call(str) === "[object String]"; }; /* * Iterates over an object or a collection and calls a callback * function with each item as a parameter. */ wallace-best.each = function (collection, callback) { var length = collection.length, forEach = Array.prototype.forEach; if (!isNaN(length)) { // Treat collection as an array if (forEach) { forEach.call(collection, callback); } else { for (var i = 0; i < length; i++) { callback(collection[i], i, collection); } } } else { // Treat collection as an object for (var key in collection) { if (wallace-best.isOwn(collection, key)) { callback(collection[key], key, collection); } } } }; // Borrowed from underscore wallace-best.extend = function (obj) { wallace-best.each(Array.prototype.slice.call(arguments, 1), function (source) { for (var prop in source) { obj[prop] = source[prop]; } }); return obj; }; wallace-best.serializeArgs = function (params) { var pcs = []; wallace-best.each(params, function (val, key) { if (val !== undefined) { pcs.push(key + (val !== null ? '=' + encodeURIComponent(val) : '')); } }); return pcs.join('&'); }; wallace-best.serialize = function (url, params, nocache) { if (params) { url += (~url.indexOf('?') ? (url.charAt(url.length - 1) == '&' ? '': '&') : '?'); url += wallace-best.serializeArgs(params); } if (nocache) { var ncp = {}; ncp[(new Date()).getTime()] = null; return wallace-best.serialize(url, ncp); } var len = url.length; return (url.charAt(len - 1) == "&" ? url.slice(0, len - 1) : url); }; var TIMEOUT_DURATION = 2e4; // 20 seconds var addEvent, removeEvent; // select the correct event listener function. all of our supported // browsers will use one of these if ('addEventListener' in window) { addEvent = function (node, event, handler) { node.addEventListener(event, handler, false); }; removeEvent = function (node, event, handler) { node.removeEventListener(event, handler, false); }; } else { addEvent = function (node, event, handler) { node.attachEvent('on' + event, handler); }; removeEvent = function (node, event, handler) { node.detachEvent('on' + event, handler); }; } wallace-best.require = function (url, params, nocache, success, failure) { var script = document.createElement('script'); var evName = script.addEventListener ? 'load' : 'readystatechange'; var timeout = null; script.src = wallace-best.serialize(url, params, nocache); script.async = true; script.charset = 'UTF-8'; function handler(ev) { ev = ev || window.event; if (!ev.target) { ev.target = ev.srcElement; } if (ev.type != 'load' && !/^(complete|loaded)$/.test(ev.target.readyState)) { return; // Not ready yet } if (success) { success(); } if (timeout) { clearTimeout(timeout); } removeEvent(ev.target, evName, handler); } if (success || failure) { addEvent(script, evName, handler); } if (failure) { timeout = setTimeout(function () { failure(); }, TIMEOUT_DURATION); } head.appendChild(script); return wallace-best; }; wallace-best.requireStylesheet = function (url, params, nocache) { var link = document.createElement('link'); link.rel = 'stylesheet'; link.type = 'text/css'; link.href = wallace-best.serialize(url, params, nocache); head.appendChild(link); return wallace-best; }; wallace-best.requireSet = function (urls, nocache, callback) { var remaining = urls.length; wallace-best.each(urls, function (url) { wallace-best.require(url, {}, nocache, function () { if (--remaining === 0) { callback(); } }); }); }; wallace-best.injectCss = function (css) { var style = document.createElement('style'); style.setAttribute('type', 'text/css'); // Make inline CSS more readable by splitting each rule onto a separate line css = css.replace(/\}/g, "}\n"); if (window.location.href.match(/^https/)) css = css.replace(/http:\/\//g, 'https://'); if (style.styleSheet) { // Internet Explorer only style.styleSheet.cssText = css; } else { style.appendChild(document.createTextNode(css)); } head.appendChild(style); }; wallace-best.isString = function (val) { return Object.prototype.toString.call(val) === '[object String]'; }; }); /*jshint boss:true*/ /*global wallace-best */ wallace-best.define('Events', function (window, undefined) { "use strict"; // Returns a function that will be executed at most one time, no matter how // often you call it. Useful for lazy initialization. var once = function (func) { var ran = false, memo; return function () { if (ran) return memo; ran = true; memo = func.apply(this, arguments); func = null; return memo; }; }; var has = wallace-best.isOwn; var keys = Object.keys || function (obj) { if (obj !== Object(obj)) throw new TypeError('Invalid object'); var keys = []; for (var key in obj) if (has(obj, key)) keys[keys.length] = key; return keys; }; var slice = [].slice; // Backbone.Events // --------------- // A module that can be mixed in to *any object* in order to provide it with // custom events. You may bind with `on` or remove with `off` callback // functions to an event; `trigger`-ing an event fires all callbacks in // succession. // // var object = {}; // _.extend(object, Backbone.Events); // object.on('expand', function(){ alert('expanded'); }); // object.trigger('expand'); // var Events = { // Bind an event to a `callback` function. Passing `"all"` will bind // the callback to all events fired. on: function (name, callback, context) { if (!eventsApi(this, 'on', name, [callback, context]) || !callback) return this; this._events = this._events || {}; var events = this._events[name] || (this._events[name] = []); events.push({callback: callback, context: context, ctx: context || this}); return this; }, // Bind an event to only be triggered a single time. After the first time // the callback is invoked, it will be removed. once: function (name, callback, context) { if (!eventsApi(this, 'once', name, [callback, context]) || !callback) return this; var self = this; var onced = once(function () { self.off(name, onced); callback.apply(this, arguments); }); onced._callback = callback; return this.on(name, onced, context); }, // Remove one or many callbacks. If `context` is null, removes all // callbacks with that function. If `callback` is null, removes all // callbacks for the event. If `name` is null, removes all bound // callbacks for all events. off: function (name, callback, context) { var retain, ev, events, names, i, l, j, k; if (!this._events || !eventsApi(this, 'off', name, [callback, context])) return this; if (!name && !callback && !context) { this._events = {}; return this; } names = name ? [name] : keys(this._events); for (i = 0, l = names.length; i < l; i++) { name = names[i]; if (events = this._events[name]) { this._events[name] = retain = []; if (callback || context) { for (j = 0, k = events.length; j < k; j++) { ev = events[j]; if ((callback && callback !== ev.callback && callback !== ev.callback._callback) || (context && context !== ev.context)) { retain.push(ev); } } } if (!retain.length) delete this._events[name]; } } return this; }, // Trigger one or many events, firing all bound callbacks. Callbacks are // passed the same arguments as `trigger` is, apart from the event name // (unless you're listening on `"all"`, which will cause your callback to // receive the true name of the event as the first argument). trigger: function (name) { if (!this._events) return this; var args = slice.call(arguments, 1); if (!eventsApi(this, 'trigger', name, args)) return this; var events = this._events[name]; var allEvents = this._events.all; if (events) triggerEvents(events, args); if (allEvents) triggerEvents(allEvents, arguments); return this; }, // Tell this object to stop listening to either specific events ... or // to every object it's currently listening to. stopListening: function (obj, name, callback) { var listeners = this._listeners; if (!listeners) return this; var deleteListener = !name && !callback; if (typeof name === 'object') callback = this; if (obj) (listeners = {})[obj._listenerId] = obj; for (var id in listeners) { listeners[id].off(name, callback, this); if (deleteListener) delete this._listeners[id]; } return this; } }; // Regular expression used to split event strings. var eventSplitter = /\s+/; // Implement fancy features of the Events API such as multiple event // names `"change blur"` and jQuery-style event maps `{change: action}` // in terms of the existing API. var eventsApi = function (obj, action, name, rest) { if (!name) return true; // Handle event maps. if (typeof name === 'object') { for (var key in name) { obj[action].apply(obj, [key, name[key]].concat(rest)); } return false; } // Handle space separated event names. if (eventSplitter.test(name)) { var names = name.split(eventSplitter); for (var i = 0, l = names.length; i < l; i++) { obj[action].apply(obj, [names[i]].concat(rest)); } return false; } return true; }; // A difficult-to-believe, but optimized internal dispatch function for // triggering events. Tries to keep the usual cases speedy (most internal // Backbone events have 3 arguments). var triggerEvents = function (events, args) { var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2]; switch (args.length) { case 0: while (++i < l) { (ev = events[i]).callback.call(ev.ctx); } return; case 1: while (++i < l) { (ev = events[i]).callback.call(ev.ctx, a1); } return; case 2: while (++i < l) { (ev = events[i]).callback.call(ev.ctx, a1, a2); } return; case 3: while (++i < l) { (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); } return; default: while (++i < l) { (ev = events[i]).callback.apply(ev.ctx, args); } } }; var listenMethods = {listenTo: 'on', listenToOnce: 'once'}; // Inversion-of-control versions of `on` and `once`. Tell *this* object to // listen to an event in another object ... keeping track of what it's // listening to. wallace-best.each(listenMethods, function (implementation, method) { Events[method] = function (obj, name, callback) { var listeners = this._listeners || (this._listeners = {}); var id = obj._listenerId || (obj._listenerId = wallace-best.getUid('l')); listeners[id] = obj; if (typeof name === 'object') callback = this; obj[implementation](name, callback, this); return this; }; }); // Aliases for backwards compatibility. Events.bind = Events.on; Events.unbind = Events.off; return Events; }); // used for /follow/ /login/ /signup/ social oauth dialogs // faking the bus wallace-best.use('Bus'); _.extend(DISQUS.Bus, wallace-best.Events); </script> <script src="//a.disquscdn.com/1391808583/js/src/global.js" charset="utf-8"></script> <script src="//a.disquscdn.com/1391808583/js/src/ga_events.js" charset="utf-8"></script> <script src="//a.disquscdn.com/1391808583/js/src/messagesx.js"></script> <!-- start Mixpanel --><script type="text/javascript">(function(e,b){if(!b.__SV){var a,f,i,g;window.mixpanel=b;a=e.createElement("script");a.type="text/javascript";a.async=!0;a.src=("https:"===e.location.protocol?"https:":"http:")+'//cdn.mxpnl.com/libs/mixpanel-2.2.min.js';f=e.getElementsByTagName("script")[0];f.parentNode.insertBefore(a,f);b._i=[];b.init=function(a,e,d){function f(b,h){var a=h.split(".");2==a.length&&(b=b[a[0]],h=a[1]);b[h]=function(){b.push([h].concat(Array.prototype.slice.call(arguments,0)))}}var c=b;"undefined"!== typeof d?c=b[d]=[]:d="mixpanel";c.people=c.people||[];c.toString=function(b){var a="mixpanel";"mixpanel"!==d&&(a+="."+d);b||(a+=" (stub)");return a};c.people.toString=function(){return c.toString(1)+".people (stub)"};i="disable track track_pageview track_links track_forms register register_once alias unregister identify name_tag set_config people.set people.set_once people.increment people.append people.track_charge people.clear_charges people.delete_user".split(" ");for(g=0;g<i.length;g++)f(c,i[g]); b._i.push([a,e,d])};b.__SV=1.2}})(document,window.mixpanel||[]); mixpanel.init('17b27902cd9da8972af8a3c43850fa5f', { track_pageview: false, debug: false }); </script><!-- end Mixpanel --> <script src="//a.disquscdn.com/1391808583//js/src/funnelcake.js"></script> <script type="text/javascript"> if (window.AB_TESTS === undefined) { var AB_TESTS = {}; } $(function() { if (context.auth.username !== undefined) { disqus.messagesx.init(context.auth.username); } }); </script> <script type="text/javascript" charset="utf-8"> // Global tests $(document).ready(function() { $('a[rel*=facebox]').facebox(); }); </script> <script type="text/x-underscore-template" data-template-name="global-nav"> <% var has_custom_avatar = data.avatar_url && data.avatar_url.indexOf('noavatar') < 0; %> <% var has_custom_username = data.username && data.username.indexOf('disqus_') < 0; %> <% if (data.username) { %> <li class="<%= data.forWebsitesClasses || '' %>" data-analytics="header for websites"><a href="<%= data.urlMap.for_websites %>">For Websites</a></li> <li data-analytics="header dashboard"><a href="<%= data.urlMap.dashboard %>">Dashboard</a></li> <% if (data.has_forums) { %> <li class="admin<% if (has_custom_avatar || !has_custom_username) { %> avatar-menu-admin<% } %>" data-analytics="header admin"><a href="<%= data.urlMap.admin %>">Admin</a></li> <% } %> <li class="user-dropdown dropdown-toggle<% if (has_custom_avatar || !has_custom_username) { %> avatar-menu<% } else { %> username-menu<% } %>" data-analytics="header username dropdown" data-floater-marker="<% if (has_custom_avatar || !has_custom_username) { %>square<% } %>"> <a href="<%= data.urlMap.home %>/<%= data.username %>/"> <% if (has_custom_avatar) { %> <img src="<%= data.avatar_url %>" class="avatar"> <% } else if (has_custom_username) { %> <%= data.username %> <% } else { %> <img src="<%= data.avatar_url %>" class="avatar"> <% } %> <span class="caret"></span> </a> <ul class="clearfix dropdown"> <li data-analytics="header view profile"><a href="<%= data.urlMap.home %>/<%= data.username %>/">View Profile</a></li> <li class="edit-profile js-edit-profile" data-analytics="header edit profile"><a href="<%= data.urlMap.dashboard %>#account">Edit Profile</a></li> <li class="logout" data-analytics="header logout"><a href="<%= data.urlMap.logout %>">Logout</a></li> </ul> </li> <% } else { %> <li class="<%= data.forWebsitesClasses || '' %>" data-analytics="header for websites"><a href="<%= data.urlMap.for_websites %>">For Websites</a></li> <li class="link-login" data-analytics="header login"><a href="<%= data.urlMap.login %>?next=<%= encodeURIComponent(document.location.href) %>">Log in</a></li> <% } %> </script> <!--[if lte IE 7]> <script src="//a.wallace-bestdn.com/1391808583/js/src/border_box_model.js"></script> <![endif]--> <!--[if lte IE 8]> <script src="//cdnjs.cloudflare.com/ajax/libs/modernizr/2.5.3/modernizr.min.js"></script> <script src="//a.wallace-bestcdn.com/1391808583/js/src/selectivizr.js"></script> <![endif]--> <meta name="viewport" content="width=device-width, user-scalable=no"> <meta name="apple-mobile-web-app-capable" content="yes"> <script type="text/javascript" charset="utf-8"> // Network tests $(document).ready(function() { $('a[rel*=facebox]').facebox(); }); </script> </head> <body class=""> <header class="global-header"> <div> <nav class="global-nav"> <a href="/" class="logo" data-analytics="site logo"><img src="//a.wallace-bestcdn.com/1391808583/img/disqus-logo-alt-hidpi.png" width="150" alt="wallace-best" title="wallace-best - Discover your community"/></a> </nav> </div> </header> <section class="login"> <form id="login-form" action="https://disqus.com/profile/login/?next=http://wallace-best.wallace-best.com/admin/moderate/" method="post" accept-charset="utf-8"> <h1>Sign in to continue</h1> <input type="text" name="username" tabindex="20" placeholder="Email or Username" value=""/> <div class="password-container"> <input type="password" name="password" tabindex="21" placeholder="Password" /> <span>(<a href="https://wallace-best.com/forgot/">forgot?</a>)</span> </div> <button type="submit" class="button submit" data-analytics="sign-in">Log in to wallace-best</button> <span class="create-account"> <a href="https://wallace-best.com/profile/signup/?next=http%3A//wallace-best.wallace-best.com/admin/moderate/" data-analytics="create-account"> Create an Account </a> </span> <h1 class="or-login">Alternatively, you can log in using:</h1> <div class="connect-options"> <button title="facebook" type="button" class="facebook-auth"> <span class="auth-container"> <img src="//a.wallace-bestdn.com/1391808583/img/icons/facebook.svg" alt="Facebook"> <!--[if lte IE 7]> <img src="//a.wallace-bestcdn.com/1391808583/img/icons/facebook.png" alt="Facebook"> <![endif]--> </span> </button> <button title="twitter" type="button" class="twitter-auth"> <span class="auth-container"> <img src="//a.wallace-bestdn.com/1391808583/img/icons/twitter.svg" alt="Twitter"> <!--[if lte IE 7]> <img src="//a.wallace-bestcdn.com/1391808583/img/icons/twitter.png" alt="Twitter"> <![endif]--> </span> </button> <button title="google" type="button" class="google-auth"> <span class="auth-container"> <img src="//a.wallace-bestdn.com/1391808583/img/icons/google.svg" alt="Google"> <!--[if lte IE 7]> <img src="//a.wallace-bestcdn.com/1391808583/img/icons/google.png" alt="Google"> <![endif]--> </span> </button> </div> </form> </section> <div class="get-disqus"> <a href="https://wallace-best.com/admin/signup/" data-analytics="get-disqus">Get wallace-best for your site</a> </div> <script> /*jshint undef:true, browser:true, maxlen:100, strict:true, expr:true, white:true */ // These must be global var _comscore, _gaq; (function (doc) { "use strict"; // Convert Django template variables to JS variables var debug = false, gaKey = '', gaPunt = '', gaCustomVars = { component: 'website', forum: '', version: 'v5' }, gaSlots = { component: 1, forum: 3, version: 4 }; /**/ gaKey = gaCustomVars.component == 'website' ? 'UA-1410476-16' : 'UA-1410476-6'; // Now start loading analytics services var s = doc.getElementsByTagName('script')[0], p = s.parentNode; var isSecure = doc.location.protocol == 'https:'; if (!debug) { _comscore = _comscore || []; // comScore // Load comScore _comscore.push({ c1: '7', c2: '10137436', c3: '1' }); var cs = document.createElement('script'); cs.async = true; cs.src = (isSecure ? 'https://sb' : 'http://b') + '.scorecardresearch.com/beacon.js'; p.insertBefore(cs, s); } // Set up Google Analytics _gaq = _gaq || []; if (!debug) { _gaq.push(['_setAccount', gaKey]); _gaq.push(['_setDomainName', '.wallace-best.com']); } if (!gaPunt) { for (var v in gaCustomVars) { if (!(gaCustomVars.hasOwnProperty(v) && gaCustomVars[v])) continue; _gaq.push(['_setCustomVar', gaSlots[v], gaCustomVars[v]]); } _gaq.push(['_trackPageview']); } // Load Google Analytics var ga = doc.createElement('script'); ga.type = 'text/javascript'; ga.async = true; var prefix = isSecure ? 'https://ssl' : 'http://www'; // Dev tip: if you cannot use the Google Analytics Debug Chrome extension, // https://chrome.google.com/webstore/detail/jnkmfdileelhofjcijamephohjechhna // you can replace /ga.js on the following line with /u/ga_debug.js // But if you do that, PLEASE DON'T COMMIT THE CHANGE! Kthxbai. ga.src = prefix + '.google-analytics.com/ga.js'; p.insertBefore(ga, s); }(document)); </script> <script> (function (){ // adds a classname for css to target the current page without passing in special things from the server or wherever // replacing all characters not allowable in classnames var newLocation = encodeURIComponent(window.location.pathname).replace(/[\.!~*'\(\)]/g, '_'); // cleaning up remaining url-encoded symbols for clarity sake newLocation = newLocation.replace(/%2F/g, '-').replace(/^-/, '').replace(/-$/, ''); if (newLocation === '') { newLocation = 'homepage'; } $('body').addClass('' + newLocation); }()); $(function ($) { // adds 'page-active' class to links matching the page url $('a[href="' + window.location.pathname + '"]').addClass('page-active'); }); $(document).delegate('[data-toggle-selector]', 'click', function (e) { var $this = $(this); $($this.attr('data-toggle-selector')).toggle(); e.preventDefault(); }); </script> <script type="text/javascript"> wallace-best.define('web.urls', function () { return { twitter: 'https://wallace-best.com/_ax/twitter/begin/', google: 'https://wallace-best.com/_ax/google/begin/', facebook: 'https://wallace-best.com/_ax/facebook/begin/', dashboard: 'http://wallace-best.com/dashboard/' } }); $(document).ready(function () { var usernameInput = $("input[name=username]"); if (usernameInput[0].value) { $("input[name=password]").focus(); } else { usernameInput.focus(); } }); </script> <script type="text/javascript" src="//a.wallace-bestcdn.com/1391808583/js/src/social_login.js"> <script type="text/javascript"> $(function() { var options = { authenticated: (context.auth.username !== undefined), moderated_forums: context.auth.moderated_forums, user_id: context.auth.user_id, track_clicks: !!context.switches.website_click_analytics, forum: context.forum }; wallace-best.funnelcake.init(options); }); </script> <!-- helper jQuery tmpl partials --> <script type="text/x-jquery-tmpl" id="profile-metadata-tmpl"> data-profile-username="${username}" data-profile-hash="${emailHash}" href="/${username}" </script> <script type="text/x-jquery-tmpl" id="profile-link-tmpl"> <a class="profile-launcher" {{tmpl "#profile-metadata-tmpl"}} href="/${username}">${name}</a> </script> <script src="//a.wallace-bestcdn.com/1391808583/js/src/templates.js"></script> <script src="//a.wallace-bestcdn.com/1391808583/js/src/modals.js"></script> <script> wallace-best.ui.config({ disqusUrl: 'https://disqus.com', mediaUrl: '//a.wallace-bestcdn.com/1391808583/' }); </script> </body> </html>
yanbog / IconsExtractIcons Extract:The IconsExtract utility scans the files and folders on your computer, and extract the icons and cursors stored in EXE, DLL, OCX, CPL, and in other file types. You can save the extracted icons to ICO files (or CUR files for cursors), or copy the image of a single icon into the clipboard.Web Site: http://www.nirsoft.net/utils/iconsext.html
kszcode / FuzzySearchFilesInCurrentFolderLocate files and folders starting with the current folders in FMAN
mgi388 / Bevy Cursor Kit.CUR and .ANI cursor file support for Bevy
behreajj / AseIcoExportExports Aseprite files to icos, curs and anis. Supports some imports.
questionmark1122 / Cnn10#!bash # # bash completion support for core Git. # # Copyright (C) 2006,2007 Shawn O. Pearce <spearce@spearce.org> # Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/). # Distributed under the GNU General Public License, version 2.0. # # The contained completion routines provide support for completing: # # *) local and remote branch names # *) local and remote tag names # *) .git/remotes file names # *) git 'subcommands' # *) tree paths within 'ref:path/to/file' expressions # *) common --long-options # # To use these routines: # # 1) Copy this file to somewhere (e.g. ~/.git-completion.sh). # 2) Added the following line to your .bashrc: # source ~/.git-completion.sh # # 3) Consider changing your PS1 to also show the current branch: # PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ ' # # The argument to __git_ps1 will be displayed only if you # are currently in a git repository. The %s token will be # the name of the current branch. # # In addition, if you set GIT_PS1_SHOWDIRTYSTATE to a nonempty # value, unstaged (*) and staged (+) changes will be shown next # to the branch name. You can configure this per-repository # with the bash.showDirtyState variable, which defaults to true # once GIT_PS1_SHOWDIRTYSTATE is enabled. # # You can also see if currently something is stashed, by setting # GIT_PS1_SHOWSTASHSTATE to a nonempty value. If something is stashed, # then a '$' will be shown next to the branch name. # # If you would like to see if there're untracked files, then you can # set GIT_PS1_SHOWUNTRACKEDFILES to a nonempty value. If there're # untracked files, then a '%' will be shown next to the branch name. # # If you would like to see the difference between HEAD and its # upstream, set GIT_PS1_SHOWUPSTREAM="auto". A "<" indicates # you are behind, ">" indicates you are ahead, and "<>" # indicates you have diverged. You can further control # behaviour by setting GIT_PS1_SHOWUPSTREAM to a space-separated # list of values: # verbose show number of commits ahead/behind (+/-) upstream # legacy don't use the '--count' option available in recent # versions of git-rev-list # git always compare HEAD to @{upstream} # svn always compare HEAD to your SVN upstream # By default, __git_ps1 will compare HEAD to your SVN upstream # if it can find one, or @{upstream} otherwise. Once you have # set GIT_PS1_SHOWUPSTREAM, you can override it on a # per-repository basis by setting the bash.showUpstream config # variable. # # # To submit patches: # # *) Read Documentation/SubmittingPatches # *) Send all patches to the current maintainer: # # "Shawn O. Pearce" <spearce@spearce.org> # # *) Always CC the Git mailing list: # # git@vger.kernel.org # case "$COMP_WORDBREAKS" in *:*) : great ;; *) COMP_WORDBREAKS="$COMP_WORDBREAKS:" esac # __gitdir accepts 0 or 1 arguments (i.e., location) # returns location of .git repo __gitdir () { if [ -z "${1-}" ]; then if [ -n "${__git_dir-}" ]; then echo "$__git_dir" elif [ -d .git ]; then echo .git else git rev-parse --git-dir 2>/dev/null fi elif [ -d "$1/.git" ]; then echo "$1/.git" else echo "$1" fi } # stores the divergence from upstream in $p # used by GIT_PS1_SHOWUPSTREAM __git_ps1_show_upstream () { local key value local svn_remote=() svn_url_pattern count n local upstream=git legacy="" verbose="" # get some config options from git-config while read key value; do case "$key" in bash.showupstream) GIT_PS1_SHOWUPSTREAM="$value" if [[ -z "${GIT_PS1_SHOWUPSTREAM}" ]]; then p="" return fi ;; svn-remote.*.url) svn_remote[ $((${#svn_remote[@]} + 1)) ]="$value" svn_url_pattern+="\\|$value" upstream=svn+git # default upstream is SVN if available, else git ;; esac done < <(git config -z --get-regexp '^(svn-remote\..*\.url|bash\.showupstream)$' 2>/dev/null | tr '\0\n' '\n ') # parse configuration values for option in ${GIT_PS1_SHOWUPSTREAM}; do case "$option" in git|svn) upstream="$option" ;; verbose) verbose=1 ;; legacy) legacy=1 ;; esac done # Find our upstream case "$upstream" in git) upstream="@{upstream}" ;; svn*) # get the upstream from the "git-svn-id: ..." in a commit message # (git-svn uses essentially the same procedure internally) local svn_upstream=($(git log --first-parent -1 \ --grep="^git-svn-id: \(${svn_url_pattern:2}\)" 2>/dev/null)) if [[ 0 -ne ${#svn_upstream[@]} ]]; then svn_upstream=${svn_upstream[ ${#svn_upstream[@]} - 2 ]} svn_upstream=${svn_upstream%@*} for ((n=1; "$n" <= "${#svn_remote[@]}"; ++n)); do svn_upstream=${svn_upstream#${svn_remote[$n]}} done if [[ -z "$svn_upstream" ]]; then # default branch name for checkouts with no layout: upstream=${GIT_SVN_ID:-git-svn} else upstream=${svn_upstream#/} fi elif [[ "svn+git" = "$upstream" ]]; then upstream="@{upstream}" fi ;; esac # Find how many commits we are ahead/behind our upstream if [[ -z "$legacy" ]]; then count="$(git rev-list --count --left-right \ "$upstream"...HEAD 2>/dev/null)" else # produce equivalent output to --count for older versions of git local commits if commits="$(git rev-list --left-right "$upstream"...HEAD 2>/dev/null)" then local commit behind=0 ahead=0 for commit in $commits do case "$commit" in "<"*) let ++behind ;; *) let ++ahead ;; esac done count="$behind $ahead" else count="" fi fi # calculate the result if [[ -z "$verbose" ]]; then case "$count" in "") # no upstream p="" ;; "0 0") # equal to upstream p="=" ;; "0 "*) # ahead of upstream p=">" ;; *" 0") # behind upstream p="<" ;; *) # diverged from upstream p="<>" ;; esac else case "$count" in "") # no upstream p="" ;; "0 0") # equal to upstream p=" u=" ;; "0 "*) # ahead of upstream p=" u+${count#0 }" ;; *" 0") # behind upstream p=" u-${count% 0}" ;; *) # diverged from upstream p=" u+${count#* }-${count% *}" ;; esac fi } # __git_ps1 accepts 0 or 1 arguments (i.e., format string) # returns text to add to bash PS1 prompt (includes branch name) __git_ps1 () { local g="$(__gitdir)" if [ -n "$g" ]; then local r="" local b="" if [ -f "$g/rebase-merge/interactive" ]; then r="|REBASE-i" b="$(cat "$g/rebase-merge/head-name")" elif [ -d "$g/rebase-merge" ]; then r="|REBASE-m" b="$(cat "$g/rebase-merge/head-name")" else if [ -d "$g/rebase-apply" ]; then if [ -f "$g/rebase-apply/rebasing" ]; then r="|REBASE" elif [ -f "$g/rebase-apply/applying" ]; then r="|AM" else r="|AM/REBASE" fi elif [ -f "$g/MERGE_HEAD" ]; then r="|MERGING" elif [ -f "$g/BISECT_LOG" ]; then r="|BISECTING" fi b="$(git symbolic-ref HEAD 2>/dev/null)" || { b="$( case "${GIT_PS1_DESCRIBE_STYLE-}" in (contains) git describe --contains HEAD ;; (branch) git describe --contains --all HEAD ;; (describe) git describe HEAD ;; (* | default) git describe --exact-match HEAD ;; esac 2>/dev/null)" || b="$(cut -c1-7 "$g/HEAD" 2>/dev/null)..." || b="unknown" b="($b)" } fi local w="" local i="" local s="" local u="" local c="" local p="" if [ "true" = "$(git rev-parse --is-inside-git-dir 2>/dev/null)" ]; then if [ "true" = "$(git rev-parse --is-bare-repository 2>/dev/null)" ]; then c="BARE:" else b="GIT_DIR!" fi elif [ "true" = "$(git rev-parse --is-inside-work-tree 2>/dev/null)" ]; then if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ]; then if [ "$(git config --bool bash.showDirtyState)" != "false" ]; then git diff --no-ext-diff --quiet --exit-code || w="*" if git rev-parse --quiet --verify HEAD >/dev/null; then git diff-index --cached --quiet HEAD -- || i="+" else i="#" fi fi fi if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ]; then git rev-parse --verify refs/stash >/dev/null 2>&1 && s="$" fi if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ]; then if [ -n "$(git ls-files --others --exclude-standard)" ]; then u="%" fi fi if [ -n "${GIT_PS1_SHOWUPSTREAM-}" ]; then __git_ps1_show_upstream fi fi local f="$w$i$s$u" printf "${1:- (%s)}" "$c${b##refs/heads/}${f:+ $f}$r$p" fi } # __gitcomp_1 requires 2 arguments __gitcomp_1 () { local c IFS=' '$'\t'$'\n' for c in $1; do case "$c$2" in --*=*) printf %s$'\n' "$c$2" ;; *.) printf %s$'\n' "$c$2" ;; *) printf %s$'\n' "$c$2 " ;; esac done } # __gitcomp accepts 1, 2, 3, or 4 arguments # generates completion reply with compgen __gitcomp () { local cur="${COMP_WORDS[COMP_CWORD]}" if [ $# -gt 2 ]; then cur="$3" fi case "$cur" in --*=) COMPREPLY=() ;; *) local IFS=$'\n' COMPREPLY=($(compgen -P "${2-}" \ -W "$(__gitcomp_1 "${1-}" "${4-}")" \ -- "$cur")) ;; esac } # __git_heads accepts 0 or 1 arguments (to pass to __gitdir) __git_heads () { local cmd i is_hash=y dir="$(__gitdir "${1-}")" if [ -d "$dir" ]; then git --git-dir="$dir" for-each-ref --format='%(refname:short)' \ refs/heads return fi for i in $(git ls-remote "${1-}" 2>/dev/null); do case "$is_hash,$i" in y,*) is_hash=n ;; n,*^{}) is_hash=y ;; n,refs/heads/*) is_hash=y; echo "${i#refs/heads/}" ;; n,*) is_hash=y; echo "$i" ;; esac done } # __git_tags accepts 0 or 1 arguments (to pass to __gitdir) __git_tags () { local cmd i is_hash=y dir="$(__gitdir "${1-}")" if [ -d "$dir" ]; then git --git-dir="$dir" for-each-ref --format='%(refname:short)' \ refs/tags return fi for i in $(git ls-remote "${1-}" 2>/dev/null); do case "$is_hash,$i" in y,*) is_hash=n ;; n,*^{}) is_hash=y ;; n,refs/tags/*) is_hash=y; echo "${i#refs/tags/}" ;; n,*) is_hash=y; echo "$i" ;; esac done } # __git_refs accepts 0 or 1 arguments (to pass to __gitdir) __git_refs () { local i is_hash=y dir="$(__gitdir "${1-}")" local cur="${COMP_WORDS[COMP_CWORD]}" format refs if [ -d "$dir" ]; then case "$cur" in refs|refs/*) format="refname" refs="${cur%/*}" ;; *) for i in HEAD FETCH_HEAD ORIG_HEAD MERGE_HEAD; do if [ -e "$dir/$i" ]; then echo $i; fi done format="refname:short" refs="refs/tags refs/heads refs/remotes" ;; esac git --git-dir="$dir" for-each-ref --format="%($format)" \ $refs return fi for i in $(git ls-remote "$dir" 2>/dev/null); do case "$is_hash,$i" in y,*) is_hash=n ;; n,*^{}) is_hash=y ;; n,refs/tags/*) is_hash=y; echo "${i#refs/tags/}" ;; n,refs/heads/*) is_hash=y; echo "${i#refs/heads/}" ;; n,refs/remotes/*) is_hash=y; echo "${i#refs/remotes/}" ;; n,*) is_hash=y; echo "$i" ;; esac done } # __git_refs2 requires 1 argument (to pass to __git_refs) __git_refs2 () { local i for i in $(__git_refs "$1"); do echo "$i:$i" done } # __git_refs_remotes requires 1 argument (to pass to ls-remote) __git_refs_remotes () { local cmd i is_hash=y for i in $(git ls-remote "$1" 2>/dev/null); do case "$is_hash,$i" in n,refs/heads/*) is_hash=y echo "$i:refs/remotes/$1/${i#refs/heads/}" ;; y,*) is_hash=n ;; n,*^{}) is_hash=y ;; n,refs/tags/*) is_hash=y;; n,*) is_hash=y; ;; esac done } __git_remotes () { local i ngoff IFS=$'\n' d="$(__gitdir)" shopt -q nullglob || ngoff=1 shopt -s nullglob for i in "$d/remotes"/*; do echo ${i#$d/remotes/} done [ "$ngoff" ] && shopt -u nullglob for i in $(git --git-dir="$d" config --get-regexp 'remote\..*\.url' 2>/dev/null); do i="${i#remote.}" echo "${i/.url*/}" done } __git_list_merge_strategies () { git merge -s help 2>&1 | sed -n -e '/[Aa]vailable strategies are: /,/^$/{ s/\.$// s/.*:// s/^[ ]*// s/[ ]*$// p }' } __git_merge_strategies= # 'git merge -s help' (and thus detection of the merge strategy # list) fails, unfortunately, if run outside of any git working # tree. __git_merge_strategies is set to the empty string in # that case, and the detection will be repeated the next time it # is needed. __git_compute_merge_strategies () { : ${__git_merge_strategies:=$(__git_list_merge_strategies)} } __git_complete_file () { local pfx ls ref cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in ?*:*) ref="${cur%%:*}" cur="${cur#*:}" case "$cur" in ?*/*) pfx="${cur%/*}" cur="${cur##*/}" ls="$ref:$pfx" pfx="$pfx/" ;; *) ls="$ref" ;; esac case "$COMP_WORDBREAKS" in *:*) : great ;; *) pfx="$ref:$pfx" ;; esac local IFS=$'\n' COMPREPLY=($(compgen -P "$pfx" \ -W "$(git --git-dir="$(__gitdir)" ls-tree "$ls" \ | sed '/^100... blob /{ s,^.* ,, s,$, , } /^120000 blob /{ s,^.* ,, s,$, , } /^040000 tree /{ s,^.* ,, s,$,/, } s/^.* //')" \ -- "$cur")) ;; *) __gitcomp "$(__git_refs)" ;; esac } __git_complete_revlist () { local pfx cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in *...*) pfx="${cur%...*}..." cur="${cur#*...}" __gitcomp "$(__git_refs)" "$pfx" "$cur" ;; *..*) pfx="${cur%..*}.." cur="${cur#*..}" __gitcomp "$(__git_refs)" "$pfx" "$cur" ;; *) __gitcomp "$(__git_refs)" ;; esac } __git_complete_remote_or_refspec () { local cmd="${COMP_WORDS[1]}" local cur="${COMP_WORDS[COMP_CWORD]}" local i c=2 remote="" pfx="" lhs=1 no_complete_refspec=0 while [ $c -lt $COMP_CWORD ]; do i="${COMP_WORDS[c]}" case "$i" in --mirror) [ "$cmd" = "push" ] && no_complete_refspec=1 ;; --all) case "$cmd" in push) no_complete_refspec=1 ;; fetch) COMPREPLY=() return ;; *) ;; esac ;; -*) ;; *) remote="$i"; break ;; esac c=$((++c)) done if [ -z "$remote" ]; then __gitcomp "$(__git_remotes)" return fi if [ $no_complete_refspec = 1 ]; then COMPREPLY=() return fi [ "$remote" = "." ] && remote= case "$cur" in *:*) case "$COMP_WORDBREAKS" in *:*) : great ;; *) pfx="${cur%%:*}:" ;; esac cur="${cur#*:}" lhs=0 ;; +*) pfx="+" cur="${cur#+}" ;; esac case "$cmd" in fetch) if [ $lhs = 1 ]; then __gitcomp "$(__git_refs2 "$remote")" "$pfx" "$cur" else __gitcomp "$(__git_refs)" "$pfx" "$cur" fi ;; pull) if [ $lhs = 1 ]; then __gitcomp "$(__git_refs "$remote")" "$pfx" "$cur" else __gitcomp "$(__git_refs)" "$pfx" "$cur" fi ;; push) if [ $lhs = 1 ]; then __gitcomp "$(__git_refs)" "$pfx" "$cur" else __gitcomp "$(__git_refs "$remote")" "$pfx" "$cur" fi ;; esac } __git_complete_strategy () { __git_compute_merge_strategies case "${COMP_WORDS[COMP_CWORD-1]}" in -s|--strategy) __gitcomp "$__git_merge_strategies" return 0 esac local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --strategy=*) __gitcomp "$__git_merge_strategies" "" "${cur##--strategy=}" return 0 ;; esac return 1 } __git_list_all_commands () { local i IFS=" "$'\n' for i in $(git help -a|egrep '^ [a-zA-Z0-9]') do case $i in *--*) : helper pattern;; *) echo $i;; esac done } __git_all_commands= __git_compute_all_commands () { : ${__git_all_commands:=$(__git_list_all_commands)} } __git_list_porcelain_commands () { local i IFS=" "$'\n' __git_compute_all_commands for i in "help" $__git_all_commands do case $i in *--*) : helper pattern;; applymbox) : ask gittus;; applypatch) : ask gittus;; archimport) : import;; cat-file) : plumbing;; check-attr) : plumbing;; check-ref-format) : plumbing;; checkout-index) : plumbing;; commit-tree) : plumbing;; count-objects) : infrequent;; cvsexportcommit) : export;; cvsimport) : import;; cvsserver) : daemon;; daemon) : daemon;; diff-files) : plumbing;; diff-index) : plumbing;; diff-tree) : plumbing;; fast-import) : import;; fast-export) : export;; fsck-objects) : plumbing;; fetch-pack) : plumbing;; fmt-merge-msg) : plumbing;; for-each-ref) : plumbing;; hash-object) : plumbing;; http-*) : transport;; index-pack) : plumbing;; init-db) : deprecated;; local-fetch) : plumbing;; lost-found) : infrequent;; ls-files) : plumbing;; ls-remote) : plumbing;; ls-tree) : plumbing;; mailinfo) : plumbing;; mailsplit) : plumbing;; merge-*) : plumbing;; mktree) : plumbing;; mktag) : plumbing;; pack-objects) : plumbing;; pack-redundant) : plumbing;; pack-refs) : plumbing;; parse-remote) : plumbing;; patch-id) : plumbing;; peek-remote) : plumbing;; prune) : plumbing;; prune-packed) : plumbing;; quiltimport) : import;; read-tree) : plumbing;; receive-pack) : plumbing;; reflog) : plumbing;; remote-*) : transport;; repo-config) : deprecated;; rerere) : plumbing;; rev-list) : plumbing;; rev-parse) : plumbing;; runstatus) : plumbing;; sh-setup) : internal;; shell) : daemon;; show-ref) : plumbing;; send-pack) : plumbing;; show-index) : plumbing;; ssh-*) : transport;; stripspace) : plumbing;; symbolic-ref) : plumbing;; tar-tree) : deprecated;; unpack-file) : plumbing;; unpack-objects) : plumbing;; update-index) : plumbing;; update-ref) : plumbing;; update-server-info) : daemon;; upload-archive) : plumbing;; upload-pack) : plumbing;; write-tree) : plumbing;; var) : infrequent;; verify-pack) : infrequent;; verify-tag) : plumbing;; *) echo $i;; esac done } __git_porcelain_commands= __git_compute_porcelain_commands () { __git_compute_all_commands : ${__git_porcelain_commands:=$(__git_list_porcelain_commands)} } __git_aliases () { local i IFS=$'\n' for i in $(git --git-dir="$(__gitdir)" config --get-regexp "alias\..*" 2>/dev/null); do case "$i" in alias.*) i="${i#alias.}" echo "${i/ */}" ;; esac done } # __git_aliased_command requires 1 argument __git_aliased_command () { local word cmdline=$(git --git-dir="$(__gitdir)" \ config --get "alias.$1") for word in $cmdline; do case "$word" in \!gitk|gitk) echo "gitk" return ;; \!*) : shell command alias ;; -*) : option ;; *=*) : setting env ;; git) : git itself ;; *) echo "$word" return esac done } # __git_find_on_cmdline requires 1 argument __git_find_on_cmdline () { local word subcommand c=1 while [ $c -lt $COMP_CWORD ]; do word="${COMP_WORDS[c]}" for subcommand in $1; do if [ "$subcommand" = "$word" ]; then echo "$subcommand" return fi done c=$((++c)) done } __git_has_doubledash () { local c=1 while [ $c -lt $COMP_CWORD ]; do if [ "--" = "${COMP_WORDS[c]}" ]; then return 0 fi c=$((++c)) done return 1 } __git_whitespacelist="nowarn warn error error-all fix" _git_am () { local cur="${COMP_WORDS[COMP_CWORD]}" dir="$(__gitdir)" if [ -d "$dir"/rebase-apply ]; then __gitcomp "--skip --continue --resolved --abort" return fi case "$cur" in --whitespace=*) __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}" return ;; --*) __gitcomp " --3way --committer-date-is-author-date --ignore-date --ignore-whitespace --ignore-space-change --interactive --keep --no-utf8 --signoff --utf8 --whitespace= --scissors " return esac COMPREPLY=() } _git_apply () { local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --whitespace=*) __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}" return ;; --*) __gitcomp " --stat --numstat --summary --check --index --cached --index-info --reverse --reject --unidiff-zero --apply --no-add --exclude= --ignore-whitespace --ignore-space-change --whitespace= --inaccurate-eof --verbose " return esac COMPREPLY=() } _git_add () { __git_has_doubledash && return local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) __gitcomp " --interactive --refresh --patch --update --dry-run --ignore-errors --intent-to-add " return esac COMPREPLY=() } _git_archive () { local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --format=*) __gitcomp "$(git archive --list)" "" "${cur##--format=}" return ;; --remote=*) __gitcomp "$(__git_remotes)" "" "${cur##--remote=}" return ;; --*) __gitcomp " --format= --list --verbose --prefix= --remote= --exec= " return ;; esac __git_complete_file } _git_bisect () { __git_has_doubledash && return local subcommands="start bad good skip reset visualize replay log run" local subcommand="$(__git_find_on_cmdline "$subcommands")" if [ -z "$subcommand" ]; then __gitcomp "$subcommands" return fi case "$subcommand" in bad|good|reset|skip) __gitcomp "$(__git_refs)" ;; *) COMPREPLY=() ;; esac } _git_branch () { local i c=1 only_local_ref="n" has_r="n" while [ $c -lt $COMP_CWORD ]; do i="${COMP_WORDS[c]}" case "$i" in -d|-m) only_local_ref="y" ;; -r) has_r="y" ;; esac c=$((++c)) done case "${COMP_WORDS[COMP_CWORD]}" in --*) __gitcomp " --color --no-color --verbose --abbrev= --no-abbrev --track --no-track --contains --merged --no-merged --set-upstream " ;; *) if [ $only_local_ref = "y" -a $has_r = "n" ]; then __gitcomp "$(__git_heads)" else __gitcomp "$(__git_refs)" fi ;; esac } _git_bundle () { local cmd="${COMP_WORDS[2]}" case "$COMP_CWORD" in 2) __gitcomp "create list-heads verify unbundle" ;; 3) # looking for a file ;; *) case "$cmd" in create) __git_complete_revlist ;; esac ;; esac } _git_checkout () { __git_has_doubledash && return local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --conflict=*) __gitcomp "diff3 merge" "" "${cur##--conflict=}" ;; --*) __gitcomp " --quiet --ours --theirs --track --no-track --merge --conflict= --orphan --patch " ;; *) __gitcomp "$(__git_refs)" ;; esac } _git_cherry () { __gitcomp "$(__git_refs)" } _git_cherry_pick () { local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) __gitcomp "--edit --no-commit" ;; *) __gitcomp "$(__git_refs)" ;; esac } _git_clean () { __git_has_doubledash && return local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) __gitcomp "--dry-run --quiet" return ;; esac COMPREPLY=() } _git_clone () { local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) __gitcomp " --local --no-hardlinks --shared --reference --quiet --no-checkout --bare --mirror --origin --upload-pack --template= --depth " return ;; esac COMPREPLY=() } _git_commit () { __git_has_doubledash && return local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --cleanup=*) __gitcomp "default strip verbatim whitespace " "" "${cur##--cleanup=}" return ;; --reuse-message=*) __gitcomp "$(__git_refs)" "" "${cur##--reuse-message=}" return ;; --reedit-message=*) __gitcomp "$(__git_refs)" "" "${cur##--reedit-message=}" return ;; --untracked-files=*) __gitcomp "all no normal" "" "${cur##--untracked-files=}" return ;; --*) __gitcomp " --all --author= --signoff --verify --no-verify --edit --amend --include --only --interactive --dry-run --reuse-message= --reedit-message= --reset-author --file= --message= --template= --cleanup= --untracked-files --untracked-files= --verbose --quiet " return esac COMPREPLY=() } _git_describe () { local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) __gitcomp " --all --tags --contains --abbrev= --candidates= --exact-match --debug --long --match --always " return esac __gitcomp "$(__git_refs)" } __git_diff_common_options="--stat --numstat --shortstat --summary --patch-with-stat --name-only --name-status --color --no-color --color-words --no-renames --check --full-index --binary --abbrev --diff-filter= --find-copies-harder --text --ignore-space-at-eol --ignore-space-change --ignore-all-space --exit-code --quiet --ext-diff --no-ext-diff --no-prefix --src-prefix= --dst-prefix= --inter-hunk-context= --patience --raw --dirstat --dirstat= --dirstat-by-file --dirstat-by-file= --cumulative " _git_diff () { __git_has_doubledash && return local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) __gitcomp "--cached --staged --pickaxe-all --pickaxe-regex --base --ours --theirs $__git_diff_common_options " return ;; esac __git_complete_file } __git_mergetools_common="diffuse ecmerge emerge kdiff3 meld opendiff tkdiff vimdiff gvimdiff xxdiff araxis p4merge " _git_difftool () { __git_has_doubledash && return local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --tool=*) __gitcomp "$__git_mergetools_common kompare" "" "${cur##--tool=}" return ;; --*) __gitcomp "--cached --staged --pickaxe-all --pickaxe-regex --base --ours --theirs --no-renames --diff-filter= --find-copies-harder --relative --ignore-submodules --tool=" return ;; esac __git_complete_file } __git_fetch_options=" --quiet --verbose --append --upload-pack --force --keep --depth= --tags --no-tags --all --prune --dry-run " _git_fetch () { local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) __gitcomp "$__git_fetch_options" return ;; esac __git_complete_remote_or_refspec } _git_format_patch () { local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --thread=*) __gitcomp " deep shallow " "" "${cur##--thread=}" return ;; --*) __gitcomp " --stdout --attach --no-attach --thread --thread= --output-directory --numbered --start-number --numbered-files --keep-subject --signoff --signature --no-signature --in-reply-to= --cc= --full-index --binary --not --all --cover-letter --no-prefix --src-prefix= --dst-prefix= --inline --suffix= --ignore-if-in-upstream --subject-prefix= " return ;; esac __git_complete_revlist } _git_fsck () { local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) __gitcomp " --tags --root --unreachable --cache --no-reflogs --full --strict --verbose --lost-found " return ;; esac COMPREPLY=() } _git_gc () { local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) __gitcomp "--prune --aggressive" return ;; esac COMPREPLY=() } _git_gitk () { _gitk } _git_grep () { __git_has_doubledash && return local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) __gitcomp " --cached --text --ignore-case --word-regexp --invert-match --full-name --extended-regexp --basic-regexp --fixed-strings --files-with-matches --name-only --files-without-match --max-depth --count --and --or --not --all-match " return ;; esac __gitcomp "$(__git_refs)" } _git_help () { local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) __gitcomp "--all --info --man --web" return ;; esac __git_compute_all_commands __gitcomp "$__git_all_commands attributes cli core-tutorial cvs-migration diffcore gitk glossary hooks ignore modules repository-layout tutorial tutorial-2 workflows " } _git_init () { local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --shared=*) __gitcomp " false true umask group all world everybody " "" "${cur##--shared=}" return ;; --*) __gitcomp "--quiet --bare --template= --shared --shared=" return ;; esac COMPREPLY=() } _git_ls_files () { __git_has_doubledash && return local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) __gitcomp "--cached --deleted --modified --others --ignored --stage --directory --no-empty-directory --unmerged --killed --exclude= --exclude-from= --exclude-per-directory= --exclude-standard --error-unmatch --with-tree= --full-name --abbrev --ignored --exclude-per-directory " return ;; esac COMPREPLY=() } _git_ls_remote () { __gitcomp "$(__git_remotes)" } _git_ls_tree () { __git_complete_file } # Options that go well for log, shortlog and gitk __git_log_common_options=" --not --all --branches --tags --remotes --first-parent --merges --no-merges --max-count= --max-age= --since= --after= --min-age= --until= --before= " # Options that go well for log and gitk (not shortlog) __git_log_gitk_options=" --dense --sparse --full-history --simplify-merges --simplify-by-decoration --left-right " # Options that go well for log and shortlog (not gitk) __git_log_shortlog_options=" --author= --committer= --grep= --all-match " __git_log_pretty_formats="oneline short medium full fuller email raw format:" __git_log_date_formats="relative iso8601 rfc2822 short local default raw" _git_log () { __git_has_doubledash && return local cur="${COMP_WORDS[COMP_CWORD]}" local g="$(git rev-parse --git-dir 2>/dev/null)" local merge="" if [ -f "$g/MERGE_HEAD" ]; then merge="--merge" fi case "$cur" in --pretty=*) __gitcomp "$__git_log_pretty_formats " "" "${cur##--pretty=}" return ;; --format=*) __gitcomp "$__git_log_pretty_formats " "" "${cur##--format=}" return ;; --date=*) __gitcomp "$__git_log_date_formats" "" "${cur##--date=}" return ;; --decorate=*) __gitcomp "long short" "" "${cur##--decorate=}" return ;; --*) __gitcomp " $__git_log_common_options $__git_log_shortlog_options $__git_log_gitk_options --root --topo-order --date-order --reverse --follow --full-diff --abbrev-commit --abbrev= --relative-date --date= --pretty= --format= --oneline --cherry-pick --graph --decorate --decorate= --walk-reflogs --parents --children $merge $__git_diff_common_options --pickaxe-all --pickaxe-regex " return ;; esac __git_complete_revlist } __git_merge_options=" --no-commit --no-stat --log --no-log --squash --strategy --commit --stat --no-squash --ff --no-ff --ff-only " _git_merge () { __git_complete_strategy && return local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) __gitcomp "$__git_merge_options" return esac __gitcomp "$(__git_refs)" } _git_mergetool () { local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --tool=*) __gitcomp "$__git_mergetools_common tortoisemerge" "" "${cur##--tool=}" return ;; --*) __gitcomp "--tool=" return ;; esac COMPREPLY=() } _git_merge_base () { __gitcomp "$(__git_refs)" } _git_mv () { local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) __gitcomp "--dry-run" return ;; esac COMPREPLY=() } _git_name_rev () { __gitcomp "--tags --all --stdin" } _git_notes () { local subcommands="edit show" if [ -z "$(__git_find_on_cmdline "$subcommands")" ]; then __gitcomp "$subcommands" return fi case "${COMP_WORDS[COMP_CWORD-1]}" in -m|-F) COMPREPLY=() ;; *) __gitcomp "$(__git_refs)" ;; esac } _git_pull () { __git_complete_strategy && return local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) __gitcomp " --rebase --no-rebase $__git_merge_options $__git_fetch_options " return ;; esac __git_complete_remote_or_refspec } _git_push () { local cur="${COMP_WORDS[COMP_CWORD]}" case "${COMP_WORDS[COMP_CWORD-1]}" in --repo) __gitcomp "$(__git_remotes)" return esac case "$cur" in --repo=*) __gitcomp "$(__git_remotes)" "" "${cur##--repo=}" return ;; --*) __gitcomp " --all --mirror --tags --dry-run --force --verbose --receive-pack= --repo= " return ;; esac __git_complete_remote_or_refspec } _git_rebase () { local cur="${COMP_WORDS[COMP_CWORD]}" dir="$(__gitdir)" if [ -d "$dir"/rebase-apply ] || [ -d "$dir"/rebase-merge ]; then __gitcomp "--continue --skip --abort" return fi __git_complete_strategy && return case "$cur" in --whitespace=*) __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}" return ;; --*) __gitcomp " --onto --merge --strategy --interactive --preserve-merges --stat --no-stat --committer-date-is-author-date --ignore-date --ignore-whitespace --whitespace= --autosquash " return esac __gitcomp "$(__git_refs)" } __git_send_email_confirm_options="always never auto cc compose" __git_send_email_suppresscc_options="author self cc bodycc sob cccmd body all" _git_send_email () { local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --confirm=*) __gitcomp " $__git_send_email_confirm_options " "" "${cur##--confirm=}" return ;; --suppress-cc=*) __gitcomp " $__git_send_email_suppresscc_options " "" "${cur##--suppress-cc=}" return ;; --smtp-encryption=*) __gitcomp "ssl tls" "" "${cur##--smtp-encryption=}" return ;; --*) __gitcomp "--annotate --bcc --cc --cc-cmd --chain-reply-to --compose --confirm= --dry-run --envelope-sender --from --identity --in-reply-to --no-chain-reply-to --no-signed-off-by-cc --no-suppress-from --no-thread --quiet --signed-off-by-cc --smtp-pass --smtp-server --smtp-server-port --smtp-encryption= --smtp-user --subject --suppress-cc= --suppress-from --thread --to --validate --no-validate" return ;; esac COMPREPLY=() } _git_stage () { _git_add } __git_config_get_set_variables () { local prevword word config_file= c=$COMP_CWORD while [ $c -gt 1 ]; do word="${COMP_WORDS[c]}" case "$word" in --global|--system|--file=*) config_file="$word" break ;; -f|--file) config_file="$word $prevword" break ;; esac prevword=$word c=$((--c)) done git --git-dir="$(__gitdir)" config $config_file --list 2>/dev/null | while read line do case "$line" in *.*=*) echo "${line/=*/}" ;; esac done } _git_config () { local cur="${COMP_WORDS[COMP_CWORD]}" local prv="${COMP_WORDS[COMP_CWORD-1]}" case "$prv" in branch.*.remote) __gitcomp "$(__git_remotes)" return ;; branch.*.merge) __gitcomp "$(__git_refs)" return ;; remote.*.fetch) local remote="${prv#remote.}" remote="${remote%.fetch}" __gitcomp "$(__git_refs_remotes "$remote")" return ;; remote.*.push) local remote="${prv#remote.}" remote="${remote%.push}" __gitcomp "$(git --git-dir="$(__gitdir)" \ for-each-ref --format='%(refname):%(refname)' \ refs/heads)" return ;; pull.twohead|pull.octopus) __git_compute_merge_strategies __gitcomp "$__git_merge_strategies" return ;; color.branch|color.diff|color.interactive|\ color.showbranch|color.status|color.ui) __gitcomp "always never auto" return ;; color.pager) __gitcomp "false true" return ;; color.*.*) __gitcomp " normal black red green yellow blue magenta cyan white bold dim ul blink reverse " return ;; help.format) __gitcomp "man info web html" return ;; log.date) __gitcomp "$__git_log_date_formats" return ;; sendemail.aliasesfiletype) __gitcomp "mutt mailrc pine elm gnus" return ;; sendemail.confirm) __gitcomp "$__git_send_email_confirm_options" return ;; sendemail.suppresscc) __gitcomp "$__git_send_email_suppresscc_options" return ;; --get|--get-all|--unset|--unset-all) __gitcomp "$(__git_config_get_set_variables)" return ;; *.*) COMPREPLY=() return ;; esac case "$cur" in --*) __gitcomp " --global --system --file= --list --replace-all --get --get-all --get-regexp --add --unset --unset-all --remove-section --rename-section " return ;; branch.*.*) local pfx="${cur%.*}." cur="${cur##*.}" __gitcomp "remote merge mergeoptions rebase" "$pfx" "$cur" return ;; branch.*) local pfx="${cur%.*}." cur="${cur#*.}" __gitcomp "$(__git_heads)" "$pfx" "$cur" "." return ;; guitool.*.*) local pfx="${cur%.*}." cur="${cur##*.}" __gitcomp " argprompt cmd confirm needsfile noconsole norescan prompt revprompt revunmerged title " "$pfx" "$cur" return ;; difftool.*.*) local pfx="${cur%.*}." cur="${cur##*.}" __gitcomp "cmd path" "$pfx" "$cur" return ;; man.*.*) local pfx="${cur%.*}." cur="${cur##*.}" __gitcomp "cmd path" "$pfx" "$cur" return ;; mergetool.*.*) local pfx="${cur%.*}." cur="${cur##*.}" __gitcomp "cmd path trustExitCode" "$pfx" "$cur" return ;; pager.*) local pfx="${cur%.*}." cur="${cur#*.}" __git_compute_all_commands __gitcomp "$__git_all_commands" "$pfx" "$cur" return ;; remote.*.*) local pfx="${cur%.*}." cur="${cur##*.}" __gitcomp " url proxy fetch push mirror skipDefaultUpdate receivepack uploadpack tagopt pushurl " "$pfx" "$cur" return ;; remote.*) local pfx="${cur%.*}." cur="${cur#*.}" __gitcomp "$(__git_remotes)" "$pfx" "$cur" "." return ;; url.*.*) local pfx="${cur%.*}." cur="${cur##*.}" __gitcomp "insteadOf pushInsteadOf" "$pfx" "$cur" return ;; esac __gitcomp " add.ignore-errors alias. apply.ignorewhitespace apply.whitespace branch.autosetupmerge branch.autosetuprebase clean.requireForce color.branch color.branch.current color.branch.local color.branch.plain color.branch.remote color.diff color.diff.commit color.diff.frag color.diff.meta color.diff.new color.diff.old color.diff.plain color.diff.whitespace color.grep color.grep.external color.grep.match color.interactive color.interactive.header color.interactive.help color.interactive.prompt color.pager color.showbranch color.status color.status.added color.status.changed color.status.header color.status.nobranch color.status.untracked color.status.updated color.ui commit.template core.autocrlf core.bare core.compression core.createObject core.deltaBaseCacheLimit core.editor core.excludesfile core.fileMode core.fsyncobjectfiles core.gitProxy core.ignoreCygwinFSTricks core.ignoreStat core.logAllRefUpdates core.loosecompression core.packedGitLimit core.packedGitWindowSize core.pager core.preferSymlinkRefs core.preloadindex core.quotepath core.repositoryFormatVersion core.safecrlf core.sharedRepository core.symlinks core.trustctime core.warnAmbiguousRefs core.whitespace core.worktree diff.autorefreshindex diff.external diff.mnemonicprefix diff.renameLimit diff.renameLimit. diff.renames diff.suppressBlankEmpty diff.tool diff.wordRegex difftool. difftool.prompt fetch.unpackLimit format.attach format.cc format.headers format.numbered format.pretty format.signature format.signoff format.subjectprefix format.suffix format.thread gc.aggressiveWindow gc.auto gc.autopacklimit gc.packrefs gc.pruneexpire gc.reflogexpire gc.reflogexpireunreachable gc.rerereresolved gc.rerereunresolved gitcvs.allbinary gitcvs.commitmsgannotation gitcvs.dbTableNamePrefix gitcvs.dbdriver gitcvs.dbname gitcvs.dbpass gitcvs.dbuser gitcvs.enabled gitcvs.logfile gitcvs.usecrlfattr guitool. gui.blamehistoryctx gui.commitmsgwidth gui.copyblamethreshold gui.diffcontext gui.encoding gui.fastcopyblame gui.matchtrackingbranch gui.newbranchtemplate gui.pruneduringfetch gui.spellingdictionary gui.trustmtime help.autocorrect help.browser help.format http.lowSpeedLimit http.lowSpeedTime http.maxRequests http.noEPSV http.proxy http.sslCAInfo http.sslCAPath http.sslCert http.sslKey http.sslVerify i18n.commitEncoding i18n.logOutputEncoding imap.folder imap.host imap.pass imap.port imap.preformattedHTML imap.sslverify imap.tunnel imap.user instaweb.browser instaweb.httpd instaweb.local instaweb.modulepath instaweb.port interactive.singlekey log.date log.showroot mailmap.file man. man.viewer merge.conflictstyle merge.log merge.renameLimit merge.stat merge.tool merge.verbosity mergetool. mergetool.keepBackup mergetool.prompt pack.compression pack.deltaCacheLimit pack.deltaCacheSize pack.depth pack.indexVersion pack.packSizeLimit pack.threads pack.window pack.windowMemory pager. pull.octopus pull.twohead push.default rebase.stat receive.denyCurrentBranch receive.denyDeletes receive.denyNonFastForwards receive.fsckObjects receive.unpackLimit repack.usedeltabaseoffset rerere.autoupdate rerere.enabled sendemail.aliasesfile sendemail.aliasesfiletype sendemail.bcc sendemail.cc sendemail.cccmd sendemail.chainreplyto sendemail.confirm sendemail.envelopesender sendemail.multiedit sendemail.signedoffbycc sendemail.smtpencryption sendemail.smtppass sendemail.smtpserver sendemail.smtpserverport sendemail.smtpuser sendemail.suppresscc sendemail.suppressfrom sendemail.thread sendemail.to sendemail.validate showbranch.default status.relativePaths status.showUntrackedFiles tar.umask transfer.unpackLimit url. user.email user.name user.signingkey web.browser branch. remote. " } _git_remote () { local subcommands="add rename rm show prune update set-head" local subcommand="$(__git_find_on_cmdline "$subcommands")" if [ -z "$subcommand" ]; then __gitcomp "$subcommands" return fi case "$subcommand" in rename|rm|show|prune) __gitcomp "$(__git_remotes)" ;; update) local i c='' IFS=$'\n' for i in $(git --git-dir="$(__gitdir)" config --get-regexp "remotes\..*" 2>/dev/null); do i="${i#remotes.}" c="$c ${i/ */}" done __gitcomp "$c" ;; *) COMPREPLY=() ;; esac } _git_replace () { __gitcomp "$(__git_refs)" } _git_reset () { __git_has_doubledash && return local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) __gitcomp "--merge --mixed --hard --soft --patch" return ;; esac __gitcomp "$(__git_refs)" } _git_revert () { local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) __gitcomp "--edit --mainline --no-edit --no-commit --signoff" return ;; esac __gitcomp "$(__git_refs)" } _git_rm () { __git_has_doubledash && return local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) __gitcomp "--cached --dry-run --ignore-unmatch --quiet" return ;; esac COMPREPLY=() } _git_shortlog () { __git_has_doubledash && return local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) __gitcomp " $__git_log_common_options $__git_log_shortlog_options --numbered --summary " return ;; esac __git_complete_revlist } _git_show () { __git_has_doubledash && return local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --pretty=*) __gitcomp "$__git_log_pretty_formats " "" "${cur##--pretty=}" return ;; --format=*) __gitcomp "$__git_log_pretty_formats " "" "${cur##--format=}" return ;; --*) __gitcomp "--pretty= --format= --abbrev-commit --oneline $__git_diff_common_options " return ;; esac __git_complete_file } _git_show_branch () { local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) __gitcomp " --all --remotes --topo-order --current --more= --list --independent --merge-base --no-name --color --no-color --sha1-name --sparse --topics --reflog " return ;; esac __git_complete_revlist } _git_stash () { local cur="${COMP_WORDS[COMP_CWORD]}" local save_opts='--keep-index --no-keep-index --quiet --patch' local subcommands='save list show apply clear drop pop create branch' local subcommand="$(__git_find_on_cmdline "$subcommands")" if [ -z "$subcommand" ]; then case "$cur" in --*) __gitcomp "$save_opts" ;; *) if [ -z "$(__git_find_on_cmdline "$save_opts")" ]; then __gitcomp "$subcommands" else COMPREPLY=() fi ;; esac else case "$subcommand,$cur" in save,--*) __gitcomp "$save_opts" ;; apply,--*|pop,--*) __gitcomp "--index --quiet" ;; show,--*|drop,--*|branch,--*) COMPREPLY=() ;; show,*|apply,*|drop,*|pop,*|branch,*) __gitcomp "$(git --git-dir="$(__gitdir)" stash list \ | sed -n -e 's/:.*//p')" ;; *) COMPREPLY=() ;; esac fi } _git_submodule () { __git_has_doubledash && return local subcommands="add status init update summary foreach sync" if [ -z "$(__git_find_on_cmdline "$subcommands")" ]; then local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) __gitcomp "--quiet --cached" ;; *) __gitcomp "$subcommands" ;; esac return fi } _git_svn () { local subcommands=" init fetch clone rebase dcommit log find-rev set-tree commit-diff info create-ignore propget proplist show-ignore show-externals branch tag blame migrate mkdirs reset gc " local subcommand="$(__git_find_on_cmdline "$subcommands")" if [ -z "$subcommand" ]; then __gitcomp "$subcommands" else local remote_opts="--username= --config-dir= --no-auth-cache" local fc_opts=" --follow-parent --authors-file= --repack= --no-metadata --use-svm-props --use-svnsync-props --log-window-size= --no-checkout --quiet --repack-flags --use-log-author --localtime --ignore-paths= $remote_opts " local init_opts=" --template= --shared= --trunk= --tags= --branches= --stdlayout --minimize-url --no-metadata --use-svm-props --use-svnsync-props --rewrite-root= --prefix= --use-log-author --add-author-from $remote_opts " local cmt_opts=" --edit --rmdir --find-copies-harder --copy-similarity= " local cur="${COMP_WORDS[COMP_CWORD]}" case "$subcommand,$cur" in fetch,--*) __gitcomp "--revision= --fetch-all $fc_opts" ;; clone,--*) __gitcomp "--revision= $fc_opts $init_opts" ;; init,--*) __gitcomp "$init_opts" ;; dcommit,--*) __gitcomp " --merge --strategy= --verbose --dry-run --fetch-all --no-rebase --commit-url --revision $cmt_opts $fc_opts " ;; set-tree,--*) __gitcomp "--stdin $cmt_opts $fc_opts" ;; create-ignore,--*|propget,--*|proplist,--*|show-ignore,--*|\ show-externals,--*|mkdirs,--*) __gitcomp "--revision=" ;; log,--*) __gitcomp " --limit= --revision= --verbose --incremental --oneline --show-commit --non-recursive --authors-file= --color " ;; rebase,--*) __gitcomp " --merge --verbose --strategy= --local --fetch-all --dry-run $fc_opts " ;; commit-diff,--*) __gitcomp "--message= --file= --revision= $cmt_opts" ;; info,--*) __gitcomp "--url" ;; branch,--*) __gitcomp "--dry-run --message --tag" ;; tag,--*) __gitcomp "--dry-run --message" ;; blame,--*) __gitcomp "--git-format" ;; migrate,--*) __gitcomp " --config-dir= --ignore-paths= --minimize --no-auth-cache --username= " ;; reset,--*) __gitcomp "--revision= --parent" ;; *) COMPREPLY=() ;; esac fi } _git_tag () { local i c=1 f=0 while [ $c -lt $COMP_CWORD ]; do i="${COMP_WORDS[c]}" case "$i" in -d|-v) __gitcomp "$(__git_tags)" return ;; -f) f=1 ;; esac c=$((++c)) done case "${COMP_WORDS[COMP_CWORD-1]}" in -m|-F) COMPREPLY=() ;; -*|tag) if [ $f = 1 ]; then __gitcomp "$(__git_tags)" else COMPREPLY=() fi ;; *) __gitcomp "$(__git_refs)" ;; esac } _git_whatchanged () { _git_log } _git () { local i c=1 command __git_dir while [ $c -lt $COMP_CWORD ]; do i="${COMP_WORDS[c]}" case "$i" in --git-dir=*) __git_dir="${i#--git-dir=}" ;; --bare) __git_dir="." ;; --version|-p|--paginate) ;; --help) command="help"; break ;; *) command="$i"; break ;; esac c=$((++c)) done if [ -z "$command" ]; then case "${COMP_WORDS[COMP_CWORD]}" in --*) __gitcomp " --paginate --no-pager --git-dir= --bare --version --exec-path --html-path --work-tree= --help " ;; *) __git_compute_porcelain_commands __gitcomp "$__git_porcelain_commands $(__git_aliases)" ;; esac return fi local completion_func="_git_${command//-/_}" declare -F $completion_func >/dev/null && $completion_func && return local expansion=$(__git_aliased_command "$command") if [ -n "$expansion" ]; then completion_func="_git_${expansion//-/_}" declare -F $completion_func >/dev/null && $completion_func fi } _gitk () { __git_has_doubledash && return local cur="${COMP_WORDS[COMP_CWORD]}" local g="$(__gitdir)" local merge="" if [ -f "$g/MERGE_HEAD" ]; then merge="--merge" fi case "$cur" in --*) __gitcomp " $__git_log_common_options $__git_log_gitk_options $merge " return ;; esac __git_complete_revlist } complete -o bashdefault -o default -o nospace -F _git git 2>/dev/null \ || complete -o default -o nospace -F _git git complete -o bashdefault -o default -o nospace -F _gitk gitk 2>/dev/null \ || complete -o default -o nospace -F _gitk gitk # The following are necessary only for Cygwin, and only are needed # when the user has tab-completed the executable name and consequently # included the '.exe' suffix. # if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then complete -o bashdefault -o default -o nospace -F _git git.exe 2>/dev/null \ || complete -o default -o nospace -F _git git.exe fi
curityio / Idsvr DockerDocker-related files, resources, and information for the Curity Identity Server
PxRyzl / Win2xcur ScriptScript for win2xcur to easily convert .ani and .cur file to xcursor
SystemRage / IconolatryConverter (encode / decode) for .ICO files
dentiny / Duckdb Curl FilesystemFilesystem built upon libcurl.
a01361 / A01361.github.io#!/usr/bin/env bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH #=================================================================# # System Required: CentOS 6+, Debian 7+, Ubuntu 12+ # # Description: One click Install Shadowsocks-Python server # # Author: Teddysun <i@teddysun.com> # # Thanks: @clowwindy <https://twitter.com/clowwindy> # # Intro: https://teddysun.com/342.html # #=================================================================# clear echo echo "#############################################################" echo "# One click Install Shadowsocks-Python server #" echo "# Intro: https://teddysun.com/342.html #" echo "# Author: Teddysun <i@teddysun.com> #" echo "# Github: https://github.com/shadowsocks/shadowsocks #" echo "#############################################################" echo libsodium_file="libsodium-1.0.16" libsodium_url="https://github.com/jedisct1/libsodium/releases/download/1.0.16/libsodium-1.0.16.tar.gz" # Current folder cur_dir=`pwd` # Stream Ciphers ciphers=( aes-256-gcm aes-192-gcm aes-128-gcm aes-256-ctr aes-192-ctr aes-128-ctr aes-256-cfb aes-192-cfb aes-128-cfb camellia-128-cfb camellia-192-cfb camellia-256-cfb chacha20-ietf-poly1305 chacha20-ietf chacha20 rc4-md5 ) # Color red='\033[0;31m' green='\033[0;32m' yellow='\033[0;33m' plain='\033[0m' # Make sure only root can run our script [[ $EUID -ne 0 ]] && echo -e "[${red}Error${plain}] This script must be run as root!" && exit 1 # Disable selinux disable_selinux(){ if [ -s /etc/selinux/config ] && grep 'SELINUX=enforcing' /etc/selinux/config; then sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0 fi } #Check system check_sys(){ local checkType=$1 local value=$2 local release='' local systemPackage='' if [[ -f /etc/redhat-release ]]; then release="centos" systemPackage="yum" elif cat /etc/issue | grep -Eqi "debian"; then release="debian" systemPackage="apt" elif cat /etc/issue | grep -Eqi "ubuntu"; then release="ubuntu" systemPackage="apt" elif cat /etc/issue | grep -Eqi "centos|red hat|redhat"; then release="centos" systemPackage="yum" elif cat /proc/version | grep -Eqi "debian"; then release="debian" systemPackage="apt" elif cat /proc/version | grep -Eqi "ubuntu"; then release="ubuntu" systemPackage="apt" elif cat /proc/version | grep -Eqi "centos|red hat|redhat"; then release="centos" systemPackage="yum" fi if [[ ${checkType} == "sysRelease" ]]; then if [ "$value" == "$release" ]; then return 0 else return 1 fi elif [[ ${checkType} == "packageManager" ]]; then if [ "$value" == "$systemPackage" ]; then return 0 else return 1 fi fi } # Get version getversion(){ if [[ -s /etc/redhat-release ]]; then grep -oE "[0-9.]+" /etc/redhat-release else grep -oE "[0-9.]+" /etc/issue fi } # CentOS version centosversion(){ if check_sys sysRelease centos; then local code=$1 local version="$(getversion)" local main_ver=${version%%.*} if [ "$main_ver" == "$code" ]; then return 0 else return 1 fi else return 1 fi } # Get public IP address get_ip(){ local IP=$( ip addr | egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | egrep -v "^192\.168|^172\.1[6-9]\.|^172\.2[0-9]\.|^172\.3[0-2]\.|^10\.|^127\.|^255\.|^0\." | head -n 1 ) [ -z ${IP} ] && IP=$( wget -qO- -t1 -T2 ipv4.icanhazip.com ) [ -z ${IP} ] && IP=$( wget -qO- -t1 -T2 ipinfo.io/ip ) [ ! -z ${IP} ] && echo ${IP} || echo } get_char(){ SAVEDSTTY=`stty -g` stty -echo stty cbreak dd if=/dev/tty bs=1 count=1 2> /dev/null stty -raw stty echo stty $SAVEDSTTY } # Pre-installation settings pre_install(){ if check_sys packageManager yum || check_sys packageManager apt; then # Not support CentOS 5 if centosversion 5; then echo -e "$[{red}Error${plain}] Not supported CentOS 5, please change to CentOS 6+/Debian 7+/Ubuntu 12+ and try again." exit 1 fi else echo -e "[${red}Error${plain}] Your OS is not supported. please change OS to CentOS/Debian/Ubuntu and try again." exit 1 fi # Set shadowsocks config password echo "Please enter password for shadowsocks-python" read -p "(Default password: teddysun.com):" shadowsockspwd [ -z "${shadowsockspwd}" ] && shadowsockspwd="teddysun.com" echo echo "---------------------------" echo "password = ${shadowsockspwd}" echo "---------------------------" echo # Set shadowsocks config port while true do dport=$(shuf -i 9000-19999 -n 1) echo "Please enter a port for shadowsocks-python [1-65535]" read -p "(Default port: ${dport}):" shadowsocksport [ -z "$shadowsocksport" ] && shadowsocksport=${dport} expr ${shadowsocksport} + 1 &>/dev/null if [ $? -eq 0 ]; then if [ ${shadowsocksport} -ge 1 ] && [ ${shadowsocksport} -le 65535 ] && [ ${shadowsocksport:0:1} != 0 ]; then echo echo "---------------------------" echo "port = ${shadowsocksport}" echo "---------------------------" echo break fi fi echo -e "[${red}Error${plain}] Please enter a correct number [1-65535]" done # Set shadowsocks config stream ciphers while true do echo -e "Please select stream cipher for shadowsocks-python:" for ((i=1;i<=${#ciphers[@]};i++ )); do hint="${ciphers[$i-1]}" echo -e "${green}${i}${plain}) ${hint}" done read -p "Which cipher you'd select(Default: ${ciphers[0]}):" pick [ -z "$pick" ] && pick=1 expr ${pick} + 1 &>/dev/null if [ $? -ne 0 ]; then echo -e "[${red}Error${plain}] Please enter a number" continue fi if [[ "$pick" -lt 1 || "$pick" -gt ${#ciphers[@]} ]]; then echo -e "[${red}Error${plain}] Please enter a number between 1 and ${#ciphers[@]}" continue fi shadowsockscipher=${ciphers[$pick-1]} echo echo "---------------------------" echo "cipher = ${shadowsockscipher}" echo "---------------------------" echo break done echo echo "Press any key to start...or Press Ctrl+C to cancel" char=`get_char` # Install necessary dependencies if check_sys packageManager yum; then yum install -y python python-devel python-setuptools openssl openssl-devel curl wget unzip gcc automake autoconf make libtool elif check_sys packageManager apt; then apt-get -y update apt-get -y install python python-dev python-setuptools openssl libssl-dev curl wget unzip gcc automake autoconf make libtool fi cd ${cur_dir} } # Download files download_files(){ # Download libsodium file if ! wget --no-check-certificate -O ${libsodium_file}.tar.gz ${libsodium_url}; then echo -e "[${red}Error${plain}] Failed to download ${libsodium_file}.tar.gz!" exit 1 fi # Download Shadowsocks file if ! wget --no-check-certificate -O shadowsocks-master.zip https://github.com/shadowsocks/shadowsocks/archive/master.zip; then echo -e "[${red}Error${plain}] Failed to download shadowsocks python file!" exit 1 fi # Download Shadowsocks init script if check_sys packageManager yum; then if ! wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks -O /etc/init.d/shadowsocks; then echo -e "[${red}Error${plain}] Failed to download shadowsocks chkconfig file!" exit 1 fi elif check_sys packageManager apt; then if ! wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-debian -O /etc/init.d/shadowsocks; then echo -e "[${red}Error${plain}] Failed to download shadowsocks chkconfig file!" exit 1 fi fi } # Config shadowsocks config_shadowsocks(){ cat > /etc/shadowsocks.json<<-EOF { "server":"0.0.0.0", "server_port":${shadowsocksport}, "local_address":"127.0.0.1", "local_port":1080, "password":"${shadowsockspwd}", "timeout":300, "method":"${shadowsockscipher}", "fast_open":false } EOF } # Firewall set firewall_set(){ echo -e "[${green}Info${plain}] firewall set start..." if centosversion 6; then /etc/init.d/iptables status > /dev/null 2>&1 if [ $? -eq 0 ]; then iptables -L -n | grep -i ${shadowsocksport} > /dev/null 2>&1 if [ $? -ne 0 ]; then iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport ${shadowsocksport} -j ACCEPT iptables -I INPUT -m state --state NEW -m udp -p udp --dport ${shadowsocksport} -j ACCEPT /etc/init.d/iptables save /etc/init.d/iptables restart else echo -e "[${green}Info${plain}] port ${shadowsocksport} has already been set up." fi else echo -e "[${yellow}Warning${plain}] iptables looks like shutdown or not installed, please manually set it if necessary." fi elif centosversion 7; then systemctl status firewalld > /dev/null 2>&1 if [ $? -eq 0 ]; then firewall-cmd --permanent --zone=public --add-port=${shadowsocksport}/tcp firewall-cmd --permanent --zone=public --add-port=${shadowsocksport}/udp firewall-cmd --reload else echo -e "[${yellow}Warning${plain}] firewalld looks like not running or not installed, please enable port ${shadowsocksport} manually if necessary." fi fi echo -e "[${green}Info${plain}] firewall set completed..." } # Install Shadowsocks install(){ # Install libsodium if [ ! -f /usr/lib/libsodium.a ]; then cd ${cur_dir} tar zxf ${libsodium_file}.tar.gz cd ${libsodium_file} ./configure --prefix=/usr && make && make install if [ $? -ne 0 ]; then echo -e "[${red}Error${plain}] libsodium install failed!" install_cleanup exit 1 fi fi ldconfig # Install Shadowsocks cd ${cur_dir} unzip -q shadowsocks-master.zip if [ $? -ne 0 ];then echo -e "[${red}Error${plain}] unzip shadowsocks-master.zip failed! please check unzip command." install_cleanup exit 1 fi cd ${cur_dir}/shadowsocks-master python setup.py install --record /usr/local/shadowsocks_install.log if [ -f /usr/bin/ssserver ] || [ -f /usr/local/bin/ssserver ]; then chmod +x /etc/init.d/shadowsocks if check_sys packageManager yum; then chkconfig --add shadowsocks chkconfig shadowsocks on elif check_sys packageManager apt; then update-rc.d -f shadowsocks defaults fi /etc/init.d/shadowsocks start else echo echo -e "[${red}Error${plain}] Shadowsocks install failed! please visit https://teddysun.com/342.html and contact." install_cleanup exit 1 fi clear echo echo -e "Congratulations, Shadowsocks-python server install completed!" echo -e "Your Server IP : \033[41;37m $(get_ip) \033[0m" echo -e "Your Server Port : \033[41;37m ${shadowsocksport} \033[0m" echo -e "Your Password : \033[41;37m ${shadowsockspwd} \033[0m" echo -e "Your Encryption Method: \033[41;37m ${shadowsockscipher} \033[0m" echo echo "Welcome to visit:https://teddysun.com/342.html" echo "Enjoy it!" echo } # Install cleanup install_cleanup(){ cd ${cur_dir} rm -rf shadowsocks-master.zip shadowsocks-master ${libsodium_file}.tar.gz ${libsodium_file} } # Uninstall Shadowsocks uninstall_shadowsocks(){ printf "Are you sure uninstall Shadowsocks? (y/n) " printf "\n" read -p "(Default: n):" answer [ -z ${answer} ] && answer="n" if [ "${answer}" == "y" ] || [ "${answer}" == "Y" ]; then ps -ef | grep -v grep | grep -i "ssserver" > /dev/null 2>&1 if [ $? -eq 0 ]; then /etc/init.d/shadowsocks stop fi if check_sys packageManager yum; then chkconfig --del shadowsocks elif check_sys packageManager apt; then update-rc.d -f shadowsocks remove fi # delete config file rm -f /etc/shadowsocks.json rm -f /var/run/shadowsocks.pid rm -f /etc/init.d/shadowsocks rm -f /var/log/shadowsocks.log if [ -f /usr/local/shadowsocks_install.log ]; then cat /usr/local/shadowsocks_install.log | xargs rm -rf fi echo "Shadowsocks uninstall success!" else echo echo "uninstall cancelled, nothing to do..." echo fi } # Install Shadowsocks-python install_shadowsocks(){ disable_selinux pre_install download_files config_shadowsocks if check_sys packageManager yum; then firewall_set fi install install_cleanup } # Initialization step action=$1 [ -z $1 ] && action=install case "$action" in install|uninstall) ${action}_shadowsocks ;; *) echo "Arguments error! [${action}]" echo "Usage: `basename $0` [install|uninstall]" ;; esac
rgl / Cur2pngConvert cursor files (.cur) into .png files so we can use them in screenshots or web pages
lettucegoblin / Animated Cursors Forever ExtensionChrome extension that brings animated cursors back to the web! Supports .ani and .cur files.
hoyojo / Shadowsocks#! /bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH #=============================================================================================== # System Required: CentOS6.x (32bit/64bit) # Description: Install Shadowsocks(Python) for CentOS # Author: Teddysun <i@teddysun.com> # Intro: http://teddysun.com/342.html #=============================================================================================== clear echo "#############################################################" echo "# Install Shadowsocks(Python) for CentOS6.x (32bit/64bit)" echo "# Intro: http://teddysun.com/342.html" echo "#" echo "# Author: Teddysun <i@teddysun.com>" echo "#" echo "#############################################################" echo "" # Get IP address IP=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.*' | cut -d: -f2 | awk '{ print $1}' | head -1`; # Install Shadowsocks function install_shadowsocks(){ rootness disable_selinux pre_install download_files config_shadowsocks iptables_set install } # Make sure only root can run our script function rootness(){ if [[ $EUID -ne 0 ]]; then echo "Error:This script must be run as root!" 1>&2 exit 1 fi } # Disable selinux function disable_selinux(){ if [ -s /etc/selinux/config ] && grep 'SELINUX=enforcing' /etc/selinux/config; then sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0 fi } # Pre-installation settings function pre_install(){ #Set shadowsocks config password echo "Please input password for shadowsocks:" read -p "(Default password: teddysun.com):" shadowsockspwd if [ "$shadowsockspwd" = "" ]; then shadowsockspwd="teddysun.com" fi echo "password:$shadowsockspwd" echo "####################################" get_char(){ SAVEDSTTY=`stty -g` stty -echo stty cbreak dd if=/dev/tty bs=1 count=1 2> /dev/null stty -raw stty echo stty $SAVEDSTTY } echo "" echo "Press any key to start...or Press Ctrl+C to cancel" char=`get_char` #Install necessary dependencies yum install -y wget unzip openssl-devel gcc swig python python-devel python-setuptools autoconf libtool libevent yum install -y automake make curl curl-devel zlib-devel openssl-devel perl perl-devel cpio expat-devel gettext-devel #Current folder cur_dir=`pwd` cd $cur_dir } # Download files function download_files(){ if [ -f ez_setup.py ]; then echo "ez_setup.py [found]" else echo "ez_setup.py not found!!!download now......" if ! wget --no-check-certificate https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py; then echo "Failed to download ez_setup.py!" exit 1 fi fi # Download shadowsocks chkconfig file if ! wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks -O /etc/init.d/shadowsocks; then echo "Failed to download shadowsocks chkconfig file!" exit 1 fi } # Config shadowsocks function config_shadowsocks(){ cat > /etc/shadowsocks.json<<-EOF { "server":"${IP}", "server_port":8989, "local_address": "127.0.0.1", "local_port":1080, "password":"${shadowsockspwd}", "timeout":600, "method":"aes-256-cfb", "fast_open":false, "workers":1 } EOF } # iptables set function iptables_set(){ /sbin/service iptables status 1>/dev/null 2>&1 if [ $? -eq 0 ]; then /etc/init.d/iptables status | grep '8989' | grep 'ACCEPT' >/dev/null 2>&1 if [ $? -ne 0 ]; then /sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8989 -j ACCEPT /etc/rc.d/init.d/iptables save /etc/init.d/iptables restart fi fi } # Install function install(){ which pip > /dev/null 2>&1 if [ $? -ne 0 ]; then python ez_setup.py install easy_install pip fi if [ -f /usr/bin/pip ]; then pip install M2Crypto pip install greenlet pip install gevent pip install shadowsocks if [ -f /usr/bin/ssserver ]; then chmod +x /etc/init.d/shadowsocks # Add run on system start up chkconfig --add shadowsocks chkconfig shadowsocks on # Run shadowsocks in the background /etc/init.d/shadowsocks start else echo "" echo "Shadowsocks install failed! Please visit http://teddysun.com/342.html and contact." exit 1 fi clear echo "" echo "Congratulations, shadowsocks install completed!" echo -e "Your Server IP: \033[41;37m ${IP} \033[0m" echo -e "Your Server Port: \033[41;37m 8989 \033[0m" echo -e "Your Password: \033[41;37m ${shadowsockspwd} \033[0m" echo -e "Your Local IP: \033[41;37m 127.0.0.1 \033[0m" echo -e "Your Local Port: \033[41;37m 1080 \033[0m" echo -e "Your Encryption Method: \033[41;37m aes-256-cfb \033[0m" echo "" echo "Welcome to visit:http://teddysun.com/342.html" echo "Enjoy it!" echo "" else echo "" echo "pip install failed! Please visit http://teddysun.com/342.html and contact." exit 1 fi } # Uninstall Shadowsocks function uninstall_shadowsocks(){ printf "Are you sure uninstall Shadowsocks? (y/n) " printf "\n" read -p "(Default: n):" answer if [ -z $answer ]; then answer="n" fi if [ "$answer" = "y" ]; then NODE_PID=`ps -ef | grep -v grep | grep -v ps | grep -i '/usr/bin/python /usr/bin/ssserver' | awk '{print $2}'` if [ ! -z $NODE_PID ]; then for pid in $NODE_PID do kill -9 $pid if [ $? -eq 0 ]; then echo "Shadowsocks process[$pid] has been killed" fi done fi chkconfig --del shadowsocks # delete config file rm -f /etc/shadowsocks.json rm -f /var/run/shadowsocks.pid rm -f /etc/init.d/shadowsocks pip uninstall -y shadowsocks if [ $? -eq 0 ]; then echo "Shadowsocks uninstall success!" else echo "Shadowsocks uninstall failed!" fi else echo "uninstall cancelled, Nothing to do" fi } # Initialization step action=$1 [ -z $1 ] && action=install case "$action" in install) install_shadowsocks ;; uninstall) uninstall_shadowsocks ;; *) echo "Arguments error! [${action} ]" echo "Usage: `basename $0` {install|uninstall}" ;; esac
Fariz21 / Freedom<font size="5"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Hacked By Freedom21</title> <link rel="SHORTCUT ICON" href="http://dotcomcell.com/kumpulan-artikel/wp- content/uploads/2011/08/gambar-animasi-bendera-merah-putih-berkibar1.gif" href="http://2.bp.blogspot.com/_OoNYJfsEuXI/TLGUge5UFdI/AAAAAAAAAY0/fCmNi6fnkp4/s400/ indonesia.gif"> <style type="text/css">body, a, a:hover {cursor: url(http://hellox.persiangig.com/DefacePage/negro.cur), progress;} </style> <!-- CSS --> <link rel="stylesheet" type="text/css" href="http://hellox.persiangig.com/DefacePage/jquery00.css" media="all"> <link rel="stylesheet" type="text/css" href="http://hellox.persiangig.com/DefacePage/prettyPh.css" media="all"> <link rel="stylesheet" type="text/css" href="http://hellox.persiangig.com/DefacePage/style000.css" media="all"> <script type="text/javascript" src="http://hellox.persiangig.com/DefacePage/jquery- 1.js"></script> <script type="text/javascript" src="http://hellox.persiangig.com/DefacePage/cufon- yu.js"></script> <script type="text/javascript" src="http://hellox.persiangig.com/DefacePage/Yanone_K.js"></script> <script type="text/javascript" src="http://hellox.persiangig.com/DefacePage/jquery00.js"></script> <script type="text/javascript" src="http://hellox.persiangig.com/DefacePage/jquery01.js"></script> <script type="text/javascript" src="http://hellox.persiangig.com/DefacePage/jquery02.js"></script> <script type="text/javascript" src="http://hellox.persiangig.com/DefacePage/jquery03.js"></script> <script type="text/javascript" src="http://hellox.persiangig.com/DefacePage/jquery04.js"></script> <script type="text/javascript" src="http://hellox.persiangig.com/DefacePage/jquery05.js"></script> <script type="text/javascript" src="http://hellox.persiangig.com/DefacePage/jquery06.js"></script> <script type="text/javascript" src="http://hellox.persiangig.com/DefacePage/jquery07.js"></script> <script type="text/javascript" src="http://hellox.persiangig.com/DefacePage/custom00.js"></script> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-20402842-6']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src ='http://hellox.persiangig.com/DefacePage/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script><script language="JavaScript" type="text/javascript"> mensaje = '*<--Blackshadow-->*';font = 'OCR A Extended';size = 2.5;color = '#00FF00';velocidad = 0.6; n4 = (document.layers);ie = (document.all);n6 = (document.getElementById); mensaje = mensaje.split('');n = mensaje.length; a = size*10;ymouse = 0;xmouse = 0;props = "<font face="+font+" color="+color+" size="+size+">"; if (n4){for ( i = 0; i < n; i++)document.write('<layer left="0" top="0" width="+a+" name="n4mensaje'+i+'" height="+a +"><center> '+props+mensaje[i]+'</font></center> </layer>');}else if (ie){document.write('<div id="padre" style="position:absolute;top:0px;left:0px"> <div style="position:relative"> ');for (i=0; i < n; i++)document.write('<div id="iemensaje" style="position:absolute;top:0px;left:0;height:'+a+';width:'+a +';text-align:center">'+props+mensaje[i]+'</font></div> ');document.write('</div> </div> ');}else if (n6){document.write('<div id="padre" style="position:absolute;top:0px;left:0px"> <div style="position:relative"> ');for (i = 0; i < n; i++)document.write('<div id="iemensaje'+i+'" style="position:absolute;top:0px;left:0;height:'+a +';width:'+a+';text-align:center">'+props+mensaje[i]+'</font></div> ');document.write('</div> </div> ');} if(n4)window.captureEvents(Event.MOUSEMOVE); function Mouse(evento){ if(ie){xmouse = event.x+20;ymouse = event.y+20;}else if(n4 || n6){xmouse = evento.pageX +20;ymouse = evento.pageY+20;}} if(n4)window.onMouseMove = Mouseelse if(ie || n6)document.onmousemove = Mouse; y = new Array();x = new Array();Y = new Array();X = new Array();Yaux = new Array();Xaux = new Array(); for (i=0; i < n; i++){y[i] = 0;x[i] = 0;Y[i] = 0;X[i] = 0;Yaux[i] = 0;Xaux[i] = 0;} function asigna(){if (ie)padre.style.top = document.body.scrollTop; for (i = 0; i < n; i++){if(n4){document.layers['n4mensaje'+i].top = y[i];document.layers['n4mensaje'+i].left = x[i]+(i* (a/2));}else if(ie){iemensaje[i].style.top = y[i];iemensaje[i].style.left = x[i]+(i* (a/2));}else if(n6){eval ("document.getElementById('iemensaje"+i+"').style.top = '"+y[i]+"px'");eval("document.getElementById('iemensaje"+i +"').style.left = '"+(x[i]+(i*(a/2)))+"px'");} }} function ondula(){y[0]=Math.round(Y[0] +=((ymouse)- Y[0])*velocidad);x[0]=Math.round(X[0] +=((xmouse)-X[0]) *velocidad); for (var i = 1; i < n; i++){Yaux[i] = Math.round(Y[i]);Xaux[i ]= Math.round(X[i]);y[i] = Math.round(Y[i]=Yaux[i]+(y[i-1]-Y [i])*velocidad);x[i] = Math.round(X[i]=Xaux[i]+(x[i-1]- X[i])*velocidad);}asigna();setTimeout('ondula()',50);} window.onload = ondula; </script> <link rel="openid.server" href="http://www.blogger.com/openid-server.g" /> </head> <body oncontextmenu='return false;' onkeydown='return false;' onmousedown='return false;'> <embed src="http://error-404.do.am/file/Welcome.swf" width="0" height="0" allowfullscreen="true" allowscriptaccess="always"></embed> <!-- wrappage begin here --> <div id="wrappage"> <!-- container begin here --> <div class="container"> <!-- top block begin here --> <div class="top"> <div class="energy"> </div> <div class="top-block"> <a class="logo">This Site Has Been Hacked</a> <div class="bg-e-button"> </div> <a href class="open"><img src="http://hellox.persiangig.com/DefacePage/flash000.png" alt=""></a> </div> </div> <!-- top block end here --> <!-- center block begin here --> <div class="center-block"> <!-- ???? --> <div class="scanner clearfix"> <div class="scanner-block"> <div class="scanner-box left"> <div class="scanner-line"> </div> </div> <ul class="data left"> <li class="search">Waiting. . . . .</li> <li class="search-d"># / > Logged In..</li> <li class="search-d"># / > Identify Unknown..</li> <li class="search-d"># / > Access Granted..</li> <li class="search-d"># / > Welcome admin..</li> </ul> </div> </div> <!-- ??? ???? --> <div class="main"> <div class="load"> </div> <div class="shut-left"> </div> <div class="shut-right"> </div> <div class="page"> <div class="box-left left"> <div class="info"> <ul class="socicon left"> <img src="http://s21.postimg.org/d7irajxbr/dddddfffffffffffffff.jpg" width="190" height="160" alt="My Mom" class="right"></br></br> </a></li> </ul> <ul class="left who"> <li><center> <font color="gold"><br /></font></center> </li> </ul> <P ALIGN=center><object data='http://flash-mp3-player.net/medias/player_mp3.swf' height='0' type='application/x-shockwave-flash' width='0'> <param name=' value='#'/><br/><param name='FlashVars' value='mp3=https://xover2-jkt- 3d-x.indowebster.com/download- vip/8/f3f2efb64a5c279db67fead286dc23dd.mp3/[files.indowebster.com]-Mcr_-_Welcome_To_The_Black_Parade.mp3&loop=1&autoplay=1&volume=150'/></object></p></embed></CENTER> </div> <ul id="menu" class="right"> <li> <a href="#msg" class="selected">Message</a> <a href="#sysinfo" class="selected">About Me</a> <a href="#Thanks" class="selected">Thanks To</a> </li> </ul> </div> <div class="cont left"> <!-- ????? --> <div id="msg" class="box left"> <div class="box-content"> <h3> <font color="red">Welcome <font color="red"> To This Site</font></h3> <h3> <font color="lime"></font></h3> <p class="sub"> <font color="lime"></font></p> <strong><center> <font color="lime"></font></center> </strong> <p> <font face="Rockwell" color="red">This Site Has Been Hacked By<font face="Rockwell" color="lime"> Freedom21 <p> <font face="Rockwell" color="green"> We Not Hack To Learn But We Learn To Hack ! <p> <font face="Rockwell" color="Green"> Fuck You Admin ! This Site Is Vulnerability Please Patch Your System ! Or We Back ! <p> <font face="Rockwell" color="Green"><font face="Rockwell" color="red"><br><font face="Rockwell" color="red">Some Member Of Java Cyber Army <center> </div> </div> <h3> <font color="lime"></font></h3> <p class="sub"> <font color="lime"></font></p> <strong><center> <font color="lime"></font></center> </strong> <p> <font face="Rockwell" color="lime"><div id="sysinfo" class="box left"> <div class="box-content"> <h3> Freedom21 </h3> <p class="sub"> Member Of JKT48 Cyber Team </p> <p> <font face="rockwell" font color="lime"> I am Not A Hacker .. But I am Just Security Tester , I am Just Tested Your Security<br> </div> </div> <h3> <font color="lime"></font></h3> <p class="sub"> <font color="lime"></font></p> <strong><center> <font color="lime"></font></center> </strong> <p> <font face="Rockwell" color="lime"><div id="Thanks" class="box left"> <div class="box-content"> <h3> Thanks To: </h3> </p> <p> <font face="rockwell" font color="lime"> | Allah SWT | Cindy JKT48 | Melody JKT48 | Hmei7 | Freedom21 | Newbie Cyber Team | Indonesian Fighter Cyber | Indonesian Cyber Army | Java Cyber Army | JKT48 CYBER TEAM | VVota404 | Harugon48 | All Member JKT48 | Udin404 | <br/> </p> </p> </div> </div> <div id="irc" class="box left"> <div class="box-content"> </div> </div> </div> </div> </div> </div> <div class="bottom"> <div class="bottom-block"> <h1 class="left">Hacked By Freedom21</h1> <h5 class="right">Copyright 2013 By ./Harugon48 All Rights Reserved<br> <EMBED SRC="http://error-404.do.am/50256-h4ck3d.swf" AUTOSTART="TRUE" LOOP="TRUE" WIDTH="1" HEIGHT="1" ALIGN="CENTER" width="0" height="0"></EMBED> <p align="center"> </div> </div> </div> </div> </body> </html>